diff options
author | Jiong Wang <jiong.wang@arm.com> | 2015-11-11 12:30:46 +0000 |
---|---|---|
committer | Jiong Wang <jiwang@gcc.gnu.org> | 2015-11-11 12:30:46 +0000 |
commit | 03f3914528a0974319b4d38249e94a36208a4c9b (patch) | |
tree | fd4655634f6a2841560041e51e6b68056cc957fa /gcc | |
parent | f50bb868f2145ffcc4d330fd6df6367dd5c804e3 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 6 |
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)) |