summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis
diff options
context:
space:
mode:
authorMehdi Amini <mehdi.amini@apple.com>2015-10-06 17:19:20 +0000
committerMehdi Amini <mehdi.amini@apple.com>2015-10-06 17:19:20 +0000
commitcf2513b352f846589051f01d1825df4e13cb529e (patch)
tree83890c5e48ccfa570e9d12c9a9d14aa67a185a0b /llvm/test/Analysis
parentb92b47c6fffa36a87e8d1b99b2c8afb6e54fdf4b (diff)
downloadbcm5719-llvm-cf2513b352f846589051f01d1825df4e13cb529e.tar.gz
bcm5719-llvm-cf2513b352f846589051f01d1825df4e13cb529e.zip
This patch builds on top of D13378 to handle constant condition.
With this patch, clang -O3 optimizes correctly providing > 1000x speedup on this artificial benchmark): for (a=0; a<n; a++) for (b=0; b<n; b++) for (c=0; c<n; c++) for (d=0; d<n; d++) for (e=0; e<n; e++) for (f=0; f<n; f++) x++; From test-suite/SingleSource/Benchmarks/Shootout/nestedloop.c Reviewers: sanjoyd Differential Revision: http://reviews.llvm.org/D13390 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 249431
Diffstat (limited to 'llvm/test/Analysis')
-rw-r--r--llvm/test/Analysis/ScalarEvolution/constant_condition.ll51
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/test/Analysis/ScalarEvolution/constant_condition.ll b/llvm/test/Analysis/ScalarEvolution/constant_condition.ll
new file mode 100644
index 00000000000..32ab91b2c85
--- /dev/null
+++ b/llvm/test/Analysis/ScalarEvolution/constant_condition.ll
@@ -0,0 +1,51 @@
+; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
+
+define i32 @branch_true(i32 %x, i32 %y) {
+; CHECK-LABEL: Classifying expressions for: @branch_true
+ entry:
+ br i1 true, label %add, label %merge
+
+ add:
+ %sum = add i32 %x, %y
+ br label %merge
+
+ merge:
+ %v = phi i32 [ %sum, %add ], [ %x, %entry ]
+; CHECK: %v = phi i32 [ %sum, %add ], [ %x, %entry ]
+; CHECK-NEXT: --> (%x + %y) U: full-set S: full-set
+ ret i32 %v
+}
+
+define i32 @branch_false(i32 %x, i32 %y) {
+; CHECK-LABEL: Classifying expressions for: @branch_false
+ entry:
+ br i1 false, label %add, label %merge
+
+ add:
+ %sum = add i32 %x, %y
+ br label %merge
+
+ merge:
+ %v = phi i32 [ %sum, %add ], [ %x, %entry ]
+; CHECK: %v = phi i32 [ %sum, %add ], [ %x, %entry ]
+; CHECK-NEXT: --> %x U: full-set S: full-set
+ ret i32 %v
+}
+
+define i32 @select_true(i32 %x, i32 %y) {
+; CHECK-LABEL: Classifying expressions for: @select_true
+ entry:
+ %v = select i1 true, i32 %x, i32 %y
+; CHECK: %v = select i1 true, i32 %x, i32 %y
+; CHECK-NEXT: --> %x U: full-set S: full-set
+ ret i32 %v
+}
+
+define i32 @select_false(i32 %x, i32 %y) {
+; CHECK-LABEL: Classifying expressions for: @select_false
+ entry:
+ %v = select i1 false, i32 %x, i32 %y
+; CHECK: %v = select i1 false, i32 %x, i32 %y
+; CHECK-NEXT: --> %y U: full-set S: full-set
+ ret i32 %v
+}
OpenPOWER on IntegriCloud