mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Update bitcode reader and writer to handle multiple return values.
Take 2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47583 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -747,15 +747,24 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
|
||||
case Instruction::GetResult:
|
||||
Code = bitc::FUNC_CODE_INST_GETRESULT;
|
||||
PushValueAndType(I.getOperand(0), InstID, Vals, VE);
|
||||
Vals.push_back(Log2_32(cast<GetResultInst>(I).getIndex())+1);
|
||||
Vals.push_back(cast<GetResultInst>(I).getIndex());
|
||||
break;
|
||||
|
||||
case Instruction::Ret:
|
||||
Code = bitc::FUNC_CODE_INST_RET;
|
||||
if (!I.getNumOperands())
|
||||
AbbrevToUse = FUNCTION_INST_RET_VOID_ABBREV;
|
||||
else if (!PushValueAndType(I.getOperand(0), InstID, Vals, VE))
|
||||
AbbrevToUse = FUNCTION_INST_RET_VAL_ABBREV;
|
||||
case Instruction::Ret:
|
||||
{
|
||||
Code = bitc::FUNC_CODE_INST_RET;
|
||||
unsigned NumOperands = I.getNumOperands();
|
||||
// printf ("dpatel write %d\n", NumOperands);
|
||||
if (NumOperands == 0)
|
||||
AbbrevToUse = FUNCTION_INST_RET_VOID_ABBREV;
|
||||
else if (NumOperands == 1) {
|
||||
if (!PushValueAndType(I.getOperand(0), InstID, Vals, VE))
|
||||
AbbrevToUse = FUNCTION_INST_RET_VAL_ABBREV;
|
||||
} else {
|
||||
for (unsigned i = 0, e = NumOperands; i != e; ++i)
|
||||
PushValueAndType(I.getOperand(i), InstID, Vals, VE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Instruction::Br:
|
||||
Code = bitc::FUNC_CODE_INST_BR;
|
||||
|
Reference in New Issue
Block a user