diff options
author | Michael Matz <matz@suse.de> | 2009-12-13 21:51:34 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2009-12-13 21:51:34 +0000 |
commit | c3223bafb15366f3f98e452cd23f565c41659199 (patch) | |
tree | 282238d6a618d39aa6c15d6fa9ef41308796fd8a /gcc/dojump.c | |
parent | 83613dbea0846612b0ed3c4305aa541cca499b1d (diff) | |
download | gcc-c3223bafb15366f3f98e452cd23f565c41659199.zip gcc-c3223bafb15366f3f98e452cd23f565c41659199.tar.gz gcc-c3223bafb15366f3f98e452cd23f565c41659199.tar.bz2 |
re PR tree-optimization/42027 (Performance regression in convolution loop optimization)
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.
From-SVN: r155196
Diffstat (limited to 'gcc/dojump.c')
-rw-r--r-- | gcc/dojump.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/dojump.c b/gcc/dojump.c index de7a3ec..20d52ea 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: |