xref: /llvm-project/llvm/test/Transforms/SCCP/landingpad.ll (revision 106ed59fe962e0443d2f59a81fa6f52875ced5c0)
1da48f08aSNikita Popov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*106ed59fSRoman Lebedev; RUN: opt -S -passes=ipsccp < %s | FileCheck %s
3da48f08aSNikita Popov
4da48f08aSNikita Popov; SCCP should never remove landingpads.
5da48f08aSNikita Popov
6da48f08aSNikita Popovdeclare void @fn()
7da48f08aSNikita Popov
80991da36SNikita Popovdefine void @test() personality ptr null {
9da48f08aSNikita Popov; CHECK-LABEL: @test(
10da48f08aSNikita Popov; CHECK-NEXT:    invoke void @fn()
11da48f08aSNikita Popov; CHECK-NEXT:    to label [[SUCCESS:%.*]] unwind label [[FAILURE:%.*]]
12da48f08aSNikita Popov; CHECK:       success:
13da48f08aSNikita Popov; CHECK-NEXT:    ret void
14da48f08aSNikita Popov; CHECK:       failure:
15da48f08aSNikita Popov; CHECK-NEXT:    [[PAD:%.*]] = landingpad {}
16da48f08aSNikita Popov; CHECK-NEXT:    cleanup
17da48f08aSNikita Popov; CHECK-NEXT:    unreachable
18da48f08aSNikita Popov;
19da48f08aSNikita Popov  invoke void @fn()
20da48f08aSNikita Popov  to label %success unwind label %failure
21da48f08aSNikita Popov
22da48f08aSNikita Popovsuccess:
23da48f08aSNikita Popov  ret void
24da48f08aSNikita Popov
25da48f08aSNikita Popovfailure:
26da48f08aSNikita Popov  %pad = landingpad {}
27da48f08aSNikita Popov  cleanup
28da48f08aSNikita Popov  unreachable
29da48f08aSNikita Popov}
30