[llvm] r287731 - [SCCP] Add a test for switches on undef.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 22 17:42:40 PST 2016


Author: davide
Date: Tue Nov 22 19:42:39 2016
New Revision: 287731

URL: http://llvm.org/viewvc/llvm-project?rev=287731&view=rev
Log:
[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.

Added:
    llvm/trunk/test/Transforms/SCCP/switch-multiple-undef.ll

Added: llvm/trunk/test/Transforms/SCCP/switch-multiple-undef.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SCCP/switch-multiple-undef.ll?rev=287731&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/SCCP/switch-multiple-undef.ll (added)
+++ llvm/trunk/test/Transforms/SCCP/switch-multiple-undef.ll Tue Nov 22 19:42:39 2016
@@ -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: }




More information about the llvm-commits mailing list