aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir N. Makarov <vmakarov@redhat.com>2021-03-09 09:05:05 -0500
committerVladimir N. Makarov <vmakarov@redhat.com>2021-03-09 09:06:17 -0500
commit9725df0233b6fb6e761875968b3b8e9fd9f522ac (patch)
tree8071c1225a5704ea7285e27954037cd995d3a3dd
parent43c66b1606dbcd704f3c99a4d396f7d9fb917858 (diff)
downloadgcc-9725df0233b6fb6e761875968b3b8e9fd9f522ac.zip
gcc-9725df0233b6fb6e761875968b3b8e9fd9f522ac.tar.gz
gcc-9725df0233b6fb6e761875968b3b8e9fd9f522ac.tar.bz2
[PR99454] LRA: Process 0..9 constraints in process_address_1
We need to process 0..9 constraints to fetch the right op constraint in the function. Also 0..9 constraints gives unknown class constraint class which can result in skipping address normalization for memory in asm. gcc/ChangeLog: PR target/99454 * lra-constraints.c (process_address_1): Process 0..9 constraints in process_address_1.
-rw-r--r--gcc/lra-constraints.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 76e3ff7..feff766 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -3452,6 +3452,10 @@ process_address_1 (int nop, bool check_only_p,
constraint
= skip_contraint_modifiers (curr_static_id->operand[nop].constraint);
+ if ('0' <= constraint[0] && constraint[0] <= '9')
+ constraint
+ = skip_contraint_modifiers (curr_static_id->operand
+ [constraint[0] - '0'].constraint);
cn = lookup_constraint (constraint);
if (insn_extra_address_constraint (cn)
/* When we find an asm operand with an address constraint that