PR rtl-optimization/63615
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 25 Oct 2014 06:45:52 +0000 (06:45 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 25 Oct 2014 06:45:52 +0000 (06:45 +0000)
* simplify-rtx.c (simplify_plus_minus): Set "canonicalized" on
decomposing PLUS or MINUS if operands are not placed adjacent
in the "ops" array.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216689 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/simplify-rtx.c

index 2b94c2b..a7bcfbf 100644 (file)
@@ -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
        (__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.
 
 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>
 
index 6b10917..d783c22 100644 (file)
@@ -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: