aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@linaro.org>2018-10-04 07:55:02 +0000
committerThomas Preud'homme <thopre01@gcc.gnu.org>2018-10-04 07:55:02 +0000
commitb4ee650946b829b12e06a439f00c8d67d3caeed6 (patch)
treea7e6db5b4f4bd548cd636166bdd968cb5c08fd05 /gcc/lra-constraints.c
parent0863decda9aef33b8073c13f6d27826b881e6280 (diff)
downloadgcc-b4ee650946b829b12e06a439f00c8d67d3caeed6.zip
gcc-b4ee650946b829b12e06a439f00c8d67d3caeed6.tar.gz
gcc-b4ee650946b829b12e06a439f00c8d67d3caeed6.tar.bz2
Never reload fixed form constraints memory operand
The unconditional reload of address operand for recognized instruction in process_address_1 prevent the patch fixing PR85434 from working as expected. The code in that patch attempts to control which registers are used to make PIC access but the reload performed by process_address_1 will use generic PIC access. This patch removes the test for the instruction to be unrecognized to do the reload, thus always avoiding to reload address operand for fixed constraints (such as "X" used in the patch). 2018-10-04 Thomas Preud'homme <thomas.preudhomme@linaro.org> gcc/ * lra-constraints.c (process_address_1): Bail out for all satisfied fixed constraints. From-SVN: r264834
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 774d1ff..c3edd9e 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -3243,8 +3243,7 @@ process_address_1 (int nop, bool check_only_p,
/* Do not attempt to decompose arbitrary addresses generated by combine
for asm operands with loose constraints, e.g 'X'. */
else if (MEM_P (op)
- && !(INSN_CODE (curr_insn) < 0
- && get_constraint_type (cn) == CT_FIXED_FORM
+ && !(get_constraint_type (cn) == CT_FIXED_FORM
&& constraint_satisfied_p (op, cn)))
decompose_mem_address (&ad, op);
else if (GET_CODE (op) == SUBREG