When an instruction like: A += B had both A and B virtual registers

spilled, A was loaded from its stack location twice. This fixes the bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11093 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alkis Evlogimenos
2004-02-03 01:13:07 +00:00
parent 9fe7602862
commit 4e7854407c
3 changed files with 30 additions and 10 deletions
+6
View File
@@ -207,6 +207,10 @@ public:
return *this;
}
bool operator==(const MachineOperand& rhs) const {
return regNum == rhs.regNum && opType == rhs.opType;
}
// Accessor methods. Caller is responsible for checking the
// operand type before invoking the corresponding accessor.
//
@@ -282,8 +286,10 @@ public:
}
bool isUse () const { return flags & USEFLAG; }
bool isEverUsed (const MachineInstr&) const;
bool isDef () const { return flags & DEFFLAG; }
bool isHiBits32 () const { return flags & HIFLAG32; }
bool isEverDefined (const MachineInstr&) const;
bool isLoBits32 () const { return flags & LOFLAG32; }
bool isHiBits64 () const { return flags & HIFLAG64; }
bool isLoBits64 () const { return flags & LOFLAG64; }