https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62209
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2014-08-21 CC| |jakub at gcc dot gnu.org Target Milestone|--- |5.0 Summary|ICE with LTO on valid code |[5 Regression] ICE with LTO |on x86_64-linux-gnu |on valid code on | |x86_64-linux-gnu Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Interesting - we have a gimple_assign in the BBs PHI sequence after the first reassoc pass, created via static bool update_range_test (struct range_entry *range, struct range_entry *otherrange, unsigned int count, enum tree_code opcode, vec<operand_entry_t> *ops, tree exp, bool in_p, tree low, tree high, bool strict_overflow_p) { ... gsi = gsi_for_stmt (stmt); /* In rare cases range->exp can be equal to lhs of stmt. In that case we have to insert after the stmt rather then before it. */ if (op == range->exp) tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, false, GSI_CONTINUE_LINKING); where 'stmt' is a PHI node got via SSA_NAME_DEF_STMT (op). But "after" the PHI is at the beginning of the BB. Probably the condition we are trying to apply some magic to leads to a critical edge which isn't handled well here? Sth for Jakub, not really LTO related.