Commit 417d348c by Jim Wilson Committed by Jim Wilson

Fix numerous -O3 -g testsuite failures for DWARF2 targets.

	* integrate.c (integrate_decl_tree): Set DECL_CONTEXT to 0 if this is
	a local extern function declaration.

From-SVN: r30107
parent 276ab4a4
Wed Oct 20 15:18:42 1999 Jim Wilson <wilson@cygnus.com>
* integrate.c (integrate_decl_tree): Set DECL_CONTEXT to 0 if this is
a local extern function declaration.
Wed Oct 20 13:56:01 1999 Richard Henderson <rth@cygnus.com> Wed Oct 20 13:56:01 1999 Richard Henderson <rth@cygnus.com>
* i386.c (ix86_expand_prologue): Properly wrap USE around * i386.c (ix86_expand_prologue): Properly wrap USE around
......
...@@ -1419,10 +1419,23 @@ integrate_decl_tree (let, map) ...@@ -1419,10 +1419,23 @@ integrate_decl_tree (let, map)
if (DECL_LANG_SPECIFIC (d)) if (DECL_LANG_SPECIFIC (d))
copy_lang_decl (d); copy_lang_decl (d);
/* ??? We used to call pushdecl here, but that does not work now that
we generate entire functions as trees. We only want the pushdecl
code that sets DECL_CONTEXT. Each front end sets DECL_CONTEXT
slightly differently though, so we may need new callbacks to the
front-ends to do this right. For now, we just use the code from the
C front end and hope that is sufficient. Alternatively, we could
set DECL_CONTEXT (d) here only if DECL_CONTEXT (t) is non-null. */
/* This new declaration is now in the scope of the function into /* This new declaration is now in the scope of the function into
which we are inlining the function, not the function being which we are inlining the function, not the function being
inlined. */ inlined. */
DECL_CONTEXT (d) = current_function_decl; DECL_CONTEXT (d) = current_function_decl;
/* A local extern declaration for a function doesn't constitute nesting.
A local auto declaration does, since it's a forward decl
for a nested function coming later. */
if (TREE_CODE (d) == FUNCTION_DECL && DECL_INITIAL (d) == 0
&& DECL_EXTERNAL (d))
DECL_CONTEXT (d) = 0;
/* Add this declaration to the list of variables in the new /* Add this declaration to the list of variables in the new
block. */ block. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment