aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/inline-12.c
diff options
context:
space:
mode:
authorJoseph Myers <jsm@polyomino.org.uk>2004-09-13 22:00:33 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2004-09-13 22:00:33 +0100
commit61f4f1cc3d363590bec97bc8fb035064d617bd73 (patch)
treeba99baf31dd5640c618debd8f6de5121f2512a34 /gcc/testsuite/gcc.dg/inline-12.c
parentb4cb0e432b123b1e152e9d35c0675495bde8fe72 (diff)
downloadgcc-61f4f1cc3d363590bec97bc8fb035064d617bd73.zip
gcc-61f4f1cc3d363590bec97bc8fb035064d617bd73.tar.gz
gcc-61f4f1cc3d363590bec97bc8fb035064d617bd73.tar.bz2
c-decl.c (grokdeclarator): Correct comments about where storage class specifiers are rejected by grammar...
* c-decl.c (grokdeclarator): Correct comments about where storage class specifiers are rejected by grammar and add corresponding asserts. Diagnose typedefs and parameters declared inline. Change warning for inline main to a pedwarn. Only diagnose inline main if hosted. (declspecs_add_scspec): Allow duplicate "inline". testsuite: * gcc.dg/declspec-7.c: Don't expect diagnostic for duplicate "inline". * gcc.dg/declspec-11.c: Update expected messages. * gcc.dg/inline-6.c, gcc.dg/inline-7.c, gcc.dg/inline-8.c, gcc.dg/inline-9.c, gcc.dg/inline-10.c, gcc.dg/inline-11.c, gcc.dg/inline-12.c: New tests. From-SVN: r87450
Diffstat (limited to 'gcc/testsuite/gcc.dg/inline-12.c')
-rw-r--r--gcc/testsuite/gcc.dg/inline-12.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/inline-12.c b/gcc/testsuite/gcc.dg/inline-12.c
new file mode 100644
index 0000000..c793196
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/inline-12.c
@@ -0,0 +1,14 @@
+/* Test misuses of inline. -pedantic-errors test. */
+/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic-errors" } */
+
+/* These should perhaps be hard errors, but are pedwarns at
+ present. */
+
+inline int a; /* { dg-error "error: variable 'a' declared 'inline'" } */
+inline int (*b)(void); /* { dg-error "error: variable 'b' declared 'inline'" } */
+typedef inline void c(void); /* { dg-error "error: typedef 'c' declared 'inline'" } */
+typedef inline int d; /* { dg-error "error: typedef 'd' declared 'inline'" } */
+void e(inline int f(void)); /* { dg-error "error: parameter 'f' declared 'inline'" } */
+void g(inline int(void)); /* { dg-error "error: parameter '\\({anonymous}\\)' declared 'inline'" } */