diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 7 | ||||
-rw-r--r-- | llvm/test/Feature/exception.ll | 12 |
2 files changed, 10 insertions, 9 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 6def326a618..c85be99bc24 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -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); } diff --git a/llvm/test/Feature/exception.ll b/llvm/test/Feature/exception.ll index 3fd3e087acf..3befbcd2430 100644 --- a/llvm/test/Feature/exception.ll +++ b/llvm/test/Feature/exception.ll @@ -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 { |