diff options
author | Vikram S. Adve <vadve@cs.uiuc.edu> | 2003-05-31 07:41:24 +0000 |
---|---|---|
committer | Vikram S. Adve <vadve@cs.uiuc.edu> | 2003-05-31 07:41:24 +0000 |
commit | f3d3ca18b5a36f3a331367aa9ff0c3bcbd86ca82 (patch) | |
tree | 9e66723c3f2a70ddd884ac0abcba0c196793e3d1 /lib/CodeGen/InstrSelection/InstrSelection.cpp | |
parent | 3497782f3843007de3be0c43e3ff206a01e2ccac (diff) |
Added MachineCodeForInstruction object as an argument to
TmpInstruction constructors because every TmpInstruction object has
to be registered with a MachineCodeForInstruction to prevent leaks.
This simplifies the user's code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6469 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/InstrSelection/InstrSelection.cpp')
-rw-r--r-- | lib/CodeGen/InstrSelection/InstrSelection.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/CodeGen/InstrSelection/InstrSelection.cpp b/lib/CodeGen/InstrSelection/InstrSelection.cpp index 5e0fb8ec72..e4dd2e9dac 100644 --- a/lib/CodeGen/InstrSelection/InstrSelection.cpp +++ b/lib/CodeGen/InstrSelection/InstrSelection.cpp @@ -78,8 +78,12 @@ namespace { static RegisterLLC<InstructionSelection> X("instselect", "Instruction Selection", createInstructionSelectionPass); -TmpInstruction::TmpInstruction(Value *s1, Value *s2, const std::string &name) - : Instruction(s1->getType(), Instruction::UserOp1, name) { +TmpInstruction::TmpInstruction(MachineCodeForInstruction& mcfi, + Value *s1, Value *s2, const std::string &name) + : Instruction(s1->getType(), Instruction::UserOp1, name) +{ + mcfi.addTemp(this); + Operands.push_back(Use(s1, this)); // s1 must be nonnull if (s2) { Operands.push_back(Use(s2, this)); @@ -91,9 +95,13 @@ TmpInstruction::TmpInstruction(Value *s1, Value *s2, const std::string &name) // Constructor that requires the type of the temporary to be specified. // Both S1 and S2 may be NULL.( -TmpInstruction::TmpInstruction(const Type *Ty, Value *s1, Value* s2, +TmpInstruction::TmpInstruction(MachineCodeForInstruction& mcfi, + const Type *Ty, Value *s1, Value* s2, const std::string &name) - : Instruction(Ty, Instruction::UserOp1, name) { + : Instruction(Ty, Instruction::UserOp1, name) +{ + mcfi.addTemp(this); + if (s1) { Operands.push_back(Use(s1, this)); } if (s2) { Operands.push_back(Use(s2, this)); } |