[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