File: Wmissing-attributes.c

package info (click to toggle)
gcc-arm-none-eabi 15%3A14.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,099,328 kB
  • sloc: cpp: 3,627,108; ansic: 2,571,498; ada: 834,230; f90: 235,082; makefile: 79,231; asm: 74,984; xml: 51,692; exp: 39,736; sh: 33,298; objc: 15,629; python: 15,069; fortran: 14,429; pascal: 7,003; awk: 5,070; perl: 3,106; ml: 285; lisp: 253; lex: 204; haskell: 135
file content (96 lines) | stat: -rw-r--r-- 2,956 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/* PR middle-end/81824 - Warn for missing attributes with function aliases
   { dg-do compile }
   { dg-require-alias "" }
   { dg-options "-Wall" } */

#define ATTR(list)   __attribute__ (list)


int alias_no_const (void);

ATTR ((const)) int
target_const (void)             /* { dg-message ".alias_no_const. target declared here" } */
{ return 0; }

ATTR ((alias ("target_const"))) int
alias_no_const (void);          /* { dg-warning ".alias_no_const. specifies less restrictive attribute than its target .target_const.: .const." } */


ATTR ((alloc_size (1), malloc)) void*
target_malloc (int n)           /* { dg-message ".alias_no_malloc. target declared here" } */
{ return __builtin_malloc (n); }

ATTR ((alias ("target_malloc"))) void*
alias_no_malloc (int);          /* { dg-warning ".alias_no_malloc. specifies less restrictive attributes than its target .target_malloc.: .alloc_size., .malloc." } */


ATTR ((leaf)) int
target_leaf (void)              /* { dg-message ".alias_no_leaf. target declared here" } */
{ return 0; }

ATTR ((alias ("target_leaf"))) int
alias_no_leaf (void);           /* { dg-warning ".alias_no_leaf. specifies less restrictive attribute than its target .target_leaf.: .leaf." } */


/* Verify that attributes noclone, noinline, and noipa on the target
   don't cause a warning for aliases without the attribute.  */

ATTR ((noclone)) int
target_noclone (void)
{ return 0; }

ATTR ((alias ("target_noclone"))) int
alias_no_noclone (void);


ATTR ((noipa)) int
target_noipa (void)
{ return 0; }

ATTR ((alias ("target_noipa"))) int
alias_no_noipa (void);


ATTR ((noinline)) int
target_noinline (void)
{ return 0; }

ATTR ((alias ("target_noinline"))) int
alias_no_noinline (void);


ATTR ((nothrow)) int
target_nothrow (void)           /* { dg-message ".alias_no_nothrow. target declared here" } */
{ return 0; }

ATTR ((alias ("target_nothrow"))) int
alias_no_nothrow (void);        /* { dg-warning ".alias_no_nothrow. specifies less restrictive attribute than its target .target_nothrow.: .nothrow." } */


/* Verify that attribute weak on the target doesn't cause and isn't
   mentioned in a warning for aliases without the attribute.  */

ATTR ((weak)) int
target_weak (void)
{ return 0; }

ATTR ((alias ("target_weak"))) int
alias_no_weak (void);


ATTR ((nothrow, weak)) int
target_nothrow_weak (void)      /* { dg-message ".alias_nothrow_no_weak. target declared here" } */
{ return 0; }

ATTR ((alias ("target_nothrow_weak"))) int
alias_nothrow_no_weak (void);        /* { dg-warning ".alias_nothrow_no_weak. specifies less restrictive attribute than its target .target_nothrow_weak.: .nothrow." } */


/* Verify that __typeof__ doesn't include attributes.  */

ATTR ((cold)) int
target_cold (void)
{ return 0; }

__typeof__ (target_cold) ATTR ((alias ("target_cold")))
alias_cold;                   /* { dg-warning ".alias_cold. specifies less restrictive attribute than its target .target_cold.: .cold." } */