1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37014
9 - case TRUTH_ANDIF_EXPR:
10 - case TRUTH_ORIF_EXPR:
12 /* Lowered by gimplify.c. */
15 if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
18 + case TRUTH_ANDIF_EXPR:
19 if (if_false_label == NULL_RTX)
21 drop_through_label = gen_label_rtx ();
23 if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
26 + case TRUTH_ORIF_EXPR:
27 if (if_true_label == NULL_RTX)
29 drop_through_label = gen_label_rtx ();
32 @@ -8556,7 +8556,10 @@
33 /* If no set-flag instruction, must generate a conditional store
34 into a temporary variable. Drop through and handle this
37 + /* Although TRUTH_{AND,OR}IF_EXPR aren't present in GIMPLE, they
38 + are occassionally created by folding during expansion. */
39 + case TRUTH_ANDIF_EXPR:
40 + case TRUTH_ORIF_EXPR:
43 || modifier == EXPAND_STACK_PARM
45 case POSTDECREMENT_EXPR:
48 - case TRUTH_ANDIF_EXPR:
49 - case TRUTH_ORIF_EXPR:
50 /* Lowered by gimplify.c. */
54 +++ b/gcc/testsuite/gcc.c-torture/compile/20080812-1.c
56 +/* PR middle-end/37014 */
58 +void bar (signed char *);
64 + signed char a[123], b[123], c;
65 + for (i = 0; i < 123; i++)
68 + int d = e < 0 ? -e : e;