aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@arm.com>2015-11-11 12:30:46 +0000
committerJiong Wang <jiwang@gcc.gnu.org>2015-11-11 12:30:46 +0000
commit03f3914528a0974319b4d38249e94a36208a4c9b (patch)
treefd4655634f6a2841560041e51e6b68056cc957fa /gcc
parentf50bb868f2145ffcc4d330fd6df6367dd5c804e3 (diff)
downloadgcc-03f3914528a0974319b4d38249e94a36208a4c9b.zip
gcc-03f3914528a0974319b4d38249e94a36208a4c9b.tar.gz
gcc-03f3914528a0974319b4d38249e94a36208a4c9b.tar.bz2
[ARM] PR67305, tighten neon_vector_mem_operand on eliminable registers
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/arm/arm.c6
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8946e68..8d2f970 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 59034b5..7093694 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -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))