llvm-project/llvm/test/tools/llvm-reduce/remove-bbs-unwinded-to.ll
Matt Arsenault f02bc70c7d llvm-reduce: Fix producing invalid reductions with landingpads
It's not valid to simply branch to a landingpad block, so it
needs to be removed.

Also stop trying to scan forward to find a block that can be merged.
The predecessor merge rules are more complex than this. This also
would need to have considered landingpads. Just do the minimum
to delete the block, and let the simplify-cfg reduction handle
the branch chain cleanups.
2022-10-28 17:07:26 -07:00

57 lines
1.6 KiB
LLVM

; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg --check-prefixes=CHECK-ALL,CHECK-INTERESTINGNESS0 --test-arg %s --test-arg --input-file %s -o %t.0
; RUN: FileCheck --check-prefixes=CHECK-ALL,CHECK-FINAL0 %s < %t.0
; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg --check-prefixes=CHECK-INTERESTINGNESS1 --test-arg %s --test-arg --input-file %s -o %t.1
; RUN: FileCheck --check-prefixes=CHECK-ALL,CHECK-FINAL1 %s < %t.1
declare i32 @maybe_throwing_callee()
; CHECK-ALL: declare void @did_not_throw(i32)
declare void @did_not_throw(i32)
declare void @thrown()
; CHECK-ALL: define void @caller()
define void @caller() personality ptr @__gxx_personality_v0 {
; CHECK-ALL: bb:
; CHECK-FINAL1-NEXT: br label %bb1
bb:
; CHECK-INTERESTINGNESS0: label %bb3
; CHECK-FINAL0: br label %bb3
%i0 = invoke i32 @maybe_throwing_callee()
to label %bb3 unwind label %bb1
bb1:
landingpad { ptr, i32 } catch ptr null
; CHECK-INTERESTINGNESS1: call void @thrown()
; CHECK-FINAL1: bb1:
; CHECK-FINAL1-NEXT: call void @thrown()
; CHECK-FINAL1-NEXT: ret void
call void @thrown()
br label %bb4
; CHECK-INTERESTINGNESS0: bb3:
; CHECK-FINAL0: bb3:
bb3:
; CHECK-INTERESTINGNESS0: call void @did_not_throw(i32
; CHECK-INTERESTINGNESS0: br label %bb4
; CHECK-FINAL0: call void @did_not_throw(i32 0)
; CHECK-FINAL0: br label %bb4
call void @did_not_throw(i32 %i0)
br label %bb4
; RESULT0: bb4:
; RESULT0-NEXT: ret void
; CHECK-INTERESTINGNESS0: bb4:
; CHECK-INTERESTINGNESS0-NEXT: ret void
bb4:
ret void
}
declare i32 @__gxx_personality_v0(...)