[ARM] PR67305, tighten neon_vector_mem_operand on eliminable registers
authorJiong Wang <jiong.wang@arm.com>
Wed, 11 Nov 2015 12:30:46 +0000 (12:30 +0000)
committerJiong Wang <jiwang@gcc.gnu.org>
Wed, 11 Nov 2015 12:30:46 +0000 (12:30 +0000)
2015-11-11  Jiong Wang  <jiong.wang@arm.com>
    Jim Wilson  <wilson@gcc.gnu.org>

PR target/67305
* config/arm/arm.md (neon_vector_mem_operand): Return FALSE if strict
be true and eliminable registers mentioned.

Co-Authored-By: Jim Wilson <wilson@gcc.gnu.org>
From-SVN: r230158

gcc/ChangeLog
gcc/config/arm/arm.c

index 8946e68c95e3fea488285e1c795539563a805064..8d2f9702def5056b3041d90b421ff434ff311e89 100644 (file)
@@ -1,3 +1,10 @@
+2015-11-11  Jiong Wang  <jiong.wang@arm.com>
+           Jim Wilson  <wilson@gcc.gnu.org>
+
+       PR target/67305
+       * config/arm/arm.md (neon_vector_mem_operand): Return FALSE if strict
+       be true and eliminable registers mentioned.
+
 2015-11-11  Claudiu Zissulescu  <claziss@synopsys.com>
 
        * common/config/arc/arc-common.c (arc_handle_option): Handle ARCv2
index 59034b55f2584d564ff1fa8480e6b5c787a6e124..709369441d0bac1c02355db8b9145224c20617c5 100644 (file)
@@ -12960,14 +12960,14 @@ neon_vector_mem_operand (rtx op, int type, bool strict)
   rtx ind;
 
   /* Reject eliminable registers.  */
-  if (! (reload_in_progress || reload_completed)
-      && (   reg_mentioned_p (frame_pointer_rtx, op)
+  if (strict && ! (reload_in_progress || reload_completed)
+      && (reg_mentioned_p (frame_pointer_rtx, op)
          || reg_mentioned_p (arg_pointer_rtx, op)
          || reg_mentioned_p (virtual_incoming_args_rtx, op)
          || reg_mentioned_p (virtual_outgoing_args_rtx, op)
          || reg_mentioned_p (virtual_stack_dynamic_rtx, op)
          || reg_mentioned_p (virtual_stack_vars_rtx, op)))
-    return !strict;
+    return FALSE;
 
   /* Constants are converted into offsets from labels.  */
   if (!MEM_P (op))