summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorPhilip Reames <listmail@philipreames.com>2016-03-03 19:44:06 +0000
committerPhilip Reames <listmail@philipreames.com>2016-03-03 19:44:06 +0000
commit146307eb52f1fa03cf04a81e218807173d6e08f9 (patch)
tree92f30d5ae1832b9d56a8eb785290146133c949e2 /llvm/test
parent9bba75084b7bde6a6215d616f664d3d2486f4871 (diff)
downloadbcm5719-llvm-146307eb52f1fa03cf04a81e218807173d6e08f9.tar.gz
bcm5719-llvm-146307eb52f1fa03cf04a81e218807173d6e08f9.zip
[ValueTracking] Remove dead code from an old experiment
This experiment was originally about trying to use facts implied dominating conditions to infer more precise known bits. While the compile time was found to be acceptable on several large code bases, we never found sufficiently profitable examples to justify turning on the code by default. Given this, it's time to abandon the experiment. Several folks have commented that they've found this useful for experimentation, but nothing has come of those experiments. Given how easy the patch is to apply, there's no reason to leave the code in tree. For anyone interested in further investigation in this area, I recommend finding the summary email I sent on one of the original review threads. In particular, I now believe the use-list based approach is strictly worse than the dom-tree-walking approach. llvm-svn: 262646
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Analysis/ValueTracking/dom-cond.ll18
-rw-r--r--llvm/test/Analysis/ValueTracking/pr24866.ll44
-rw-r--r--llvm/test/Transforms/InstCombine/dom-conditions.ll152
-rw-r--r--llvm/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/value-tracking-domtree.ll33
4 files changed, 0 insertions, 247 deletions
diff --git a/llvm/test/Analysis/ValueTracking/dom-cond.ll b/llvm/test/Analysis/ValueTracking/dom-cond.ll
deleted file mode 100644
index c0cafdd0ade..00000000000
--- a/llvm/test/Analysis/ValueTracking/dom-cond.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; RUN: opt < %s -instcombine -value-tracking-dom-conditions -S | FileCheck %s
-
-define i32 @dom_cond(i32 %a, i32 %b) {
-; CHECK-LABEL: @dom_cond(
-entry:
- %v = add i32 %a, %b
- %cond = icmp ule i32 %v, 7
- br i1 %cond, label %then, label %exit
-
-then:
- %v2 = add i32 %v, 8
-; CHECK: or i32 %v, 8
- br label %exit
-
-exit:
- %v3 = phi i32 [ %v, %entry ], [ %v2, %then ]
- ret i32 %v3
-}
diff --git a/llvm/test/Analysis/ValueTracking/pr24866.ll b/llvm/test/Analysis/ValueTracking/pr24866.ll
deleted file mode 100644
index b146b4ac056..00000000000
--- a/llvm/test/Analysis/ValueTracking/pr24866.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; RUN: opt -S %s -value-tracking-dom-conditions -licm -load-combine | FileCheck %s
-; In pr24866.ll, we saw a crash when accessing a nullptr returned when
-; asking for a dominator tree Node. This reproducer is really fragile,
-; but it's currently the best we have.
-
-%struct.c_derived_tbl.2.5.8.11.14.17.23.38.59.80.92.98.104.107.155.183 = type { [256 x i32], [256 x i8] }
-
-
-; Function Attrs: nounwind uwtable
-define void @encode_one_blockX2(%struct.c_derived_tbl.2.5.8.11.14.17.23.38.59.80.92.98.104.107.155.183* nocapture readonly %actbl) #0 {
-; CHECK-LABEL: @encode_one_blockX2
-entry:
- br i1 false, label %L_KLOOP_01, label %L_KLOOP.preheader
-
-L_KLOOP_01: ; preds = %while.end, %entry
- br label %L_KLOOP.preheader
-
-L_KLOOP_08: ; preds = %while.end
- br label %L_KLOOP.preheader
-
-L_KLOOP.preheader: ; preds = %L_KLOOP_08, %L_KLOOP_01, %entry
- %r.2.ph = phi i32 [ undef, %L_KLOOP_08 ], [ 0, %entry ], [ undef, %L_KLOOP_01 ]
- br label %L_KLOOP
-
-L_KLOOP: ; preds = %while.end, %L_KLOOP.preheader
- %r.2 = phi i32 [ 0, %while.end ], [ %r.2.ph, %L_KLOOP.preheader ]
- br i1 true, label %while.body, label %while.end
-
-while.body: ; preds = %while.body, %L_KLOOP
- br label %while.body
-
-while.end: ; preds = %L_KLOOP
- %shl105 = shl i32 %r.2, 4
- %add106 = add nsw i32 %shl105, undef
- %idxprom107 = sext i32 %add106 to i64
- %arrayidx108 = getelementptr inbounds %struct.c_derived_tbl.2.5.8.11.14.17.23.38.59.80.92.98.104.107.155.183, %struct.c_derived_tbl.2.5.8.11.14.17.23.38.59.80.92.98.104.107.155.183* %actbl, i64 0, i32 0, i64 %idxprom107
- %0 = load i32, i32* %arrayidx108, align 4
- %arrayidx110 = getelementptr inbounds %struct.c_derived_tbl.2.5.8.11.14.17.23.38.59.80.92.98.104.107.155.183, %struct.c_derived_tbl.2.5.8.11.14.17.23.38.59.80.92.98.104.107.155.183* %actbl, i64 0, i32 1, i64 %idxprom107
- %1 = load i8, i8* %arrayidx110, align 1
- indirectbr i8* undef, [label %L_KLOOP_DONE, label %L_KLOOP_01, label %L_KLOOP_08, label %L_KLOOP]
-
-L_KLOOP_DONE: ; preds = %while.end
- ret void
-}
diff --git a/llvm/test/Transforms/InstCombine/dom-conditions.ll b/llvm/test/Transforms/InstCombine/dom-conditions.ll
deleted file mode 100644
index 42640435268..00000000000
--- a/llvm/test/Transforms/InstCombine/dom-conditions.ll
+++ /dev/null
@@ -1,152 +0,0 @@
-; RUN: opt -instcombine -value-tracking-dom-conditions=1 -S < %s | FileCheck %s
-
-target datalayout = "e-p:64:64:64-p1:16:16:16-p2:32:32:32-p3:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
-
-define i1 @test_cmp_ult(i64 %A) {
-; CHECK-LABEL: @test_cmp_ult
-entry:
- %cmp = icmp ult i64 %A, 64
- br i1 %cmp, label %taken, label %untaken
-
-taken:
-; CHECK-LABEL: taken:
-; CHECK-NEXT: ret i1 false
- %cmp2 = icmp ugt i64 %A, 64
- ret i1 %cmp2
-untaken:
- ret i1 true
-}
-
-define i1 @test_cmp_ule(i64 %A) {
-; CHECK-LABEL: @test_cmp_ule
-entry:
- %cmp = icmp ule i64 %A, 64
- br i1 %cmp, label %taken, label %untaken
-
-taken:
-; CHECK-LABEL: taken:
-; CHECK-NEXT: ret i1 false
- %cmp2 = icmp ugt i64 %A, 128
- ret i1 %cmp2
-untaken:
- ret i1 true
-}
-
-define i1 @test_cmp_sgt(i32 %A) {
-; CHECK-LABEL: @test_cmp_sgt
-entry:
- %cmp = icmp sgt i32 %A, 10
- br i1 %cmp, label %taken, label %untaken
-
-taken:
-; CHECK-LABEL: taken:
-; CHECK-NEXT: ret i1 true
- %cmp2 = icmp sgt i32 %A, -1
- ret i1 %cmp2
-untaken:
- ret i1 true
-}
-
-define i64 @test_add_zero_bits(i64 %A) {
-; CHECK-LABEL: @test_add_zero_bits
-entry:
- %cmp = icmp eq i64 %A, 2
- br i1 %cmp, label %taken, label %untaken
-
-taken:
-; CHECK-LABEL: taken:
-; CHECK-NEXT: ret i64 3
- %add = add i64 %A, 1
- ret i64 %add
-untaken:
- ret i64 %A
-}
-
-define i64 @test_add_nsw(i64 %A) {
-; CHECK-LABEL: @test_add_nsw
-entry:
- %cmp = icmp ult i64 %A, 20
- br i1 %cmp, label %taken, label %untaken
-
-taken:
-; CHECK-LABEL: taken:
-; CHECK-NEXT: %add = add nuw nsw i64 %A, 1
-; CHECK-NEXT: ret i64 %add
- %add = add i64 %A, 1
- ret i64 %add
-untaken:
- ret i64 %A
-}
-
-; After sinking the instructions into the if block, check that we
-; can simplify some of them using dominating conditions.
-define i32 @test_add_zero_bits_sink(i32 %x) nounwind ssp {
-; CHECK-LABEL: @test_add_zero_bits_sink(
-; CHECK-NOT: sdiv i32
-entry:
- %a = add nsw i32 %x, 16
- %b = sdiv i32 %a, %x
- %cmp = icmp ult i32 %x, 7
- br i1 %cmp, label %bb1, label %bb2
-
-bb1:
-; CHECK-LABEL: bb1:
-; CHECK-NEXT: or i32 %x, 16
-; CHECK-NEXT: udiv i32
- ret i32 %b
-
-bb2:
- ret i32 %x
-}
-
-; A condition in the same block gives no information
-define i32 @test_neg1(i32 %x) nounwind ssp {
-; CHECK-LABEL: @test_neg1
-; CHECK: add
-; CHECK: sdiv
-; CHECK: icmp
-; CHECK: select
-entry:
- %a = add nsw i32 %x, 16
- %b = sdiv i32 %a, %x
- %cmp = icmp ult i32 %x, 7
- %ret = select i1 %cmp, i32 %a, i32 %b
- ret i32 %ret
-}
-
-; A non-dominating edge gives no information
-define i32 @test_neg2(i32 %x) {
-; CHECK-LABEL: @test_neg2
-entry:
- %cmp = icmp ult i32 %x, 7
- br i1 %cmp, label %bb1, label %merge
-
-bb1:
- br label %merge
-
-merge:
-; CHECK-LABEL: merge:
-; CHECK: icmp
-; CHECK: select
- %cmp2 = icmp ult i32 %x, 7
- %ret = select i1 %cmp2, i32 %x, i32 0
- ret i32 %ret
-}
-
-; A unconditional branch expressed as a condition one gives no
-; information (and shouldn't trip any asserts.)
-define i32 @test_neg3(i32 %x) {
-; CHECK-LABEL: @test_neg3
-entry:
- %cmp = icmp ult i32 %x, 7
- br i1 %cmp, label %merge, label %merge
-merge:
-; CHECK-LABEL: merge:
-; CHECK: icmp
-; CHECK: select
- %cmp2 = icmp ult i32 %x, 7
- %ret = select i1 %cmp2, i32 %x, i32 0
- ret i32 %ret
-}
-
-declare i32 @bar()
diff --git a/llvm/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/value-tracking-domtree.ll b/llvm/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/value-tracking-domtree.ll
deleted file mode 100644
index 601ca529135..00000000000
--- a/llvm/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/value-tracking-domtree.ll
+++ /dev/null
@@ -1,33 +0,0 @@
-; RUN: opt < %s -separate-const-offset-from-gep -value-tracking-dom-conditions -reassociate-geps-verify-no-dead-code -S | FileCheck %s
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "nvptx64-unknown-unknown"
-
-; if (i == 4)
-; p = &input[i | 3];
-;
-; =>
-;
-; if (i == 4) {
-; base = &input[i];
-; p = &base[3];
-; }
-;
-; We should treat (i | 3) as (i + 3) because i is guaranteed to be 4, which
-; does not share any set bits with 3.
-define float* @guarded_or(float* %input, i64 %i) {
-; CHECK-LABEL: @guarded_or(
-entry:
- %is4 = icmp eq i64 %i, 4
- br i1 %is4, label %then, label %exit
-
-then:
- %or = or i64 %i, 3
- %p = getelementptr inbounds float, float* %input, i64 %or
-; CHECK: [[base:[^ ]+]] = getelementptr float, float* %input, i64 %i
-; CHECK: getelementptr inbounds float, float* [[base]], i64 3
- ret float* %p
-
-exit:
- ret float* null
-}
OpenPOWER on IntegriCloud