aboutsummaryrefslogtreecommitdiff
path: root/gcc/dojump.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-08-12 20:05:43 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2008-08-12 20:05:43 +0200
commitc0285905394bb04acd7650f5ac1079c798ed1487 (patch)
treedadd521bd788faebcdfbb1b321ea56646b6b71d0 /gcc/dojump.c
parent4c29307df9fef2001418b25babd1018a12d8687b (diff)
downloadgcc-c0285905394bb04acd7650f5ac1079c798ed1487.zip
gcc-c0285905394bb04acd7650f5ac1079c798ed1487.tar.gz
gcc-c0285905394bb04acd7650f5ac1079c798ed1487.tar.bz2
re PR middle-end/37014 (internal compiler error: in expand_expr_real_1, at expr.c:8760)
PR middle-end/37014 * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR. * dojump.c (do_jump): Likewise. * gcc.c-torture/compile/20080812-1.c: New test. From-SVN: r139029
Diffstat (limited to 'gcc/dojump.c')
-rw-r--r--gcc/dojump.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/dojump.c b/gcc/dojump.c
index fb8d139..46aa4f2 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -304,8 +304,6 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
break;
}
- case TRUTH_ANDIF_EXPR:
- case TRUTH_ORIF_EXPR:
case COMPOUND_EXPR:
/* Lowered by gimplify.c. */
gcc_unreachable ();
@@ -515,6 +513,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
goto normal;
+ case TRUTH_ANDIF_EXPR:
if (if_false_label == NULL_RTX)
{
drop_through_label = gen_label_rtx ();
@@ -535,6 +534,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
goto normal;
+ case TRUTH_ORIF_EXPR:
if (if_true_label == NULL_RTX)
{
drop_through_label = gen_label_rtx ();