Tighten the verifier check for catchblock.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241891 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Majnemer 2015-07-10 07:01:07 +00:00
parent 2431442e67
commit ec83dbdc5e
2 changed files with 10 additions and 9 deletions

View File

@ -2861,9 +2861,10 @@ void Verifier::visitCatchBlockInst(CatchBlockInst &CBI) {
BasicBlock *UnwindDest = CBI.getUnwindDest();
Instruction *I = UnwindDest->getFirstNonPHI();
Assert(I->isEHBlock() && !isa<LandingPadInst>(I),
"CatchBlockInst must unwind to an EH block which is not a landingpad.",
&CBI);
Assert(
isa<CatchBlockInst>(I) || isa<CatchEndBlockInst>(I),
"CatchBlockInst must unwind to a CatchBlockInst or a CatchEndBlockInst.",
&CBI);
visitTerminatorInst(CBI);
}

View File

@ -58,18 +58,18 @@ bb:
define i8 @catchblock() personality i32 (...)* @__gxx_personality_v0 {
entry:
%cbv = catchblock i8 [i7 4] to label %bb unwind label %bb2
br label %bb2
bb:
ret i8 %cbv
bb2:
ret i8 42
%cbv = catchblock i8 [i7 4] to label %bb unwind label %bb2
}
define void @terminateblock0() personality i32 (...)* @__gxx_personality_v0 {
entry:
terminateblock [i7 4] unwind label %bb
br label %bb
bb:
ret void
terminateblock [i7 4] unwind label %bb
}
define void @terminateblock1() personality i32 (...)* @__gxx_personality_v0 {
@ -85,9 +85,9 @@ entry:
define void @catchendblock0() personality i32 (...)* @__gxx_personality_v0 {
entry:
catchendblock unwind label %bb
br label %bb
bb:
ret void
catchendblock unwind label %bb
}
define void @catchendblock1() personality i32 (...)* @__gxx_personality_v0 {