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:
parent
441f30d998
commit
a1a0fd4e18
|
@ -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>
|
2001-12-06 H.J. Lu <hjl@gnu.org>
|
||||||
|
|
||||||
* Makefile.in (.po.gmo): Use "-mkdir po" for parallel build.
|
* Makefile.in (.po.gmo): Use "-mkdir po" for parallel build.
|
||||||
|
|
|
@ -807,6 +807,18 @@ expand_call_inline (tp, walk_subtrees, data)
|
||||||
if (!fn)
|
if (!fn)
|
||||||
return NULL_TREE;
|
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
|
/* Don't try to inline functions that are not well-suited to
|
||||||
inlining. */
|
inlining. */
|
||||||
if (!inlinable_function_p (fn, id))
|
if (!inlinable_function_p (fn, id))
|
||||||
|
|
18
gcc/tree.c
18
gcc/tree.c
|
@ -4382,23 +4382,7 @@ get_callee_fndecl (call)
|
||||||
that `f' is being called. */
|
that `f' is being called. */
|
||||||
if (TREE_CODE (addr) == ADDR_EXPR
|
if (TREE_CODE (addr) == ADDR_EXPR
|
||||||
&& TREE_CODE (TREE_OPERAND (addr, 0)) == FUNCTION_DECL)
|
&& TREE_CODE (TREE_OPERAND (addr, 0)) == FUNCTION_DECL)
|
||||||
{
|
return TREE_OPERAND (addr, 0);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We couldn't figure out what was being called. */
|
/* We couldn't figure out what was being called. */
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
|
Loading…
Reference in New Issue