diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-02-05 05:01:25 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-02-05 04:01:25 +0000 |
commit | d2b35c0464fc5b071f8bbf77079bce6a9170f15c (patch) | |
tree | 29af389ca0a77ee6adc0dafe66428beb68e0e468 | |
parent | 65a428db25019da409ab3ee919a3bb9d7c9257e6 (diff) | |
download | gcc-d2b35c0464fc5b071f8bbf77079bce6a9170f15c.zip gcc-d2b35c0464fc5b071f8bbf77079bce6a9170f15c.tar.gz gcc-d2b35c0464fc5b071f8bbf77079bce6a9170f15c.tar.bz2 |
re PR ipa/61548 (FAIL: gcc.dg/tls/alias-1.c)
PR ipa/61548
* ipa.c (symbol_table::remove_unreachable_nodes): Fix ordering issue
when removing varpool nodes.
From-SVN: r220433
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa.c | 12 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6c19064..29049bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2015-02-04 Jan Hubicka <hubicka@ucw.cz> PR ipa/61548 + * ipa.c (symbol_table::remove_unreachable_nodes): Fix ordering issue + when removing varpool nodes. + +2015-02-04 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/61548 * varpool.c (varpool_node::remove): Fix order of variables. 2015-02-04 Jan Hubicka <hubicka@ucw.cz> @@ -597,8 +597,20 @@ symbol_table::remove_unreachable_nodes (FILE *file) or not. */ && (!flag_ltrans || !DECL_EXTERNAL (vnode->decl))) { + struct ipa_ref *ref = NULL; + + /* First remove the aliases, so varpool::remove can possibly lookup + the constructor and save it for future use. */ + while (vnode->iterate_direct_aliases (0, ref)) + { + if (file) + fprintf (file, " %s/%i", ref->referred->name (), + ref->referred->order); + ref->referring->remove (); + } if (file) fprintf (file, " %s/%i", vnode->name (), vnode->order); + vnext = next_variable (vnode); vnode->remove (); changed = true; } |