[polly] r252449 - Revert "Fix non-affine generated entering node not being recognized as dominating"
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 8 22:04:05 PST 2015
Author: jdoerfert
Date: Mon Nov 9 00:04:05 2015
New Revision: 252449
URL: http://llvm.org/viewvc/llvm-project?rev=252449&view=rev
Log:
Revert "Fix non-affine generated entering node not being recognized as dominating"
This reverts commit 9775824b265e574fc541e975d64d3e270243b59d due to a
failing unit test.
Please check and correct the unit test and commit again.
Removed:
polly/trunk/test/Isl/CodeGen/non-affine-dominance-generated-entering.ll
Modified:
polly/trunk/lib/CodeGen/BlockGenerators.cpp
Modified: polly/trunk/lib/CodeGen/BlockGenerators.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/BlockGenerators.cpp?rev=252449&r1=252448&r2=252449&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/BlockGenerators.cpp (original)
+++ polly/trunk/lib/CodeGen/BlockGenerators.cpp Mon Nov 9 00:04:05 2015
@@ -1031,8 +1031,7 @@ void RegionGenerator::copyStmt(ScopStmt
EntryBBCopy->setName("polly.stmt." + EntryBB->getName() + ".entry");
Builder.SetInsertPoint(&EntryBBCopy->front());
- ValueMapT &EntryBBMap = RegionMaps[EntryBBCopy];
- generateScalarLoads(Stmt, EntryBBMap);
+ generateScalarLoads(Stmt, RegionMaps[EntryBBCopy]);
for (auto PI = pred_begin(EntryBB), PE = pred_end(EntryBB); PI != PE; ++PI)
if (!R->contains(*PI))
@@ -1055,18 +1054,11 @@ void RegionGenerator::copyStmt(ScopStmt
// In order to remap PHI nodes we store also basic block mappings.
BlockMap[BB] = BBCopy;
- // Get the mapping for this block and initialize it with either the scalar
- // loads from the generated entering block (which dominates all blocks of
- // this subregion) or the maps of the immediate dominator, if part of the
- // subregion. The latter necessarily includes the former.
- ValueMapT *InitBBMap;
- if (BBCopyIDom) {
- assert(RegionMaps.count(BBCopyIDom));
- InitBBMap = &RegionMaps[BBCopyIDom];
- } else
- InitBBMap = &EntryBBMap;
- auto Inserted = RegionMaps.insert(std::make_pair(BBCopy, *InitBBMap));
- ValueMapT &RegionMap = Inserted.first->second;
+ // Get the mapping for this block and initialize it with the mapping
+ // available at its immediate dominator (in the new region).
+ ValueMapT &RegionMap = RegionMaps[BBCopy];
+ if (BBCopy != EntryBBCopy)
+ RegionMap = RegionMaps[BBCopyIDom];
// Copy the block with the BlockGenerator.
Builder.SetInsertPoint(&BBCopy->front());
Removed: polly/trunk/test/Isl/CodeGen/non-affine-dominance-generated-entering.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/non-affine-dominance-generated-entering.ll?rev=252448&view=auto
==============================================================================
--- polly/trunk/test/Isl/CodeGen/non-affine-dominance-generated-entering.ll (original)
+++ polly/trunk/test/Isl/CodeGen/non-affine-dominance-generated-entering.ll (removed)
@@ -1,44 +0,0 @@
-; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
-;
-; llvm.org/PR25439
-; Scalar reloads in the generated entering block were not recognized as
-; dominating the subregion blocks when there were multiple entering nodes. This
-; resulted in values defined in there (here: %cond used in subregionB_entry) not
-; being copied. We check whether it is reusing the reloaded scalar.
-;
-; CHECK-LABEL: polly.stmt.subregionB_entry.exit:
-; CHECK: store i1 %polly.cond, i1* %cond.s2a
-;
-; CHECK-LABEL: polly.stmt.subregionB_entry.entry:
-; CHECK: %cond.s2a.reload = load i1, i1* %cond.s2a
-;
-; CHECK-LABEL: polly.stmt.subregionB_entry:
-; CHECK: br i1 %cond.s2a.reload
-
-define void @func(i32* %A) {
-entry:
- br label %subregionA_entry
-
-subregionA_entry:
- %cond = phi i1 [ false, %entry ], [ true, %subregionB_exit ]
- br i1 %cond, label %subregionA_if, label %subregionA_else
-
-subregionA_if:
- br label %subregionB_entry
-
-subregionA_else:
- br label %subregionB_entry
-
-subregionB_entry:
- store i32 0, i32* %A
- br i1 %cond, label %subregionB_if, label %subregionB_exit
-
-subregionB_if:
- br label %subregionB_exit
-
-subregionB_exit:
- br i1 false, label %subregionA_entry, label %return
-
-return:
- ret void
-}
More information about the llvm-commits
mailing list