add bytecode reader support for tail calls

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-05-06 06:13:34 +00:00
parent 653488d166
commit 38287bdfde
2 changed files with 6 additions and 1 deletions

View File

@ -720,6 +720,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
break;
}
case 61: // tail call
case Instruction::Call: {
if (Oprnds.size() == 0)
error("Invalid call instruction encountered!");
@ -765,6 +766,7 @@ void BytecodeReader::ParseInstruction(std::vector<unsigned> &Oprnds,
}
Result = new CallInst(F, Params);
if (Opcode == 61) cast<CallInst>(Result)->setTailCall(true);
break;
}
case Instruction::Invoke: {

View File

@ -606,7 +606,10 @@ void BytecodeWriter::outputInstruction(const Instruction &I) {
unsigned Opcode = I.getOpcode();
unsigned NumOperands = I.getNumOperands();
// Encode 'volatile load' as 62 and 'volatile store' as 63.
// Encode 'tail call' as 61, 'volatile load' as 62, and 'volatile store' as
// 63.
if (isa<CallInst>(I) && cast<CallInst>(I).isTailCall())
Opcode = 61;
if (isa<LoadInst>(I) && cast<LoadInst>(I).isVolatile())
Opcode = 62;
if (isa<StoreInst>(I) && cast<StoreInst>(I).isVolatile())