c-decl.c (grokdeclarator): In C99 mode...
authorJoseph Myers <jsm28@cam.ac.uk>
Mon, 12 Feb 2001 17:31:42 +0000 (17:31 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 12 Feb 2001 17:31:42 +0000 (17:31 +0000)
* c-decl.c (grokdeclarator): In C99 mode, give the more specific
"return type defaults" warning for functions with return type
defaulting to int.
* c-lang.c (c_init): In C99 mode, enable warnings for implicit
function declarations by default rather than only when pedantic.

testsuite:
* gcc.dg/c99-impl-int-1.c: Use stricter error string for implicit
return type.
* gcc.dg/cpp/digraphs.c: Declare puts.

From-SVN: r39608

gcc/ChangeLog
gcc/c-decl.c
gcc/c-lang.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/c99-impl-int-1.c
gcc/testsuite/gcc.dg/cpp/digraphs.c

index c36eaf943d0dc8f96da2816886393461b4b8f8c3..f72e73d7ef042c54c693e52cbd639b97091d92ee 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-12  Joseph S. Myers  <jsm28@cam.ac.uk>
+
+       * c-decl.c (grokdeclarator): In C99 mode, give the more specific
+       "return type defaults" warning for functions with return type
+       defaulting to int.
+       * c-lang.c (c_init): In C99 mode, enable warnings for implicit
+       function declarations by default rather than only when pedantic.
+
 Mon Feb 12 17:28:48 CET 2001  Jan Hubicka  <jh@suse.cz>
 
        * regclass.c (init_reg_sets_1): Optimize calculation of move_cost
index ef5bb38f1915c62fd579de06603aeaf6362f33c4..f0d229db69dca944fbf874be14bfeea826c100b9 100644 (file)
@@ -3973,7 +3973,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
          /* Issue a warning if this is an ISO C 99 program or if -Wreturn-type
             and this is a function, or if -Wimplicit; prefer the former
             warning since it is more explicit.  */
-         if ((warn_implicit_int || warn_return_type) && funcdef_flag)
+         if ((warn_implicit_int || warn_return_type || flag_isoc99)
+             && funcdef_flag)
            warn_about_return_type = 1;
          else if (warn_implicit_int || flag_isoc99)
            pedwarn_c99 ("type defaults to `int' in declaration of `%s'",
index 87c65fbacaee566bca9fd8eb02a59c87df76f522..53ebdabb546d2147812057b720d20735d99ed2dd 100644 (file)
@@ -70,10 +70,11 @@ c_init ()
 {
   c_common_lang_init ();
 
-  /* If still unspecified, make it match pedantic && -std=c99.  */
+  /* If still unspecified, make it match -std=c99
+     (allowing for -pedantic-errors).  */
   if (mesg_implicit_function_declaration < 0)
     {
-      if (pedantic && flag_isoc99)
+      if (flag_isoc99)
        mesg_implicit_function_declaration = flag_pedantic_errors ? 2 : 1;
       else
        mesg_implicit_function_declaration = 0;
index 739250652acdfd2fb59ed36df22da51b541a0437..fc6c21921e62a24f9280e07aad5f6be546fb54ba 100644 (file)
@@ -1,3 +1,9 @@
+2001-02-12  Joseph S. Myers  <jsm28@cam.ac.uk>
+
+       * gcc.dg/c99-impl-int-1.c: Use stricter error string for implicit
+       return type.
+       * gcc.dg/cpp/digraphs.c: Declare puts.
+
 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
 
        * g++.old-deja/g++.other/warn5.C: New test.
index 2e5cad56d9e9929e707f459f9b0fcb01095be504..dcc25203ae8b0ccb5fbbbcd008d964ffb2d24b1a 100644 (file)
@@ -6,4 +6,4 @@
 extern foo; /* { dg-bogus "warning" "warning in place of error" } */
 /* { dg-error "type defaults" "C99 implicit int error" { target *-*-* } 6 } */
 bar (void) { } /* { dg-bogus "warning" "warning in place of error" } */
-/* { dg-error "type defaults" "C99 implicit int error" { target *-*-* } 8 } */
+/* { dg-error "return type defaults" "C99 implicit int error" { target *-*-* } 8 } */
index e4ae0e0346087b29bdb3d4cb25098ee7b8d60fb4..49a1bcd860492b868e18fbb3f95cb9a3a847c00a 100644 (file)
@@ -8,6 +8,7 @@
 
 extern int strcmp (const char *, const char *);
 extern void abort (void);
+extern int puts (const char *);
 #define err(str) do { puts(str); abort(); } while (0)
 
 %:define glue(x, y) x %:%: y   /* #define glue(x, y) x ## y. */