diff options
author | Victor L. Do Nascimento <victor.donascimento@arm.com> | 2023-04-18 17:11:58 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2023-04-18 17:11:58 +0100 |
commit | b80317116547c85c176a7e41bdb67376cee6f0ce (patch) | |
tree | 342964f5a29efaa574fe38a73fbb05d9cf0dcc7b /gcc/system.h | |
parent | b7c54e3f48086c29179f7765a35c381de5109a0a (diff) | |
download | gcc-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