From f27dfe878241c1496446180f0b6d154a3c4c5e2f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 25 Oct 2014 17:15:52 +1030 Subject: [PATCH] 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 --- gcc/ChangeLog | 43 +++++++++++++++++++++++++------------------ gcc/simplify-rtx.c | 2 +- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b94c2b40a6..a7bcfbfac66 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-10-25 Alan Modra + + 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 * 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 - * rtlanal.c (get_base_term): Handle SCRATCH. + * rtlanal.c (get_base_term): Handle SCRATCH. 2014-10-24 Maxim Kuvyrkov - * 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 - * 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 diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 6b10917cd09..d783c22f77a 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: -- 2.30.2