aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
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/fortran
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/fortran')
0 files changed, 0 insertions, 0 deletions