From 329c83f95964bc7d0eb6cf4a6d8663c72b3bbb0d Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Wed, 23 Nov 2016 01:42:39 +0000 Subject: [PATCH] [SCCP] Add a test for switches on undef. Without this test, you can just remove the code fixing the switch to the first constant in ResolvedUndefs in and everything pass. This test, instead, fails with an assertion if the code is removed. Found while refactoring SCCP to integrate undef in the solver. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287731 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/SCCP/switch-multiple-undef.ll | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 test/Transforms/SCCP/switch-multiple-undef.ll diff --git a/test/Transforms/SCCP/switch-multiple-undef.ll b/test/Transforms/SCCP/switch-multiple-undef.ll new file mode 100644 index 00000000000..027c9c0c9ba --- /dev/null +++ b/test/Transforms/SCCP/switch-multiple-undef.ll @@ -0,0 +1,27 @@ +; RUN: opt -S -ipsccp < %s | FileCheck %s + +declare void @foo() +declare void @goo() +declare void @patatino() + +define void @test1(i32 %t) { + %choice = icmp eq i32 undef, -1 + switch i1 %choice, label %first [i1 0, label %second + i1 1, label %third] +first: + call void @foo() + ret void +second: + call void @goo() + ret void +third: + call void @patatino() + ret void +} + +; CHECK: define void @test1(i32 %t) { +; CHECK-NEXT: br label %second +; CHECK: second: +; CHECK-NEXT: call void @goo() +; CHECK-NEXT: ret void +; CHECK-NEXT: } -- 2.50.1