https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71077
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code Status|UNCONFIRMED |NEW Last reconfirmed| |2016-05-12 CC| |ppalka at gcc dot gnu.org Target Milestone|--- |7.0 Summary|gcc -lto raises ICE |[7 Regression] gcc -lto | |raises ICE Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. #1 0x0000000000d9c921 in find_taken_edge_cond_expr ( bb=<basic_block 0x7ffff688f9c0 (38)>, val=<vector_cst 0x7ffff66bc320>) at /space/rguenther/src/svn/trunk/gcc/tree-cfg.c:2230 2230 gcc_assert (TREE_CODE (val) == INTEGER_CST); (gdb) l 2225 { 2226 edge true_edge, false_edge; 2227 2228 extract_true_false_edges_from_block (bb, &true_edge, &false_edge); 2229 2230 gcc_assert (TREE_CODE (val) == INTEGER_CST); 2231 return (integer_zerop (val) ? false_edge : true_edge); 2232 } 2233 2234 /* Given an INTEGER_CST VAL and the entry block BB to a SWITCH_EXPR (gdb) p val $1 = <vector_cst 0x7ffff66bc320> simplify_control_stmt_condition doesn't handle vector equality tests in GIMPLE_CONDs nor do I think it handles the combining step correctly (failing to properly use constant_boolean_node instead of zero/one).