http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56150
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2013-01-30
AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org
|gnu.org |
Target Milestone|--- |4.8.0
Summary|ICE segfault in do_pre / |[4.8 Regression] ICE
|tail_merge_optimize |segfault in do_pre /
| |tail_merge_optimize
Ever Confirmed|0 |1
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-30
15:56:27 UTC ---
Confirmed.
1119 case GIMPLE_ASSIGN:
1120 lhs1 = gimple_get_lhs (s1);
1121 lhs2 = gimple_get_lhs (s2);
1122 if (gimple_vdef (s1))
1123 {
1124 if (vn_valueize (gimple_vdef (s1)) != vn_valueize
(gimple_vdef (s2)))
s2 isn't a store.
Index: gcc/tree-ssa-tail-merge.c
===================================================================
--- gcc/tree-ssa-tail-merge.c (revision 195574)
+++ gcc/tree-ssa-tail-merge.c (working copy)
@@ -1121,6 +1121,8 @@ gimple_equal_p (same_succ same_succ, gim
lhs2 = gimple_get_lhs (s2);
if (gimple_vdef (s1))
{
+ if (!gimple_vdef (s2))
+ return false;
if (vn_valueize (gimple_vdef (s1)) != vn_valueize (gimple_vdef (s2)))
return false;
if (TREE_CODE (lhs1) != SSA_NAME
fixes it.