// s1 must be a valid value. s2 may be NULL.
TmpInstruction(MachineCodeForInstruction& mcfi,
Value *s1, Value *s2 = 0, const std::string &name = "");
-
+
+ // Constructor that uses the type of S1 as the type of the temporary,
+ // but does not require a MachineCodeForInstruction.
+ // s1 must be a valid value. s2 may be NULL.
+ TmpInstruction(Value *s1, Value *s2 = 0, const std::string &name = "");
+
// Constructor that requires the type of the temporary to be specified.
// Both S1 and S2 may be NULL.
TmpInstruction(MachineCodeForInstruction& mcfi,
};
}
+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)
// 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.(
+// Both S1 and S2 may be NULL.
TmpInstruction::TmpInstruction(MachineCodeForInstruction& mcfi,
const Type *Ty, Value *s1, Value* s2,
const std::string &name)