1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37014
5 @@ -307,8 +307,6 @@ do_jump (tree exp, rtx if_false_label, r
9 - case TRUTH_ANDIF_EXPR:
10 - case TRUTH_ORIF_EXPR:
12 /* Lowered by gimplify.c. */
14 @@ -518,6 +516,7 @@ do_jump (tree exp, rtx if_false_label, r
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 ();
22 @@ -538,6 +537,7 @@ do_jump (tree exp, rtx if_false_label, r
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 @@ -8634,7 +8634,10 @@ expand_expr_real_1 (tree exp, rtx target
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
44 @@ -8832,8 +8835,6 @@ expand_expr_real_1 (tree exp, rtx target
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;