mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
[WinEH] Verify unwind edges against EH pad tree
Summary: Funclet EH personalities require a tree-like nesting among funclets (enforced by the ParentPad linkage in the IR), and also require that unwind edges conform to certain rules with respect to the tree: - An unwind edge may exit 0 or more ancestor pads - An unwind edge must enter exactly one EH pad, which must be distinct from any exited pads - A cleanupret's edge must exit its cleanuppad Describe these rules in the LangRef, and enforce them in the verifier. Reviewers: rnk, majnemer, andrew.w.kaylor Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15961 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257272 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -885,7 +885,8 @@ catchpad:
|
||||
; CHECK-NEXT: br label %body
|
||||
|
||||
body:
|
||||
invoke void @f.ccc() to label %continue unwind label %terminate.inner
|
||||
invoke void @f.ccc() [ "funclet"(token %catch) ]
|
||||
to label %continue unwind label %terminate.inner
|
||||
catchret from %catch to label %return
|
||||
; CHECK: catchret from %catch to label %return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user