Don't error out when an existing typedef is redefined with the same definition;
authormiod <miod@openbsd.org>
Mon, 15 Jun 2015 17:01:04 +0000 (17:01 +0000)
committermiod <miod@openbsd.org>
Mon, 15 Jun 2015 17:01:04 +0000 (17:01 +0000)
this is allowed in C11 and 3rd-party software is relying upon this to be
accepted by the compiler.
Nevertheless warn about this if -pedantic.
ok ajacoutot@ deraadt@ millert@

gnu/gcc/gcc/c-decl.c

index 9762d18..042a2e1 100644 (file)
@@ -1285,9 +1285,17 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
       if (DECL_IN_SYSTEM_HEADER (newdecl) || DECL_IN_SYSTEM_HEADER (olddecl))
        return true;  /* Allow OLDDECL to continue in use.  */
 
-      error ("redefinition of typedef %q+D", newdecl);
-      locate_old_decl (olddecl, error);
-      return false;
+      if (pedantic)
+       {
+         pedwarn ("redefinition of typedef %q+D", newdecl);
+         if (flag_pedantic_errors)
+           {
+             locate_old_decl (olddecl, error);
+             return false;
+           }
+       }
+
+      return true;
     }
 
   /* Function declarations can either be 'static' or 'extern' (no