tree.c (get_callee_fndecl): Move DECL_ABSTRACT_ORIGIN-following...

* tree.c (get_callee_fndecl): Move DECL_ABSTRACT_ORIGIN-following...
* tree-inline.c (expand_call_inline): ... here.

From-SVN: r47725
This commit is contained in:
Alexandre Oliva 2001-12-06 17:58:23 +00:00 committed by Alexandre Oliva
parent 441f30d998
commit a1a0fd4e18
3 changed files with 18 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2001-12-06 Alexandre Oliva <aoliva@redhat.com>
* tree.c (get_callee_fndecl): Move DECL_ABSTRACT_ORIGIN-following...
* tree-inline.c (expand_call_inline): ... here.
2001-12-06 H.J. Lu <hjl@gnu.org>
* Makefile.in (.po.gmo): Use "-mkdir po" for parallel build.

View File

@ -807,6 +807,18 @@ expand_call_inline (tp, walk_subtrees, data)
if (!fn)
return NULL_TREE;
/* If fn is a declaration of a function in a nested scope that was
globally declared inline, we don't set its DECL_INITIAL.
However, we can't blindly follow DECL_ABSTRACT_ORIGIN because the
C++ front-end uses it for cdtors to refer to their internal
declarations, that are not real functions. Fortunately those
don't have trees to be saved, so we can tell by checking their
DECL_SAVED_TREE. */
if (! DECL_INITIAL (fn)
&& DECL_ABSTRACT_ORIGIN (fn)
&& DECL_SAVED_TREE (DECL_ABSTRACT_ORIGIN (fn)))
fn = DECL_ABSTRACT_ORIGIN (fn);
/* Don't try to inline functions that are not well-suited to
inlining. */
if (!inlinable_function_p (fn, id))

View File

@ -4382,23 +4382,7 @@ get_callee_fndecl (call)
that `f' is being called. */
if (TREE_CODE (addr) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (addr, 0)) == FUNCTION_DECL)
{
tree fn = TREE_OPERAND (addr, 0);
/* If fn is a declaration of a function in a nested scope that
was globally declared inline, we don't set its DECL_INITIAL.
However, we can't blindly follow DECL_ABSTRACT_ORIGIN because
the C++ front-end uses it for cdtors to refer to their
internal declarations, that are not real functions.
Fortunately those don't have trees to be saved, so we can tell by
checking their DECL_SAVED_TREE. */
if (! DECL_INITIAL (fn)
&& DECL_ABSTRACT_ORIGIN (fn)
&& DECL_SAVED_TREE (DECL_ABSTRACT_ORIGIN (fn)))
fn = DECL_ABSTRACT_ORIGIN (fn);
return fn;
}
return TREE_OPERAND (addr, 0);
/* We couldn't figure out what was being called. */
return NULL_TREE;