From e5e844b37e75efb5528b8b410f1590bf2c913bc7 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Thu, 30 Dec 2021 12:33:27 +0000 Subject: [PATCH] [NFC] Pre-commit test for InstSimplify phi(poison) --- llvm/test/Transforms/InstSimplify/phi.ll | 80 ++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/llvm/test/Transforms/InstSimplify/phi.ll b/llvm/test/Transforms/InstSimplify/phi.ll index 2861cca64ffebb..e75a1f95273f5a 100644 --- a/llvm/test/Transforms/InstSimplify/phi.ll +++ b/llvm/test/Transforms/InstSimplify/phi.ll @@ -72,3 +72,83 @@ EXIT: %w = phi i32 [%v, %A], [poison, %B] ret i32 %w } + +define i32 @undef(i1 %cond, i32 %v) { +; CHECK-LABEL: @undef( +; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]] +; CHECK: A: +; CHECK-NEXT: br label [[EXIT:%.*]] +; CHECK: B: +; CHECK-NEXT: br label [[EXIT]] +; CHECK: EXIT: +; CHECK-NEXT: ret i32 [[V:%.*]] +; + br i1 %cond, label %A, label %B +A: + br label %EXIT +B: + br label %EXIT +EXIT: + %w = phi i32 [%v, %A], [undef, %B] + ret i32 %w +} + +define i8 @undef_poison(i1 %cond) { +; CHECK-LABEL: @undef_poison( +; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]] +; CHECK: A: +; CHECK-NEXT: br label [[EXIT:%.*]] +; CHECK: B: +; CHECK-NEXT: br label [[EXIT]] +; CHECK: EXIT: +; CHECK-NEXT: ret i8 undef +; + br i1 %cond, label %A, label %B +A: + br label %EXIT +B: + br label %EXIT +EXIT: + %r = phi i8 [undef, %A], [poison, %B] + ret i8 %r +} + +define i8 @only_undef(i1 %cond) { +; CHECK-LABEL: @only_undef( +; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]] +; CHECK: A: +; CHECK-NEXT: br label [[EXIT:%.*]] +; CHECK: B: +; CHECK-NEXT: br label [[EXIT]] +; CHECK: EXIT: +; CHECK-NEXT: ret i8 undef +; + br i1 %cond, label %A, label %B +A: + br label %EXIT +B: + br label %EXIT +EXIT: + %r = phi i8 [undef, %A], [undef, %B] + ret i8 %r +} + +define i8 @only_poison(i1 %cond) { +; CHECK-LABEL: @only_poison( +; CHECK-NEXT: br i1 [[COND:%.*]], label [[A:%.*]], label [[B:%.*]] +; CHECK: A: +; CHECK-NEXT: br label [[EXIT:%.*]] +; CHECK: B: +; CHECK-NEXT: br label [[EXIT]] +; CHECK: EXIT: +; CHECK-NEXT: ret i8 undef +; + br i1 %cond, label %A, label %B +A: + br label %EXIT +B: + br label %EXIT +EXIT: + %r = phi i8 [poison, %A], [poison, %B] + ret i8 %r +}