On 10/24/23 04:14, Richard Sandiford wrote:
reload and constrain_operands had some old code to look through unary
operators. E.g. an operand could be (sign_extend (reg X)), and the
constraints would match the reg rather than the sign_extend. >
This was previously used by the MIPS port. But relying on it was a
recurring source of problems, so Eric and I removed it in the MIPS
rewrite from ~20 years back. I don't know of any other port that used it.
I can't remember if other ports used this or not. The most likely
scenario would be a port from the mid/late 90s that started as a 32bit
port and was extended to a 64bit port and has similar sign extension
properties as MIPS.
PPC, sparc and s390 come immediately to mind. I just checked their
predicates.md files and they don't see to have a predicate which would
trigger this old code, even if they were reload targets.
Also, the constraints processing in LRA and IRA do not have direct
support for these embedded operators, so I think it was only ever a
reload-specific feature (and probably only a global/local+reload-specific
feature, rather than IRA+reload).
It was definitely specific to the old register allocator+reload
implementation. It pre-dates the introduction of IRA by many years.
Richard
gcc/
* recog.cc (constrain_operands): Remove
OK
jeff