This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RS6000 call pattern clobbers
- From: David Edelsohn <dje at watson dot ibm dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 25 Feb 2007 22:19:28 -0500
- Subject: RS6000 call pattern clobbers
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