aboutsummaryrefslogtreecommitdiff
path: root/gcc
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 /gcc
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.
Diffstat (limited to 'gcc')
-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