| //===- SparcV9TmpInstr.cpp - SparcV9 Intermediate Value class -------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file was developed by the LLVM research group and is distributed under |
| // the University of Illinois Open Source License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Methods of class for temporary intermediate values used within the current |
| // SparcV9 backend. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "SparcV9TmpInstr.h" |
| #include "llvm/Support/LeakDetector.h" |
| |
| namespace llvm { |
| |
| TmpInstruction::TmpInstruction(Value *s1, Value *s2, const std::string &name) |
| : Instruction(s1->getType(), Instruction::UserOp1, name) { |
| Operands.push_back(Use(s1, this)); // s1 must be non-null |
| if (s2) |
| Operands.push_back(Use(s2, this)); |
| |
| // TmpInstructions should not be garbage checked. |
| LeakDetector::removeGarbageObject(this); |
| } |
| |
| 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 non-null |
| if (s2) |
| Operands.push_back(Use(s2, this)); |
| |
| // TmpInstructions should not be garbage checked. |
| LeakDetector::removeGarbageObject(this); |
| } |
| |
| // Constructor that requires the type of the temporary to be specified. |
| // Both S1 and S2 may be NULL. |
| TmpInstruction::TmpInstruction(MachineCodeForInstruction& mcfi, |
| const Type *Ty, Value *s1, Value* s2, |
| const std::string &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)); |
| |
| // TmpInstructions should not be garbage checked. |
| LeakDetector::removeGarbageObject(this); |
| } |
| |
| } // end namespace llvm |