summaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2005-03-28 16:10:05 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2005-03-28 14:10:05 +0000
commit5c55c2e8ca74bc7d7aeb7ecf764972f82464b481 (patch)
tree354aee552e84dfee7c7daada9782277acd4a1880 /gcc/varasm.c
parentc7f599d0996caab1a5ba2c09cb065e053815418b (diff)
downloadgcc-5c55c2e8ca74bc7d7aeb7ecf764972f82464b481.tar.gz
re PR middle-end/20635 (ICE in cgraph_mark_reachable_node)
PR middle-end/20635 * varasm.c (mark_decl_referenced): Do not mark extern inline functions as needed. * compile/gcc.c-torture/compile/20050328-1.c: New testcase made by Jakub Jelinek. From-SVN: r97133
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 9a04cd51ab3..c174eb41414 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -1877,7 +1877,11 @@ void
mark_decl_referenced (tree decl)
{
if (TREE_CODE (decl) == FUNCTION_DECL)
- cgraph_mark_needed_node (cgraph_node (decl));
+ {
+ /* Extern inline functions don't become needed when referenced. */
+ if (!DECL_EXTERNAL (decl))
+ cgraph_mark_needed_node (cgraph_node (decl));
+ }
else if (TREE_CODE (decl) == VAR_DECL)
cgraph_varpool_mark_needed_node (cgraph_varpool_node (decl));
/* else do nothing - we can get various sorts of CST nodes here,