Author: Roman Lebedev Date: 2021-01-04T01:02:01+03:00 New Revision: 4fc908025fd003a7517e392f35389364fb60500d
URL: https://github.com/llvm/llvm-project/commit/4fc908025fd003a7517e392f35389364fb60500d DIFF: https://github.com/llvm/llvm-project/commit/4fc908025fd003a7517e392f35389364fb60500d.diff LOG: [NFC][SimplifyCFG] Add a test where we fail to preserve DomTree validity Added: llvm/test/Transforms/SimplifyCFG/SimplifyTerminatorOnSelect-domtree-preservation-edgecase.ll Modified: Removed: ################################################################################ diff --git a/llvm/test/Transforms/SimplifyCFG/SimplifyTerminatorOnSelect-domtree-preservation-edgecase.ll b/llvm/test/Transforms/SimplifyCFG/SimplifyTerminatorOnSelect-domtree-preservation-edgecase.ll new file mode 100644 index 000000000000..752de63c2933 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/SimplifyTerminatorOnSelect-domtree-preservation-edgecase.ll @@ -0,0 +1,58 @@ +; 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 void @baz(i8) +declare void @snork() +declare void @spam(i8) +declare void @zot() + +define void @wombat(i64 %arg, i1 %arg1) { +; CHECK-LABEL: @wombat( +; CHECK-NEXT: bb: +; CHECK-NEXT: [[COND:%.*]] = icmp eq i64 [[ARG:%.*]], 0 +; CHECK-NEXT: br i1 [[COND]], label [[BB4:%.*]], label [[BB2:%.*]] +; CHECK: bb2: +; CHECK-NEXT: call void @widget() +; CHECK-NEXT: br label [[BB4]] +; CHECK: bb4: +; CHECK-NEXT: [[TMP:%.*]] = phi i8 [ 0, [[BB:%.*]] ], [ 1, [[BB2]] ] +; CHECK-NEXT: call void @baz(i8 [[TMP]]) +; CHECK-NEXT: call void @snork() +; CHECK-NEXT: call void @spam(i8 4) +; CHECK-NEXT: ret void +; +bb: + switch i64 %arg, label %bb2 [ + i64 0, label %bb3 + ] + +bb2: ; preds = %bb + call void @widget() + br label %bb3 + +bb3: ; preds = %bb2, %bb + %tmp = phi i8 [ 0, %bb ], [ 1, %bb2 ] + br label %bb4 + +bb4: ; preds = %bb3 + call void @baz(i8 %tmp) + %tmp5 = select i1 %arg1, i64 6, i64 3 + switch i64 %tmp5, label %bb7 [ + i64 1, label %bb6 + i64 0, label %bb8 + ] + +bb6: ; preds = %bb4 + call void @zot() + br label %bb8 + +bb7: ; preds = %bb4 + call void @snork() + br label %bb8 + +bb8: ; preds = %bb7, %bb6, %bb4 + %tmp9 = phi i8 [ 2, %bb4 ], [ 3, %bb6 ], [ 4, %bb7 ] + call void @spam(i8 %tmp9) + ret void +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits