2018-04-09 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / qual-return-5.c
blob32a08f217d06007cb93df87c675ebf52f884fcd2
1 /* Test qualifiers on function return types after DR#423: those
2 qualifiers are now ignored for all purposes (but _Atomic is not,
3 for this purpose, a qualifier). */
4 /* { dg-do compile } */
5 /* { dg-options "-std=c11 -pedantic-errors" } */
7 int f1 (void);
8 const int f1 (void);
9 volatile int f1 (void) { return 0; }
11 int *restrict f2 (void) { return 0; }
12 int *f2 (void);
14 const volatile long f3 (void);
15 long f3 (void);
17 const volatile void f4 (void) { }
18 void f4 (void);
20 _Atomic int f5 (void); /* { dg-message "previous declaration" } */
21 int f5 (void); /* { dg-error "conflicting" } */
23 int f6 (void); /* { dg-message "previous declaration" } */
24 _Atomic int f6 (void) { return 0; } /* { dg-error "conflicting" } */
26 /* The standard seems unclear regarding the case where restrict is
27 applied to a function return type that may not be
28 restrict-qualified; assume here that it is disallowed. */
29 restrict int f7 (void); /* { dg-error "restrict" } */
31 typedef void FT (void);
32 FT *restrict f8 (void); /* { dg-error "restrict" } */