aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-06-04 04:33:46 +0200
committerDavid Edelsohn <dje@gcc.gnu.org>2013-06-03 22:33:46 -0400
commitcb0f665d1410a7a5f017e27f3aa453ab280e2553 (patch)
treeac29d4d7545860c03a19aaf4646fbc24a28a6634
parent3d5d3d4335b778c6351125614a86802b902b14ae (diff)
downloadgcc-cb0f665d1410a7a5f017e27f3aa453ab280e2553.zip
gcc-cb0f665d1410a7a5f017e27f3aa453ab280e2553.tar.gz
gcc-cb0f665d1410a7a5f017e27f3aa453ab280e2553.tar.bz2
re PR middle-end/57500 (Segfault in ipa_record_reference)
2013-06-04 Jan Hubicka <jh@suse.cz> PR middle-end/57500 * cgraphunit.c (cgraph_process_same_body_aliases): Create non-VAR_DECL node if it does not exist yet. From-SVN: r199634
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraphunit.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 034299c..f3ef8a0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-06-04 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/57500
+ * cgraphunit.c (cgraph_process_same_body_aliases): Create
+ non-VAR_DECL node if it does not exist yet.
+
2013-06-03 Richard Sandiford <rdsandiford@googlemail.com>
* config.gcc (mipsisa64sr71k-*-elf*, mipsisa64sb1-*-elf*)
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 6143e8f..9a4d0df 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -656,8 +656,11 @@ cgraph_process_same_body_aliases (void)
symtab_node node;
FOR_EACH_SYMBOL (node)
if (node->symbol.cpp_implicit_alias && !node->symbol.analyzed)
- symtab_resolve_alias (node,
- symtab_get_node (node->symbol.alias_target));
+ symtab_resolve_alias
+ (node,
+ TREE_CODE (node->symbol.alias_target) == VAR_DECL
+ ? (symtab_node)varpool_node_for_decl (node->symbol.alias_target)
+ : (symtab_node)cgraph_get_create_node (node->symbol.alias_target));
cpp_implicit_aliases_done = true;
}