+2004-11-04 Joseph S. Myers <joseph@codesourcery.com>
+
+ * gcc.dg/asm-qual-1.c, gcc.dg/declspec-15.c, gcc.dg/declspec-16.c,
+ gcc.dg/declspec-17.c, gcc.dg/empty-source-1.c,
+ gcc.dg/empty-source-2.c, gcc.dg/empty-source-3.c,
+ gcc.dg/extra-semi-1.c, gcc.dg/extra-semi-2.c,
+ gcc.dg/extra-semi-3.c, gcc.dg/gnu-cond-expr-1.c,
+ gcc.dg/gnu-cond-expr-2.c, gcc.dg/gnu-cond-expr-3.c,
+ gcc.dg/init-empty-1.c, gcc.dg/init-empty-2.c,
+ gcc.dg/init-empty-3.c, gcc.dg/noncompile/old-style-parm-1.c,
+ gcc.dg/noncompile/old-style-parm-2.c, gcc.dg/stmt-expr-1.c,
+ gcc.dg/stmt-expr-2.c, gcc.dg/stmt-expr-3.c: New tests.
+
2004-11-04 Joseph S. Myers <joseph@codesourcery.com>
* gcc.dg/c90-restrict-1.c, gcc.dg/c99-arraydecl-2.c,
--- /dev/null
+/* Test that qualifiers other than volatile are ignored on asm. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+void
+f (void)
+{
+ asm volatile ("");
+ asm const (""); /* { dg-warning "warning: const qualifier ignored on asm" } */
+ asm restrict (""); /* { dg-warning "warning: restrict qualifier ignored on asm" } */
+}
--- /dev/null
+/* Test diagnostic for empty declarations in old-style parameter
+ declarations. Test with no special options. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu89" } */
+
+void
+f (a, b)
+ int; /* { dg-warning "warning: empty declaration" } */
+ register; /* { dg-warning "warning: empty declaration" } */
+{
+}
--- /dev/null
+/* Test diagnostic for empty declarations in old-style parameter
+ declarations. Test with -pedantic. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu89 -pedantic" } */
+
+void
+f (a, b)
+ int; /* { dg-warning "warning: empty declaration" } */
+ register; /* { dg-warning "warning: empty declaration" } */
+{
+}
--- /dev/null
+/* Test diagnostic for empty declarations in old-style parameter
+ declarations. Test with -pedantic-errors. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu89 -pedantic-errors" } */
+
+void
+f (a, b)
+ int; /* { dg-error "error: empty declaration" } */
+ register; /* { dg-error "error: empty declaration" } */
+{
+}
--- /dev/null
+/* Test diagnostic for an empty source file. Test with no special
+ options. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "" } */
--- /dev/null
+/* Test diagnostic for an empty source file. Test with -pedantic. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-pedantic" } */
+
+/* { dg-warning "warning: ISO C forbids an empty source file" "empty" { target *-*-* } 1 } */
--- /dev/null
+/* Test diagnostic for an empty source file. Test with
+ -pedantic-errors. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors" } */
+
+/* { dg-error "error: ISO C forbids an empty source file" "empty" { target *-*-* } 1 } */
--- /dev/null
+/* Test diagnostic for extra semicolon outside a function. Test with
+ no special options. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+;
--- /dev/null
+/* Test diagnostic for extra semicolon outside a function. Test with
+ -pedantic. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-pedantic" } */
+
+; /* { dg-warning "warning: ISO C does not allow extra ';' outside of a function" } */
--- /dev/null
+/* Test diagnostic for extra semicolon outside a function. Test with
+ -pedantic-errors. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors" } */
+
+; /* { dg-error "error: ISO C does not allow extra ';' outside of a function" } */
--- /dev/null
+/* Test diagnostic for GNU extension: omitting middle term of
+ conditional expression. Test with no special options. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+int a, b, c;
+
+void
+f (void)
+{
+ c = (++a ? : b);
+}
--- /dev/null
+/* Test diagnostic for GNU extension: omitting middle term of
+ conditional expression. Test with -pedantic. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic" } */
+
+int a, b, c;
+
+void
+f (void)
+{
+ c = (++a ? : b); /* { dg-warning "warning: ISO C forbids omitting the middle term of a \\?: expression" } */
+}
--- /dev/null
+/* Test diagnostic for GNU extension: omitting middle term of
+ conditional expression. Test with -pedantic-errors. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic-errors" } */
+
+int a, b, c;
+
+void
+f (void)
+{
+ c = (++a ? : b); /* { dg-error "error: ISO C forbids omitting the middle term of a \\?: expression" } */
+}
--- /dev/null
+/* Test diagnostic for empty initializer braces. Test with no special
+ options. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+struct s { int a; } x = { };
+
+struct s *p = &(struct s){ };
--- /dev/null
+/* Test diagnostic for empty initializer braces. Test with
+ -pedantic. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic" } */
+
+struct s { int a; } x = { }; /* { dg-warning "warning: ISO C forbids empty initializer braces" } */
+
+struct s *p = &(struct s){ }; /* { dg-warning "warning: ISO C forbids empty initializer braces" } */
--- /dev/null
+/* Test diagnostic for empty initializer braces. Test with
+ -pedantic-errors. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic-errors" } */
+
+struct s { int a; } x = { }; /* { dg-error "error: ISO C forbids empty initializer braces" } */
+
+struct s *p = &(struct s){ }; /* { dg-error "error: ISO C forbids empty initializer braces" } */
--- /dev/null
+/* Test that stray semicolon in old-style parameters is not
+ accepted. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void
+f(a)
+ int a;; /* { dg-error "parse error|syntax error|expected declaration specifiers" } */
+{
+}
--- /dev/null
+/* Test that parameter without declaration specifiers in old-style
+ parameters is not accepted. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void
+f(a)
+ a; /* { dg-error "parse error|syntax error|no type or storage class|expected declaration specifiers" } */
+{
+}
--- /dev/null
+/* Test diagnostic for GNU extension: statement expressions. Test
+ with no special options. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+int
+f (void)
+{
+ return ({ 1; });
+}
--- /dev/null
+/* Test diagnostic for GNU extension: statement expressions. Test
+ with -pedantic. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic" } */
+
+int
+f (void)
+{
+ return ({ 1; }); /* { dg-warning "warning: ISO C forbids braced-groups within expressions" } */
+}
--- /dev/null
+/* Test diagnostic for GNU extension: statement expressions. Test
+ with -pedantic-errors. */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -pedantic-errors" } */
+
+int
+f (void)
+{
+ return ({ 1; }); /* { dg-error "error: ISO C forbids braced-groups within expressions" } */
+}