diff options
author | Chris Lattner <sabre@nondot.org> | 2006-11-20 17:57:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-11-20 17:57:22 +0000 |
commit | a138c6c73a9e594d82958af6b9ee01108e05e7ac (patch) | |
tree | b4ed2f14588dac72310f1a9fdf38a6de273b9173 /lib/CodeGen/MachineInstr.cpp | |
parent | aa9c54909de85ac966a9b8b65ff53ee11c1f298c (diff) |
setOperand should not zap the operand list or add implicit operands to an
instruction. Doing so breaks the FP stackifier, the alpha branch selector
the sparc fpmover.
This fixes PR1012 and CodeGen/X86/fp-stack-compare.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31876 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineInstr.cpp')
-rw-r--r-- | lib/CodeGen/MachineInstr.cpp | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp index 41e2cdfe83..16e235a679 100644 --- a/lib/CodeGen/MachineInstr.cpp +++ b/lib/CodeGen/MachineInstr.cpp @@ -180,45 +180,6 @@ bool MachineOperand::isIdenticalTo(const MachineOperand &Other) const { } } -/// setOpcode - Replace the opcode of the current instruction with a new one. -/// -void MachineInstr::setOpcode(unsigned Op) { - Operands.erase(Operands.begin(), Operands.begin()+NumImplicitOps); - NumImplicitOps = 0; - Opcode = Op; - if (!getParent()) - return; - const TargetInstrDescriptor &TID = getParent()->getParent()-> - getTarget().getInstrInfo()->get(Op); - if (TID.ImplicitDefs) - for (const unsigned *ImpDefs = TID.ImplicitDefs; *ImpDefs; ++ImpDefs) { - MachineOperand Op; - Op.opType = MachineOperand::MO_Register; - Op.IsDef = true; - Op.IsImp = true; - Op.IsKill = false; - Op.IsDead = false; - Op.contents.RegNo = *ImpDefs; - Op.offset = 0; - Operands.insert(Operands.begin()+NumImplicitOps, Op); - NumImplicitOps++; - } - if (TID.ImplicitUses) - for (const unsigned *ImpUses = TID.ImplicitUses; *ImpUses; ++ImpUses) { - MachineOperand Op; - Op.opType = MachineOperand::MO_Register; - Op.IsDef = false; - Op.IsImp = true; - Op.IsKill = false; - Op.IsDead = false; - Op.contents.RegNo = *ImpUses; - Op.offset = 0; - Operands.insert(Operands.begin()+NumImplicitOps, Op); - NumImplicitOps++; - } -} - - void MachineInstr::dump() const { std::cerr << " " << *this; } |