mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-23 19:59:57 +00:00
[Verifier] Don't abort on invalid cleanuprets
Code in visitEHPadPredecessors assume a little too much about the validity of a cleanupret with an invalid cleanuppad operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262364 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
88e8bafbd5
commit
d724de3510
@ -3055,7 +3055,7 @@ void Verifier::visitEHPadPredecessors(Instruction &I) {
|
||||
else
|
||||
FromPad = ConstantTokenNone::get(II->getContext());
|
||||
} else if (auto *CRI = dyn_cast<CleanupReturnInst>(TI)) {
|
||||
FromPad = CRI->getCleanupPad();
|
||||
FromPad = CRI->getOperand(0);
|
||||
Assert(FromPad != ToPadParent, "A cleanupret must exit its cleanup", CRI);
|
||||
} else if (auto *CSI = dyn_cast<CatchSwitchInst>(TI)) {
|
||||
FromPad = CSI;
|
||||
|
@ -23,6 +23,7 @@
|
||||
; RUN: sed -e s/.T23:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK23 %s
|
||||
; RUN: sed -e s/.T24:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK24 %s
|
||||
; RUN: sed -e s/.T25:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK25 %s
|
||||
; RUN: sed -e s/.T26:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK26 %s
|
||||
|
||||
declare void @g()
|
||||
|
||||
@ -439,3 +440,17 @@ declare void @g()
|
||||
;T25: %cp3 = cleanuppad within none []
|
||||
;T25: cleanupret from %cp3 unwind to caller
|
||||
;T25: }
|
||||
|
||||
;T26: define void @f() personality void ()* @g {
|
||||
;T26: entry:
|
||||
;T26: ret void
|
||||
;T26:
|
||||
;T26: ehcleanup:
|
||||
;T26: cleanuppad within none []
|
||||
;T26: cleanupret from none unwind label %ehcleanup
|
||||
;T26: ; CHECK26: A cleanupret must exit its cleanup
|
||||
;T26: ; CHECK26: cleanupret from none unwind label %ehcleanup
|
||||
;T26: ; CHECK26: CleanupReturnInst needs to be provided a CleanupPad
|
||||
;T26: ; CHECK26: cleanupret from none unwind label %ehcleanup
|
||||
;T26: ; CHECK26: token none
|
||||
;T26: }
|
||||
|
Loading…
Reference in New Issue
Block a user