aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gcc.gnu.org>2014-10-25 17:15:52 +1030
committerAlan Modra <amodra@gcc.gnu.org>2014-10-25 17:15:52 +1030
commitf27dfe878241c1496446180f0b6d154a3c4c5e2f (patch)
tree3781ddc320d2d3ccdf9b6af77c34036b78d232e6
parent4aa19422932112527ceb8cd3dd290bd9ff2b990c (diff)
downloadgcc-f27dfe878241c1496446180f0b6d154a3c4c5e2f.zip
gcc-f27dfe878241c1496446180f0b6d154a3c4c5e2f.tar.gz
gcc-f27dfe878241c1496446180f0b6d154a3c4c5e2f.tar.bz2
re PR rtl-optimization/63615 (FAIL: gcc.target/i386/addr-sel-1.c)
PR rtl-optimization/63615 * simplify-rtx.c (simplify_plus_minus): Set "canonicalized" on decomposing PLUS or MINUS if operands are not placed adjacent in the "ops" array. From-SVN: r216689
-rw-r--r--gcc/ChangeLog43
-rw-r--r--gcc/simplify-rtx.c2
2 files changed, 26 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2b94c2b..a7bcfbf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-10-25 Alan Modra <amodra@gmail.com>
+
+ PR rtl-optimization/63615
+ * simplify-rtx.c (simplify_plus_minus): Set "canonicalized" on
+ decomposing PLUS or MINUS if operands are not placed adjacent
+ in the "ops" array.
+
2014-10-25 Joseph Myers <joseph@codesourcery.com>
* config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Do
@@ -117,21 +124,21 @@
(__LD4R_FUNC): Ditto.
(vld2_dup_s8, vld2_dup_s16, vld2_dup_s32, vld2_dup_f32, vld2_dup_f64,
vld2_dup_u8, vld2_dup_u16, vld2_dup_u32, vld2_dup_p8, vld2_dup_p16
- vld2_dup_s64, vld2_dup_u64, vld2q_dup_s8, vld2q_dup_p8,
- vld2q_dup_s16, vld2q_dup_p16, vld2q_dup_s32, vld2q_dup_s64,
- vld2q_dup_u8, vld2q_dup_u16, vld2q_dup_u32, vld2q_dup_u64
+ vld2_dup_s64, vld2_dup_u64, vld2q_dup_s8, vld2q_dup_p8,
+ vld2q_dup_s16, vld2q_dup_p16, vld2q_dup_s32, vld2q_dup_s64,
+ vld2q_dup_u8, vld2q_dup_u16, vld2q_dup_u32, vld2q_dup_u64
vld2q_dup_f32, vld2q_dup_f64): Rewrite using builtin functions.
- (vld3_dup_s64, vld3_dup_u64, vld3_dup_f64, vld3_dup_s8
- vld3_dup_p8, vld3_dup_s16, vld3_dup_p16, vld3_dup_s32
+ (vld3_dup_s64, vld3_dup_u64, vld3_dup_f64, vld3_dup_s8
+ vld3_dup_p8, vld3_dup_s16, vld3_dup_p16, vld3_dup_s32
vld3_dup_u8, vld3_dup_u16, vld3_dup_u32, vld3_dup_f32
- vld3q_dup_s8, vld3q_dup_p8, vld3q_dup_s16, vld3q_dup_p16
- vld3q_dup_s32, vld3q_dup_s64, vld3q_dup_u8, vld3q_dup_u16
+ vld3q_dup_s8, vld3q_dup_p8, vld3q_dup_s16, vld3q_dup_p16
+ vld3q_dup_s32, vld3q_dup_s64, vld3q_dup_u8, vld3q_dup_u16
vld3q_dup_u32, vld3q_dup_u64, vld3q_dup_f32, vld3q_dup_f64): Likewise.
- (vld4_dup_s64, vld4_dup_u64, vld4_dup_f64, vld4_dup_s8
- vld4_dup_p8, vld4_dup_s16, vld4_dup_p16, vld4_dup_s32
- vld4_dup_u8, vld4_dup_u16, vld4_dup_u32, vld4_dup_f32
- vld4q_dup_s8, vld4q_dup_p8, vld4q_dup_s16, vld4q_dup_p16
- vld4q_dup_s32, vld4q_dup_s64, vld4q_dup_u8, vld4q_dup_u16
+ (vld4_dup_s64, vld4_dup_u64, vld4_dup_f64, vld4_dup_s8
+ vld4_dup_p8, vld4_dup_s16, vld4_dup_p16, vld4_dup_s32
+ vld4_dup_u8, vld4_dup_u16, vld4_dup_u32, vld4_dup_f32
+ vld4q_dup_s8, vld4q_dup_p8, vld4q_dup_s16, vld4q_dup_p16
+ vld4q_dup_s32, vld4q_dup_s64, vld4q_dup_u8, vld4q_dup_u16
vld4q_dup_u32, vld4q_dup_u64, vld4q_dup_f32, vld4q_dup_f64): Likewise.
* config/aarch64/aarch64.md (define_c_enum "unspec"): Add
UNSPEC_LD2_DUP, UNSPEC_LD3_DUP, UNSPEC_LD4_DUP.
@@ -146,18 +153,18 @@
2014-10-24 Maxim Kuvyrkov <maxim.kuvyrkov@gmail.com>
- * rtlanal.c (get_base_term): Handle SCRATCH.
+ * rtlanal.c (get_base_term): Handle SCRATCH.
2014-10-24 Maxim Kuvyrkov <maxim.kuvyrkov@gmail.com>
- * haifa-sched.c (sched_init): Disable max_issue when scheduling for
- register pressure.
+ * haifa-sched.c (sched_init): Disable max_issue when scheduling for
+ register pressure.
2014-10-24 Maxim Kuvyrkov <maxim.kuvyrkov@gmail.com>
- * haifa-sched.c (cached_first_cycle_multipass_dfa_lookahead,)
- (cached_issue_rate): Remove. Use dfa_lookahead and issue_rate instead.
- (max_issue, choose_ready, sched_init): Update.
+ * haifa-sched.c (cached_first_cycle_multipass_dfa_lookahead,)
+ (cached_issue_rate): Remove. Use dfa_lookahead and issue_rate instead.
+ (max_issue, choose_ready, sched_init): Update.
2014-10-24 Maxim Kuvyrkov <maxim.kuvyrkov@gmail.com>
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 6b10917..d783c22 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -4006,7 +4006,7 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0,
ops[i].op = XEXP (this_op, 0);
changed = 1;
- canonicalized |= this_neg;
+ canonicalized |= this_neg || i != n_ops - 2;
break;
case NEG: