summaryrefslogtreecommitdiffstats
path: root/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2015-10-17 21:36:00 +0000
committerMichael Kruse <llvm@meinersbur.de>2015-10-17 21:36:00 +0000
commit225f0d1ee2d333919e8df066460814115a8d82ec (patch)
tree39187fd2c19acf90b51f041f8376c4bfbbe8e7d7 /polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll
parentec15ea12e70279c2ef5e645945f2f07f41b56214 (diff)
downloadbcm5719-llvm-225f0d1ee2d333919e8df066460814115a8d82ec.tar.gz
bcm5719-llvm-225f0d1ee2d333919e8df066460814115a8d82ec.zip
Load/Store scalar accesses before/after the statement itself
Instead of generating implicit loads within basic blocks, put them before the instructions of the statment itself, including non-affine subregions. The region's entry node is dominating all blocks in the region and therefore the loaded value will be available there. Implicit writes in block-stmts were already stored back at the end of the block. Now, also generate the stores of non-affine subregions when leaving the statement, i.e. in the exiting block. This change is required for array-mapped implicits ("De-LICM") to ensure that there are no dependencies of demoted scalars within statments. Statement load all required values, operator on copied in registers, and then write back the changed value to the demoted memory. Lifetimes analysis within statements becomes unecessary. Differential Revision: http://reviews.llvm.org/D13487 llvm-svn: 250625
Diffstat (limited to 'polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll')
-rw-r--r--polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll2
1 files changed, 1 insertions, 1 deletions
diff --git a/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll b/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll
index 955d4346c95..2ad52d180e4 100644
--- a/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll
+++ b/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll
@@ -15,8 +15,8 @@ loop:
; CHECK-NEXT: %polly.subregion.iv = phi i32 [ 0, %polly.stmt.loop.entry ]
; CHECK-NEXT: %p_val0 = fadd float 1.000000e+00, 2.000000e+00
; CHECK-NEXT: %p_val1 = fadd float 1.000000e+00, 2.000000e+00
-; CHECK-NEXT: store float %p_val0, float* %merge.phiops
; CHECK-NEXT: %polly.subregion.iv.inc = add i32 %polly.subregion.iv, 1
+; CHECK-NEXT: store float %p_val0, float* %merge.phiops
; CHECK-NEXT: br i1
; The interesting instruction here is %val2, which does not dominate the exit of
OpenPOWER on IntegriCloud