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
This commit is contained in:
Jim Wilson 1999-10-20 22:19:06 +00:00 committed by Jim Wilson
parent 276ab4a49c
commit 417d348c5a
2 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,8 @@
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>
* i386.c (ix86_expand_prologue): Properly wrap USE around

View File

@ -1419,10 +1419,23 @@ integrate_decl_tree (let, map)
if (DECL_LANG_SPECIFIC (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
which we are inlining the function, not the function being
inlined. */
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
block. */