aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/PhaseOrdering
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-04-20 00:38:45 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-04-20 00:38:45 +0000
commiteece9dc81cedf0cda5c356c180f60d91c99920fc (patch)
tree9e8581cf7f5da30f274c65bbcb4f0f94c3f9dd44 /test/Transforms/PhaseOrdering
parent181b14797518e714e1b6112db849ca53192b8f23 (diff)
downloadexternal_llvm-eece9dc81cedf0cda5c356c180f60d91c99920fc.zip
external_llvm-eece9dc81cedf0cda5c356c180f60d91c99920fc.tar.gz
external_llvm-eece9dc81cedf0cda5c356c180f60d91c99920fc.tar.bz2
Revert r155136 "Defer some shl transforms to DAGCombine."
While the patch was perfect and defect free, it exposed a really nasty bug in X86 SelectionDAG that caused an llc crash when compiling lencod. I'll put the patch back in after fixing the SelectionDAG problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155181 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/PhaseOrdering')
-rw-r--r--test/Transforms/PhaseOrdering/basic.ll27
-rw-r--r--test/Transforms/PhaseOrdering/scev.ll64
2 files changed, 0 insertions, 91 deletions
diff --git a/test/Transforms/PhaseOrdering/basic.ll b/test/Transforms/PhaseOrdering/basic.ll
index 88ebca0..2d52ae5 100644
--- a/test/Transforms/PhaseOrdering/basic.ll
+++ b/test/Transforms/PhaseOrdering/basic.ll
@@ -22,30 +22,3 @@ define void @test1() nounwind ssp {
; CHECK: @test1
; CHECK-NEXT: ret void
}
-
-; This function exposes a phase ordering problem when InstCombine is
-; turning %add into a bitmask, making it difficult to spot a 0 return value.
-;
-; It it also important that %add is expressed as a multiple of %div so scalar
-; evolution can recognize it.
-define i32 @test2(i32 %a, i32* %p) nounwind uwtable ssp {
-entry:
- %div = udiv i32 %a, 4
- %arrayidx = getelementptr inbounds i32* %p, i64 0
- store i32 %div, i32* %arrayidx, align 4
- %add = add i32 %div, %div
- %arrayidx1 = getelementptr inbounds i32* %p, i64 1
- store i32 %add, i32* %arrayidx1, align 4
- %arrayidx2 = getelementptr inbounds i32* %p, i64 1
- %0 = load i32* %arrayidx2, align 4
- %arrayidx3 = getelementptr inbounds i32* %p, i64 0
- %1 = load i32* %arrayidx3, align 4
- %mul = mul i32 2, %1
- %sub = sub i32 %0, %mul
- ret i32 %sub
-
-; CHECK: @test2
-; CHECK: %div = lshr i32 %a, 2
-; CHECK: %add = shl nuw nsw i32 %div, 1
-; CHECK: ret i32 0
-}
diff --git a/test/Transforms/PhaseOrdering/scev.ll b/test/Transforms/PhaseOrdering/scev.ll
deleted file mode 100644
index c731280..0000000
--- a/test/Transforms/PhaseOrdering/scev.ll
+++ /dev/null
@@ -1,64 +0,0 @@
-; RUN: opt -O3 -S -analyze -scalar-evolution %s | FileCheck %s
-;
-; This file contains phase ordering tests for scalar evolution.
-; Test that the standard passes don't obfuscate the IR so scalar evolution can't
-; recognize expressions.
-
-; CHECK: test1
-; The loop body contains two increments by %div.
-; Make sure that 2*%div is recognizable, and not expressed as a bit mask of %d.
-; CHECK: --> {%p,+,(2 * (%d /u 4) * sizeof(i32))}
-define void @test1(i64 %d, i32* %p) nounwind uwtable ssp {
-entry:
- %div = udiv i64 %d, 4
- br label %for.cond
-
-for.cond: ; preds = %for.inc, %entry
- %p.addr.0 = phi i32* [ %p, %entry ], [ %add.ptr1, %for.inc ]
- %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
- %cmp = icmp ne i32 %i.0, 64
- br i1 %cmp, label %for.body, label %for.end
-
-for.body: ; preds = %for.cond
- store i32 0, i32* %p.addr.0, align 4
- %add.ptr = getelementptr inbounds i32* %p.addr.0, i64 %div
- store i32 1, i32* %add.ptr, align 4
- %add.ptr1 = getelementptr inbounds i32* %add.ptr, i64 %div
- br label %for.inc
-
-for.inc: ; preds = %for.body
- %inc = add i32 %i.0, 1
- br label %for.cond
-
-for.end: ; preds = %for.cond
- ret void
-}
-
-; CHECK: test1a
-; Same thing as test1, but it is even more tempting to fold 2 * (%d /u 2)
-; CHECK: --> {%p,+,(2 * (%d /u 2) * sizeof(i32))}
-define void @test1a(i64 %d, i32* %p) nounwind uwtable ssp {
-entry:
- %div = udiv i64 %d, 2
- br label %for.cond
-
-for.cond: ; preds = %for.inc, %entry
- %p.addr.0 = phi i32* [ %p, %entry ], [ %add.ptr1, %for.inc ]
- %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
- %cmp = icmp ne i32 %i.0, 64
- br i1 %cmp, label %for.body, label %for.end
-
-for.body: ; preds = %for.cond
- store i32 0, i32* %p.addr.0, align 4
- %add.ptr = getelementptr inbounds i32* %p.addr.0, i64 %div
- store i32 1, i32* %add.ptr, align 4
- %add.ptr1 = getelementptr inbounds i32* %add.ptr, i64 %div
- br label %for.inc
-
-for.inc: ; preds = %for.body
- %inc = add i32 %i.0, 1
- br label %for.cond
-
-for.end: ; preds = %for.cond
- ret void
-}