From 655a4570cd8fb20c2821276695866b47d80a8251 Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Sun, 30 Aug 2015 17:32:39 +0000 Subject: [PATCH] createScalarInitialization: Always store PHI-node value The current code really tries hard to use getNewScalarValue(), which checks if not the original value, but a possible copy or demoted value needs to be stored. In this calling context it seems, that we _always_ use the ScalarValue that comes from the incoming PHI node, but never any other value. As also no test cases fail, it seems right to just drop this call to getNewScalarValue and remove the parameters that are not needed any more. Johannes suggested that code like this might be needed for parallel code generation with offloading, but it was still unclear if/what exactly would be needed. As the parallel code generation does currently not support scalars at all, we will remove this code for now and add relevant code back when complitng the support of scalars in the parallel code generation. Reviewers: jdoerfert Subscribers: pollydev, llvm-commits Differential Revision: http://reviews.llvm.org/D12470 llvm-svn: 246389 --- polly/include/polly/CodeGen/BlockGenerators.h | 6 +++--- polly/include/polly/CodeGen/IslNodeBuilder.h | 2 +- polly/lib/CodeGen/BlockGenerators.cpp | 10 +++------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/polly/include/polly/CodeGen/BlockGenerators.h b/polly/include/polly/CodeGen/BlockGenerators.h index a27c84ec0216..9d4374bcd83f 100644 --- a/polly/include/polly/CodeGen/BlockGenerators.h +++ b/polly/include/polly/CodeGen/BlockGenerators.h @@ -147,9 +147,9 @@ public: /// This will initialize and finalize the scalar variables we demoted during /// the code generation. /// - /// @see createScalarInitialization(Region &, ValueMapT &) + /// @see createScalarInitialization(Region &) /// @see createScalarFinalization(Region &) - void finalizeSCoP(Scop &S, ValueMapT &VMap); + void finalizeSCoP(Scop &S); /// @brief An empty destructor virtual ~BlockGenerator(){}; @@ -387,7 +387,7 @@ protected: /// the SCoP we need to initialize the memory cell we demoted the PHI into /// with the value corresponding to that predecessor. As a SCoP is a /// __single__ entry region there is at most one such predecessor. - void createScalarInitialization(Region &R, ValueMapT &VMap); + void createScalarInitialization(Region &R); /// @brief Promote the values of demoted scalars after the SCoP. /// diff --git a/polly/include/polly/CodeGen/IslNodeBuilder.h b/polly/include/polly/CodeGen/IslNodeBuilder.h index 70487000dffe..f8cdf782942d 100644 --- a/polly/include/polly/CodeGen/IslNodeBuilder.h +++ b/polly/include/polly/CodeGen/IslNodeBuilder.h @@ -44,7 +44,7 @@ public: /// @brief Finalize code generation for the SCoP @p S. /// /// @see BlockGenerator::finalizeSCoP(Scop &S) - void finalizeSCoP(Scop &S) { BlockGen.finalizeSCoP(S, ValueMap); } + void finalizeSCoP(Scop &S) { BlockGen.finalizeSCoP(S); } IslExprBuilder &getExprBuilder() { return ExprBuilder; } diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp index b87c53a8b78f..9f64fdd35995 100644 --- a/polly/lib/CodeGen/BlockGenerators.cpp +++ b/polly/lib/CodeGen/BlockGenerators.cpp @@ -466,8 +466,7 @@ void BlockGenerator::generateScalarStores(ScopStmt &Stmt, BasicBlock *BB, } } -void BlockGenerator::createScalarInitialization(Region &R, - ValueMapT &GlobalMap) { +void BlockGenerator::createScalarInitialization(Region &R) { // The split block __just before__ the region and optimized region. BasicBlock *SplitBB = R.getEnteringBlock(); BranchInst *SplitBBTerm = cast(SplitBB->getTerminator()); @@ -482,7 +481,6 @@ void BlockGenerator::createScalarInitialization(Region &R, // value prior to entering the optimized region. Builder.SetInsertPoint(StartBB->getTerminator()); - ScalarAllocaMapTy EmptyMap; for (const auto &PHIOpMapping : PHIOpMap) { const PHINode *PHI = cast(PHIOpMapping.getFirst()); @@ -493,8 +491,6 @@ void BlockGenerator::createScalarInitialization(Region &R, continue; Value *ScalarValue = PHI->getIncomingValue(idx); - ScalarValue = - getNewScalarValue(ScalarValue, R, EmptyMap, GlobalMap, GlobalMap); // If the split block is the predecessor initialize the PHI operator alloca. Builder.CreateStore(ScalarValue, PHIOpMapping.getSecond()); @@ -545,8 +541,8 @@ void BlockGenerator::createScalarFinalization(Region &R) { } } -void BlockGenerator::finalizeSCoP(Scop &S, ValueMapT &GlobalMap) { - createScalarInitialization(S.getRegion(), GlobalMap); +void BlockGenerator::finalizeSCoP(Scop &S) { + createScalarInitialization(S.getRegion()); createScalarFinalization(S.getRegion()); }