Author: Roman Lebedev Date: 2021-01-03T01:45:48+03:00 New Revision: a0013934b6a194f0ecc4d98118920326b12d07a0
URL: https://github.com/llvm/llvm-project/commit/a0013934b6a194f0ecc4d98118920326b12d07a0 DIFF: https://github.com/llvm/llvm-project/commit/a0013934b6a194f0ecc4d98118920326b12d07a0.diff LOG: [NFC][SimplifyCFG] Add another test for switch creation where we fail to maintain DomTree Added: llvm/test/Transforms/SimplifyCFG/FoldValueComparisonIntoPredecessors-domtree-preservation-edgecase-2.ll Modified: Removed: ################################################################################ diff --git a/llvm/test/Transforms/SimplifyCFG/FoldValueComparisonIntoPredecessors-domtree-preservation-edgecase-2.ll b/llvm/test/Transforms/SimplifyCFG/FoldValueComparisonIntoPredecessors-domtree-preservation-edgecase-2.ll new file mode 100644 index 000000000000..79857cccfbe4 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/FoldValueComparisonIntoPredecessors-domtree-preservation-edgecase-2.ll @@ -0,0 +1,80 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=0 < %s | FileCheck %s + +declare void @widget() +declare i16 @baz() +declare void @snork() +declare void @spam() + +define void @zot() local_unnamed_addr align 2 personality i8* undef { +; CHECK-LABEL: @zot( +; CHECK-NEXT: bb: +; CHECK-NEXT: invoke void @widget() +; CHECK-NEXT: to label [[BB14:%.*]] unwind label [[BB21:%.*]] +; CHECK: bb14: +; CHECK-NEXT: [[I0:%.*]] = invoke i16 @baz() +; CHECK-NEXT: to label [[BB15:%.*]] unwind label [[BB25:%.*]] +; CHECK: bb15: +; CHECK-NEXT: switch i16 [[I0]], label [[BB19:%.*]] [ +; CHECK-NEXT: i16 42, label [[BB23:%.*]] +; CHECK-NEXT: i16 21330, label [[BB23]] +; CHECK-NEXT: ] +; CHECK: bb19: +; CHECK-NEXT: invoke void @snork() +; CHECK-NEXT: to label [[BB20:%.*]] unwind label [[BB25]] +; CHECK: bb20: +; CHECK-NEXT: unreachable +; CHECK: bb21: +; CHECK-NEXT: [[I22:%.*]] = landingpad { i8*, i32 } +; CHECK-NEXT: cleanup +; CHECK-NEXT: ret void +; CHECK: bb23: +; CHECK-NEXT: invoke void @spam() +; CHECK-NEXT: to label [[BB24:%.*]] unwind label [[BB25]] +; CHECK: bb24: +; CHECK-NEXT: ret void +; CHECK: bb25: +; CHECK-NEXT: [[I26:%.*]] = landingpad { i8*, i32 } +; CHECK-NEXT: cleanup +; CHECK-NEXT: br label [[BB24]] +; +bb: + invoke void @widget() + to label %bb14 unwind label %bb21 + +bb14: ; preds = %bb + %i0 = invoke i16 @baz() + to label %bb15 unwind label %bb25 + +bb15: ; preds = %bb14 + %i16 = icmp eq i16 %i0, 42 + br i1 %i16, label %bb23, label %bb17 + +bb17: ; preds = %bb15 + %i18 = icmp eq i16 %i0, 21330 + br i1 %i18, label %bb23, label %bb19 + +bb19: ; preds = %bb17 + invoke void @snork() + to label %bb20 unwind label %bb25 + +bb20: ; preds = %bb19 + unreachable + +bb21: ; preds = %bb + %i22 = landingpad { i8*, i32 } + cleanup + ret void + +bb23: ; preds = %bb17, %bb15 + invoke void @spam() + to label %bb24 unwind label %bb25 + +bb24: ; preds = %bb25, %bb23 + ret void + +bb25: ; preds = %bb23, %bb19, %bb14 + %i26 = landingpad { i8*, i32 } + cleanup + br label %bb24 +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits