Richard,

        While fixing ports in preparation for the new dataflow
infrastructure, we found a problem with the way that the rs6000 port
represents clobbers and uses of registers in call and sibcall patterns.
The patterns clobber and use the rs6000 link register as a match_scratch
with constraint of the link register class:

   (clobber (match_scratch:SI 0 "=l"))

instead of clobbering the link register hard register directly in the
early insn generation.  This style dates to the original rs6000 port.  A
naked use that starts as a pseudo causes problems for dataflow.

        Do you remember why you wrote the call patterns this way?  Was
there a problem with reload and clobbers of hard registers in a register
class containing a single register or some other historical quirk?

Thanks, David

Reply via email to