aboutsummaryrefslogtreecommitdiff
path: root/gcc/dojump.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2009-12-13 21:51:34 +0000
committerMichael Matz <matz@suse.de>2009-12-13 21:51:34 +0000
commit68dbb7c8177b6fcee79082dbfe513adf50a8eeec (patch)
tree282238d6a618d39aa6c15d6fa9ef41308796fd8a /gcc/dojump.c
parentc7b798ab8af09a58253aa61c8cdb61e2439dceaa (diff)
PR tree-optimization/42027
* dojump.c (do_jump <TRUTH_AND_EXPR, TRUTH_OR_EXPR>): Go to TRUTH_ANDIF_EXPR resp. TRUTH_ORIF_EXPR expander, instead of falling through. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@155196 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dojump.c')
-rw-r--r--gcc/dojump.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/dojump.c b/gcc/dojump.c
index de7a3ec8c77..20d52ea5a28 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -458,6 +458,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
case LTGT_EXPR:
case TRUTH_ANDIF_EXPR:
case TRUTH_ORIF_EXPR:
+ other_code:
do_jump_1 (code, TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1),
if_false_label, if_true_label);
break;
@@ -547,6 +548,8 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
false) >= 4
|| TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
goto normal;
+ code = TRUTH_ANDIF_EXPR;
+ goto other_code;
case BIT_IOR_EXPR:
case TRUTH_OR_EXPR:
@@ -556,6 +559,8 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
if (BRANCH_COST (optimize_insn_for_speed_p (), false)>= 4
|| TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
goto normal;
+ code = TRUTH_ORIF_EXPR;
+ goto other_code;
/* Fall through and generate the normal code. */
default: