summaryrefslogtreecommitdiffstats
path: root/polly/test/Simplify
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2017-07-27 14:09:31 +0000
committerMichael Kruse <llvm@meinersbur.de>2017-07-27 14:09:31 +0000
commit8a8aca42997bcb09853d716c2778d010e52a009e (patch)
treea352f9523d1f277587a090f48c9e51559a025898 /polly/test/Simplify
parent88202be1f067578fe904cc38785b8e726523d7cf (diff)
downloadbcm5719-llvm-8a8aca42997bcb09853d716c2778d010e52a009e.tar.gz
bcm5719-llvm-8a8aca42997bcb09853d716c2778d010e52a009e.zip
[Simplify] Count PHINodes in simplifiable exit nodes as escaping use.
After region exit simplification, the incoming block of a phi node in the SCoP region's exit block lands outside of the region. Since we treat SCoPs as if this already happened, we need to account for that when looking for outside uses of scalars (i.e. escaping scalars). llvm-svn: 309271
Diffstat (limited to 'polly/test/Simplify')
-rw-r--r--polly/test/Simplify/exit_phi_accesses-2.ll37
1 files changed, 37 insertions, 0 deletions
diff --git a/polly/test/Simplify/exit_phi_accesses-2.ll b/polly/test/Simplify/exit_phi_accesses-2.ll
new file mode 100644
index 00000000000..fde3d01d9a2
--- /dev/null
+++ b/polly/test/Simplify/exit_phi_accesses-2.ll
@@ -0,0 +1,37 @@
+; RUN: opt %loadPolly -polly-scops -polly-simplify -analyze < %s | FileCheck %s
+;
+; The use of %sum.next by %phi counts as an escaping use.
+; Don't remove the scalar write of %sum.next.
+;
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+define float @foo(float* %A) {
+entry:
+ br label %header
+
+header:
+ fence seq_cst
+ br i1 true, label %body, label %exit
+
+body:
+ %i = phi i64 [ 0, %header ], [ %next, %body ]
+ %sum = phi float [ 0.0, %header ], [ %sum.next, %body ]
+ %arrayidx = getelementptr float, float* %A, i64 %i
+ %next = add nuw nsw i64 %i, 1
+ %val = load float, float* %arrayidx
+ %sum.next = fadd float %sum, %val
+ %cond = icmp ne i64 %i, 100
+ br i1 %cond, label %body, label %after
+
+after:
+ br label %exit
+
+exit:
+ %phi = phi float [%sum.next, %after], [0.0, %header]
+ ret float %phi
+}
+
+
+; CHECK: Statistics {
+; CHECK: Dead accesses removed: 0
+; CHECK: }
OpenPOWER on IntegriCloud