diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-07-10 07:01:07 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-07-10 07:01:07 +0000 |
| commit | 82771b1ad65333a6ecaaf6d0b8dc03df9e11dad5 (patch) | |
| tree | 5aee44b4139ba7f604a621467dd25b5237d90615 | |
| parent | 11aeb90aaa40eefec46073ae06027fcee003875a (diff) | |
| download | bcm5719-llvm-82771b1ad65333a6ecaaf6d0b8dc03df9e11dad5.tar.gz bcm5719-llvm-82771b1ad65333a6ecaaf6d0b8dc03df9e11dad5.zip | |
Tighten the verifier check for catchblock.
llvm-svn: 241891
| -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 { |

