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.