summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2015-10-16 15:17:26 +0000
committerMichael Kruse <llvm@meinersbur.de>2015-10-16 15:17:26 +0000
commite71893d58070b08f4dcc102c1c3af52f31fe4012 (patch)
tree25af39c7977e222e68aba9a665a8854b77cfead2
parentaeceab770e12a1782de37a970f7644cf94e6ea3e (diff)
downloadbcm5719-llvm-e71893d58070b08f4dcc102c1c3af52f31fe4012.tar.gz
bcm5719-llvm-e71893d58070b08f4dcc102c1c3af52f31fe4012.zip
Add testcase for r250517
llvm-svn: 250518
-rw-r--r--polly/test/ScopInfo/exit_phi_accesses.ll44
1 files changed, 44 insertions, 0 deletions
diff --git a/polly/test/ScopInfo/exit_phi_accesses.ll b/polly/test/ScopInfo/exit_phi_accesses.ll
new file mode 100644
index 00000000000..e4eb7f59903
--- /dev/null
+++ b/polly/test/ScopInfo/exit_phi_accesses.ll
@@ -0,0 +1,44 @@
+; RUN: opt %loadPolly -analyze -polly-scops %s | FileCheck %s
+
+; Check that PHI nodes only create PHI access and nothing else (e.g. unnecessary
+; SCALAR accesses)In this case, for a PHI in the exit node, hence there is no
+; PHI ReadAccess.
+
+; CHECK-LABEL: Function: foo
+; CHECK: Statements {
+; CHECK-NEXT: Stmt_header
+; CHECK-NEXT: Domain :=
+; CHECK-NEXT: { Stmt_header[] };
+; CHECK-NEXT: Schedule :=
+; CHECK-NEXT: { Stmt_header[] -> [0, 0] };
+; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1]
+; CHECK-NEXT: { Stmt_header[] -> MemRef_phi[] };
+; CHECK-NEXT: Stmt_body
+; CHECK-NEXT: Domain :=
+; CHECK-NEXT: { Stmt_body[i0] : i0 <= 100 and i0 >= 0 };
+; CHECK-NEXT: Schedule :=
+; CHECK-NEXT: { Stmt_body[i0] -> [1, i0] };
+; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1]
+; CHECK-NEXT: { Stmt_body[i0] -> MemRef_phi[] };
+; CHECK-NEXT: }
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+define float @foo(float %sum, float* %A) {
+entry:
+ br label %header
+
+header:
+ br i1 true, label %body, label %exit
+
+body:
+ %i = phi i64 [ 0, %header ], [ %next, %body ]
+ %scalar = fadd float 0.0, 0.0
+ %next = add nuw nsw i64 %i, 1
+ %cond = icmp ne i64 %i, 100
+ br i1 %cond, label %body, label %exit
+
+exit:
+ %phi = phi float [%scalar, %body], [0.0, %header]
+ ret float %phi
+}
OpenPOWER on IntegriCloud