summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Grosser <tobias@grosser.es>2016-08-09 15:34:59 +0000
committerTobias Grosser <tobias@grosser.es>2016-08-09 15:34:59 +0000
commit776700d0b7cfa67e99d07af5cd9adf0ae7846fff (patch)
tree2dfeb3c250f7cd6710fbdeb35858895f10a43579
parent8cef2c2f2dd94e9e8aa84f254bf3efdbf216cd03 (diff)
downloadbcm5719-llvm-776700d0b7cfa67e99d07af5cd9adf0ae7846fff.tar.gz
bcm5719-llvm-776700d0b7cfa67e99d07af5cd9adf0ae7846fff.zip
[BlockGenerator] Insert initializations at beginning of start block
In case some code -- not guarded by control flow -- would be emitted directly in the start block, it may happen that this code would use uninitalized scalar values if the scalar initialization is only emitted at the end of the start block. This is not a problem today in normal Polly, as all statements are emitted in their own basic blocks, but Polly-ACC emits host-to-device copy statements into the start block. Additional Polly-ACC test coverage will be added in subsequent changes that improve the handling of PHI nodes in Polly-ACC. llvm-svn: 278124
-rw-r--r--polly/lib/CodeGen/BlockGenerators.cpp2
-rw-r--r--polly/test/Isl/CodeGen/phi_loop_carried_float.ll2
-rw-r--r--polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll2
-rw-r--r--polly/test/Isl/CodeGen/phi_scalar_simple_2.ll2
4 files changed, 4 insertions, 4 deletions
diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp
index c5758fb7013..982d7e7546f 100644
--- a/polly/lib/CodeGen/BlockGenerators.cpp
+++ b/polly/lib/CodeGen/BlockGenerators.cpp
@@ -484,7 +484,7 @@ void BlockGenerator::createScalarInitialization(Scop &S) {
if (StartBB == S.getEntry())
StartBB = SplitBBTerm->getSuccessor(1);
- Builder.SetInsertPoint(StartBB->getTerminator());
+ Builder.SetInsertPoint(&*StartBB->begin());
for (auto &Array : S.arrays()) {
if (Array->getNumberOfDimensions() != 0)
diff --git a/polly/test/Isl/CodeGen/phi_loop_carried_float.ll b/polly/test/Isl/CodeGen/phi_loop_carried_float.ll
index cfcdb58d7df..ff86e388149 100644
--- a/polly/test/Isl/CodeGen/phi_loop_carried_float.ll
+++ b/polly/test/Isl/CodeGen/phi_loop_carried_float.ll
@@ -17,8 +17,8 @@
; CHECK-NEXT: ret
; CHECK-LABEL: polly.start:
-; CHECK-NEXT: sext
; CHECK-NEXT: store float 0.000000e+00, float* %tmp.0.phiops
+; CHECK-NEXT: sext
; CHECK-LABEL: polly.exiting:
; CHECK-NEXT: br label %polly.merge_new_and_old
diff --git a/polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll b/polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll
index cce111282e9..c039a0b1606 100644
--- a/polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll
+++ b/polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll
@@ -16,8 +16,8 @@
; CHECK-NEXT: br label %exit
; CHECK-LABEL: polly.start:
-; CHECK-NEXT: sext
; CHECK-NEXT: store float 0.000000e+00, float* %tmp.0.phiops
+; CHECK-NEXT: sext
; CHECK-LABEL: polly.exiting:
; CHECK-NEXT: %tmp.0.final_reload = load float, float* %tmp.0.s2a
diff --git a/polly/test/Isl/CodeGen/phi_scalar_simple_2.ll b/polly/test/Isl/CodeGen/phi_scalar_simple_2.ll
index f0812fea1f3..ad7ca3d7fc3 100644
--- a/polly/test/Isl/CodeGen/phi_scalar_simple_2.ll
+++ b/polly/test/Isl/CodeGen/phi_scalar_simple_2.ll
@@ -28,8 +28,8 @@ entry:
; CHECK: ret i32 %x.addr.0.merge
; CHECK-LABEL: polly.start:
-; CHECK-NEXT: sext
; CHECK-NEXT: store i32 %x, i32* %x.addr.0.phiops
+; CHECK-NEXT: sext
; CHECK-LABEL: polly.merge21:
; CHECK: %x.addr.0.final_reload = load i32, i32* %x.addr.0.s2a
OpenPOWER on IntegriCloud