+Instruction::Instruction(const Type *ty, unsigned it, const std::string &Name,
+ BasicBlock *InsertAtEnd)
+ : User(ty, Value::InstructionVal + it, Name), Parent(0) {
+ init();
+
+ // append this instruction into the basic block
+ assert(InsertAtEnd && "Basic block to append to may not be NULL!");
+ InsertAtEnd->getInstList().push_back(this);
+}
+
+void Instruction::setOpcode(unsigned opc) {
+ setValueType(Value::InstructionVal + opc);
+}
+