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

Reply via email to