mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Add the 'resume' instruction for the new EH rewrite.
This adds the 'resume' instruction class, IR parsing, and bitcode reading and writing. The 'resume' instruction resumes propagation of an existing (in-flight) exception whose unwinding was interrupted with a 'landingpad' instruction (to be added later). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136589 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -2508,6 +2508,14 @@ bool BitcodeReader::ParseFunctionBody(Function *F) {
|
||||
cast<InvokeInst>(I)->setAttributes(PAL);
|
||||
break;
|
||||
}
|
||||
case bitc::FUNC_CODE_INST_RESUME: { // RESUME: [opval]
|
||||
unsigned Idx = 0;
|
||||
Value *Val = 0;
|
||||
if (getValueTypePair(Record, Idx, NextValueNo, Val))
|
||||
return Error("Invalid RESUME record");
|
||||
I = ResumeInst::Create(Val);
|
||||
break;
|
||||
}
|
||||
case bitc::FUNC_CODE_INST_UNWIND: // UNWIND
|
||||
I = new UnwindInst(Context);
|
||||
InstructionList.push_back(I);
|
||||
|
@ -1143,6 +1143,10 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Instruction::Resume:
|
||||
Code = bitc::FUNC_CODE_INST_RESUME;
|
||||
PushValueAndType(I.getOperand(0), InstID, Vals, VE);
|
||||
break;
|
||||
case Instruction::Unwind:
|
||||
Code = bitc::FUNC_CODE_INST_UNWIND;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user