aboutsummaryrefslogtreecommitdiff
path: root/gcc/system.h
diff options
context:
space:
mode:
authorVictor L. Do Nascimento <victor.donascimento@arm.com>2023-04-18 17:11:58 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2023-04-18 17:11:58 +0100
commitb80317116547c85c176a7e41bdb67376cee6f0ce (patch)
tree342964f5a29efaa574fe38a73fbb05d9cf0dcc7b /gcc/system.h
parentb7c54e3f48086c29179f7765a35c381de5109a0a (diff)
downloadgcc-b80317116547c85c176a7e41bdb67376cee6f0ce.zip
gcc-b80317116547c85c176a7e41bdb67376cee6f0ce.tar.gz
gcc-b80317116547c85c176a7e41bdb67376cee6f0ce.tar.bz2
constraint: fix relaxed memory and repeated constraint handling
The function `constrain_operands' lacked the logic to consider relaxed memory constraints when "traditional" memory constraints were not satisfied, creating potential issues as observed during the reload compilation pass. In addition, it was observed that while `constrain_operands' chooses to disregard constraints when more than one alternative is provided, e.g. "m,r" using CONSTRAINT__UNKNOWN, it has no checks in place to determine whether the multiple constraints in a given string are in fact repetitions of the same constraint and should thus in fact be treated as a single constraint, as ought to be the case for something like "m,m". Both of these issues are dealt with here, thus ensuring that we get appropriate pattern matching. gcc/ * lra-constraints.cc (constraint_unique): New. (process_address_1): Apply constraint_unique test. * recog.cc (constrain_operands): Allow relaxed memory constaints.
Diffstat (limited to 'gcc/system.h')
0 files changed, 0 insertions, 0 deletions