(duplicate_decls): Don't warn about disagreement in `inline' except when...
authorRichard Stallman <rms@gnu.org>
Sun, 5 Jul 1992 21:12:43 +0000 (21:12 +0000)
committerRichard Stallman <rms@gnu.org>
Sun, 5 Jul 1992 21:12:43 +0000 (21:12 +0000)
(duplicate_decls): Don't warn about disagreement in `inline'
except when non-inline fn is made inline after a call or definition.
(finish_function): Set BLOCK_SUPERCONTEXT of outer block.

From-SVN: r1449

gcc/c-decl.c

index 57b3c1a3852d6d06ba1f70a974895d95e586f22d..f5a996a3918a25de89e86c3563bd2d6a79c16823 100644 (file)
@@ -1391,10 +1391,10 @@ duplicate_decls (newdecl, olddecl)
            warning_with_decl (newdecl,
                               "`%s' declared inline after being called");
          if (TREE_CODE (olddecl) == FUNCTION_DECL
-             && TREE_INLINE (olddecl) != TREE_INLINE (newdecl)
-             && ! (TREE_EXTERNAL (olddecl) && TREE_EXTERNAL (newdecl)))
+             && ! TREE_INLINE (olddecl) && TREE_INLINE (newdecl)
+             && DECL_INITIAL (olddecl) != 0)
            warning_with_decl (newdecl,
-                              "`%s' declarations disagree about `inline'");
+                              "`%s' declared inline after its definition");
          /* It is nice to warn when a function is declared
             global first and then static.  */
          if (TREE_CODE (olddecl) == FUNCTION_DECL
@@ -5754,6 +5754,7 @@ finish_function (nested)
     which then got a warning when stored in a ptr-to-function variable.  */
 
   poplevel (1, 0, 1);
+  BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
 
   /* Must mark the RESULT_DECL as being in this function.  */