[Test] Add test showing missing simplifycfg opportunity for Phi with undef inputs
authorMax Kazantsev <mkazantsev@azul.com>
Thu, 28 Oct 2021 04:22:34 +0000 (11:22 +0700)
committerMax Kazantsev <mkazantsev@azul.com>
Thu, 28 Oct 2021 04:23:07 +0000 (11:23 +0700)
llvm/test/Transforms/SimplifyCFG/undef_phi.ll [new file with mode: 0644]

diff --git a/llvm/test/Transforms/SimplifyCFG/undef_phi.ll b/llvm/test/Transforms/SimplifyCFG/undef_phi.ll
new file mode 100644 (file)
index 0000000..61cabf3
--- /dev/null
@@ -0,0 +1,38 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -simplifycfg -S | FileCheck %s
+; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s
+
+declare void @foo()
+
+; FIXME: We can replace %phi with true.
+define void @test_01(i1 %cond) {
+; CHECK-LABEL: @test_01(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[DOT:%.*]] = select i1 [[COND:%.*]], i1 true, i1 undef
+; CHECK-NEXT:    br i1 [[DOT]], label [[RET_1:%.*]], label [[COMMON_RET:%.*]]
+; CHECK:       common.ret:
+; CHECK-NEXT:    ret void
+; CHECK:       ret_1:
+; CHECK-NEXT:    call void @foo()
+; CHECK-NEXT:    br label [[COMMON_RET]]
+;
+entry:
+  br i1 %cond, label %if.true, label %if.false
+
+if.true:
+  br label %merge
+
+if.false:
+  br label %merge
+
+merge:
+  %phi = phi i1 [true, %if.true], [undef, %if.false]
+  br i1 %phi, label %ret_1, label %ret_2
+
+ret_1:
+  call void @foo()
+  ret void
+
+ret_2:
+  ret void
+}