diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-06-03 05:15:46 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-06-03 05:15:46 +0000 |
commit | 95299c194d4f852d17554779117c4125c3fae73d (patch) | |
tree | ecd59e7769fa6b3a49757aa63fc467358c4c13c9 /lib | |
parent | a321dcd38d2bdafa06537515de97787aa0e83974 (diff) | |
download | llvm-95299c194d4f852d17554779117c4125c3fae73d.tar.gz llvm-95299c194d4f852d17554779117c4125c3fae73d.tar.bz2 llvm-95299c194d4f852d17554779117c4125c3fae73d.tar.xz |
If there is a def of a super-register followed by a use of a sub-register, do *not* add an implicit def of the sub-register. e.g.
EAX = ..., AX<imp-def>
...
= AX
This creates a double-def. Apparently this used to be necessary but is no longer needed.
Thanks to Anton for pointing this out. Anton, I cannot create a test case without your uncommitted ARM patches. Please check in a test case for me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72755 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/LiveVariables.cpp | 14 |
1 files changed, 0 insertions, 14 deletions
diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp index c33d81e8a8..6228821691 100644 --- a/lib/CodeGen/LiveVariables.cpp +++ b/lib/CodeGen/LiveVariables.cpp @@ -242,20 +242,6 @@ void LiveVariables::HandlePhysRegUse(unsigned Reg, MachineInstr *MI) { } } - // There was an earlier def of a super-register. Add implicit def to that MI. - // - // A: EAX = ... - // B: ... = AX - // - // Add implicit def to A if there isn't a use of AX (or EAX) before B. - if (!PhysRegUse[Reg]) { - MachineInstr *Def = PhysRegDef[Reg]; - if (Def && !Def->modifiesRegister(Reg)) - Def->addOperand(MachineOperand::CreateReg(Reg, - true /*IsDef*/, - true /*IsImp*/)); - } - // Remember this use. PhysRegUse[Reg] = MI; for (const unsigned *SubRegs = TRI->getSubRegisters(Reg); |