We force all maybe-trapping conditions into separate stmts, but this isn't necessary w/o -fno-call-exceptions. It also confuses our branch prediction.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk. The bug remains for -fnon-call-exceptions. Richard. 2011-03-21 Richard Guenther <rguent...@suse.de> PR middle-end/47661 * gimple.c (is_gimple_condexpr): Use tree_could_throw_p. Index: gcc/gimple.c =================================================================== --- gcc/gimple.c (revision 171142) +++ gcc/gimple.c (working copy) @@ -2581,7 +2581,7 @@ bool is_gimple_condexpr (tree t) { return (is_gimple_val (t) || (COMPARISON_CLASS_P (t) - && !tree_could_trap_p (t) + && !tree_could_throw_p (t) && is_gimple_val (TREE_OPERAND (t, 0)) && is_gimple_val (TREE_OPERAND (t, 1)))); }