[llvm-commits] [llvm] r48003 - in /llvm/trunk: include/llvm/CodeGen/RegisterScavenging.h lib/CodeGen/RegisterScavenging.cpp
Bill Wendling
isanbard at gmail.com
Fri Mar 7 15:44:50 PST 2008
On Fri, Mar 7, 2008 at 2:32 PM, Evan Cheng <evan.cheng at apple.com> wrote:
>
> On Mar 6, 2008, at 3:22 PM, Bill Wendling wrote:
>
> > void RegScavenger::enterBasicBlock(MachineBasicBlock *mbb) {
> > @@ -138,9 +161,12 @@
> > if (MO.isKill() && !isReserved(Reg)) {
> > ChangedRegs.set(Reg);
> >
> > + // Mark sub-registers as changed if they aren't defined in
> > the same
> > + // instruction.
> > for (const unsigned *SubRegs = TRI->getSubRegisters(Reg);
> > unsigned SubReg = *SubRegs; ++SubRegs)
> > - ChangedRegs.set(SubReg);
> > + if (!RedefinesSuperRegPart(MI, Reg, TRI))
>
> Why is this necessary? Something that kills a super-register also
> kills the sub-register.
>
Okay, sure.
> > @@ -194,7 +224,7 @@
> > unsigned Reg = MO.getReg();
> > assert(isUsed(Reg));
> > if (!isReserved(Reg))
> > - setUnused(Reg);
> > + setUnused(Reg, MI);
>
> What about the sub-registers?
>
The setUnused method sets that information, right?
-bw
More information about the llvm-commits
mailing list