[polly] r249132 - Earlier creation of ScopStmt objects

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 2 06:53:08 PDT 2015


Author: meinersbur
Date: Fri Oct  2 08:53:07 2015
New Revision: 249132

URL: http://llvm.org/viewvc/llvm-project?rev=249132&view=rev
Log:
Earlier creation of ScopStmt objects

This moves the construction of ScopStmt to the beginning of the 
ScopInfo pass. The late creation was a result of the earlier separation 
of ScopInfo and TempScopInfo. This will avoid introducing more 
ScopStmt-like maps in future commits. The AccFuncMap will also be 
removed in some future commit. DomainMap might also be included into 
ScopStmt.

The order in which ScopStmt are created changes and initially creates 
empty statements that are removed in a simplification.

Differential Revision: http://reviews.llvm.org/D13341

Modified:
    polly/trunk/include/polly/ScopInfo.h
    polly/trunk/lib/Analysis/ScopInfo.cpp
    polly/trunk/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
    polly/trunk/test/ScopInfo/cond_constant_in_loop.ll
    polly/trunk/test/ScopInfo/non_affine_region_1.ll
    polly/trunk/test/ScopInfo/non_affine_region_2.ll
    polly/trunk/test/ScopInfo/non_affine_region_3.ll
    polly/trunk/test/ScopInfo/non_affine_region_4.ll
    polly/trunk/test/ScopInfo/phi_condition_modeling_1.ll
    polly/trunk/test/ScopInfo/phi_condition_modeling_2.ll
    polly/trunk/test/ScopInfo/phi_conditional_simple_1.ll
    polly/trunk/test/ScopInfo/switch-1.ll
    polly/trunk/test/ScopInfo/switch-2.ll
    polly/trunk/test/ScopInfo/switch-3.ll
    polly/trunk/test/ScopInfo/switch-4.ll
    polly/trunk/test/ScopInfo/switch-6.ll
    polly/trunk/test/ScopInfo/switch-7.ll

Modified: polly/trunk/include/polly/ScopInfo.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/ScopInfo.h?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/include/polly/ScopInfo.h (original)
+++ polly/trunk/include/polly/ScopInfo.h Fri Oct  2 08:53:07 2015
@@ -473,8 +473,6 @@ private:
   /// @brief Is this MemoryAccess modeling special PHI node accesses?
   bool isPHI() const { return Origin == PHI; }
 
-  void setStatement(ScopStmt *Stmt) { this->Statement = Stmt; }
-
   __isl_give isl_basic_map *createBasicAccessMap(ScopStmt *Statement);
 
   void assumeNoOutOfBound();
@@ -535,6 +533,7 @@ private:
 public:
   /// @brief Create a new MemoryAccess.
   ///
+  /// @param Stmt       The parent statement.
   /// @param AccessInst The instruction doing the access.
   /// @param Id         Identifier that is guranteed to be unique within the
   ///                   same ScopStmt.
@@ -546,10 +545,11 @@ public:
   /// @param Subscripts Subscipt expressions
   /// @param Sizes      Dimension lengths of the accessed array.
   /// @param BaseName   Name of the acessed array.
-  MemoryAccess(Instruction *AccessInst, __isl_take isl_id *Id, AccessType Type,
-               Value *BaseAddress, unsigned ElemBytes, bool Affine,
-               ArrayRef<const SCEV *> Subscripts, ArrayRef<const SCEV *> Sizes,
-               Value *AccessValue, AccessOrigin Origin, StringRef BaseName);
+  MemoryAccess(ScopStmt *Stmt, Instruction *AccessInst, __isl_take isl_id *Id,
+               AccessType Type, Value *BaseAddress, unsigned ElemBytes,
+               bool Affine, ArrayRef<const SCEV *> Subscripts,
+               ArrayRef<const SCEV *> Sizes, Value *AccessValue,
+               AccessOrigin Origin, StringRef BaseName);
   ~MemoryAccess();
 
   /// @brief Get the type of a memory access.
@@ -721,6 +721,9 @@ public:
   /// Create an overapproximating ScopStmt for the region @p R.
   ScopStmt(Scop &parent, Region &R);
 
+  /// Initialize members after all MemoryAccesses have been added.
+  void init();
+
 private:
   /// Polyhedral description
   //@{
@@ -789,14 +792,8 @@ private:
   /// @brief Fill NestLoops with loops surrounding this statement.
   void collectSurroundingLoops();
 
-  /// @brief Create the accesses for instructions in @p Block.
-  ///
-  /// @param Block          The basic block for which accesses should be
-  ///                       created.
-  /// @param isApproximated Flag to indicate blocks that might not be executed,
-  ///                       hence for which write accesses need to be modeled as
-  ///                       may-write accesses.
-  void buildAccesses(BasicBlock *Block, bool isApproximated = false);
+  /// @brief Build the access relation of all memory accesses.
+  void buildAccessRelations();
 
   /// @brief Detect and mark reductions in the ScopStmt
   void checkForReductions();
@@ -925,6 +922,9 @@ public:
     BB = Block;
   }
 
+  /// @brief Add @p Access to this statement's list of accesses.
+  void addAccess(MemoryAccess *Access);
+
   /// @brief Move the memory access in @p InvMAs to @p TargetList.
   ///
   /// Note that scalar accesses that are caused by any access in @p InvMAs will
@@ -1207,8 +1207,10 @@ private:
   /// @brief Simplify the SCoP representation
   ///
   /// At the moment we perform the following simplifications:
-  ///   - removal of empty statements (due to invariant load hoisting)
-  void simplifySCoP();
+  ///   - removal of no-op statements
+  /// @param RemoveIgnoredStmts If true, also removed ignored statments.
+  /// @see isIgnored()
+  void simplifySCoP(bool RemoveIgnoredStmts);
 
   /// @brief Hoist all invariant memory loads.
   void hoistInvariantLoads();
@@ -1590,6 +1592,13 @@ class ScopInfo : public RegionPass {
   Scop *scop;
   isl_ctx *ctx;
 
+  /// @brief Return the SCoP region that is currently processed.
+  Region *getRegion() const {
+    if (!scop)
+      return nullptr;
+    return &scop->getRegion();
+  }
+
   // Clear the context.
   void clear();
 
@@ -1632,6 +1641,12 @@ class ScopInfo : public RegionPass {
   /// @param SR A subregion of @p R.
   void buildAccessFunctions(Region &R, Region &SR);
 
+  /// @brief Create ScopStmt for all BBs and non-affine subregions of @p SR.
+  ///
+  /// Some of the statments might be optimized away later when they do not
+  /// access any memory and thus have no effect.
+  void buildStmts(Region &SR);
+
   /// @brief Build the access functions for the basic block @p BB
   ///
   /// @param R                  The SCoP region.

Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Fri Oct  2 08:53:07 2015
@@ -645,16 +645,16 @@ void MemoryAccess::buildAccessRelation(c
   isl_space_free(Space);
 }
 
-MemoryAccess::MemoryAccess(Instruction *AccessInst, __isl_take isl_id *Id,
-                           AccessType Type, Value *BaseAddress,
-                           unsigned ElemBytes, bool Affine,
+MemoryAccess::MemoryAccess(ScopStmt *Stmt, Instruction *AccessInst,
+                           __isl_take isl_id *Id, AccessType Type,
+                           Value *BaseAddress, unsigned ElemBytes, bool Affine,
                            ArrayRef<const SCEV *> Subscripts,
                            ArrayRef<const SCEV *> Sizes, Value *AccessValue,
                            AccessOrigin Origin, StringRef BaseName)
-    : Id(Id), Origin(Origin), AccType(Type), RedType(RT_NONE),
-      Statement(nullptr), BaseAddr(BaseAddress), BaseName(BaseName),
-      ElemBytes(ElemBytes), Sizes(Sizes.begin(), Sizes.end()),
-      AccessInstruction(AccessInst), AccessValue(AccessValue), IsAffine(Affine),
+    : Id(Id), Origin(Origin), AccType(Type), RedType(RT_NONE), Statement(Stmt),
+      BaseAddr(BaseAddress), BaseName(BaseName), ElemBytes(ElemBytes),
+      Sizes(Sizes.begin(), Sizes.end()), AccessInstruction(AccessInst),
+      AccessValue(AccessValue), IsAffine(Affine),
       Subscripts(Subscripts.begin(), Subscripts.end()), AccessRelation(nullptr),
       NewAccessRelation(nullptr) {}
 
@@ -820,31 +820,27 @@ void ScopStmt::restrictDomain(__isl_take
   Domain = NewDomain;
 }
 
-void ScopStmt::buildAccesses(BasicBlock *Block, bool isApproximated) {
-  AccFuncSetType *AFS = Parent.getAccessFunctions(Block);
-  if (!AFS)
-    return;
-
-  for (auto &Access : *AFS) {
-    Instruction *AccessInst = Access.getAccessInstruction();
-    Type *ElementType = Access.getAccessValue()->getType();
+void ScopStmt::buildAccessRelations() {
+  for (MemoryAccess *Access : MemAccs) {
+    Type *ElementType = Access->getAccessValue()->getType();
 
     const ScopArrayInfo *SAI = getParent()->getOrCreateScopArrayInfo(
-        Access.getBaseAddr(), ElementType, Access.Sizes, Access.isPHI());
+        Access->getBaseAddr(), ElementType, Access->Sizes, Access->isPHI());
 
-    if (isApproximated && Access.isMustWrite())
-      Access.AccType = MemoryAccess::MAY_WRITE;
-
-    MemoryAccessList *&MAL = InstructionToAccess[AccessInst];
-    if (!MAL)
-      MAL = new MemoryAccessList();
-    Access.setStatement(this);
-    Access.buildAccessRelation(SAI);
-    MAL->emplace_front(&Access);
-    MemAccs.push_back(MAL->front());
+    Access->buildAccessRelation(SAI);
   }
 }
 
+void ScopStmt::addAccess(MemoryAccess *Access) {
+  Instruction *AccessInst = Access->getAccessInstruction();
+
+  MemoryAccessList *&MAL = InstructionToAccess[AccessInst];
+  if (!MAL)
+    MAL = new MemoryAccessList();
+  MAL->emplace_front(Access);
+  MemAccs.push_back(MAL->front());
+}
+
 void ScopStmt::realignParams() {
   for (MemoryAccess *MA : *this)
     MA->realignParams();
@@ -1134,31 +1130,32 @@ void ScopStmt::collectSurroundingLoops()
 }
 
 ScopStmt::ScopStmt(Scop &parent, Region &R)
-    : Parent(parent), BB(nullptr), R(&R), Build(nullptr) {
+    : Parent(parent), Domain(nullptr), BB(nullptr), R(&R), Build(nullptr) {
 
   BaseName = getIslCompatibleName("Stmt_", R.getNameStr(), "");
-
-  buildDomain();
-  collectSurroundingLoops();
-
-  BasicBlock *EntryBB = R.getEntry();
-  for (BasicBlock *Block : R.blocks()) {
-    buildAccesses(Block, Block != EntryBB);
-    deriveAssumptions(Block);
-  }
-  if (DetectReductions)
-    checkForReductions();
 }
 
 ScopStmt::ScopStmt(Scop &parent, BasicBlock &bb)
-    : Parent(parent), BB(&bb), R(nullptr), Build(nullptr) {
+    : Parent(parent), Domain(nullptr), BB(&bb), R(nullptr), Build(nullptr) {
 
   BaseName = getIslCompatibleName("Stmt_", &bb, "");
+}
+
+void ScopStmt::init() {
+  assert(!Domain && "init must be called only once");
 
   buildDomain();
   collectSurroundingLoops();
-  buildAccesses(BB);
-  deriveAssumptions(BB);
+  buildAccessRelations();
+
+  if (BB) {
+    deriveAssumptions(BB);
+  } else {
+    for (BasicBlock *Block : R->blocks()) {
+      deriveAssumptions(Block);
+    }
+  }
+
   if (DetectReductions)
     checkForReductions();
 }
@@ -2310,11 +2307,16 @@ Scop::Scop(Region &R, AccFuncMapType &Ac
 
 void Scop::init(LoopInfo &LI, AliasAnalysis &AA) {
   buildContext();
-
   buildDomains(&R, LI, DT);
 
-  DenseMap<Loop *, std::pair<isl_schedule *, unsigned>> LoopSchedules;
+  // Remove empty and ignored statements.
+  simplifySCoP(true);
+
+  // The ScopStmts now have enough information to initialize themselves.
+  for (ScopStmt &Stmt : Stmts)
+    Stmt.init();
 
+  DenseMap<Loop *, std::pair<isl_schedule *, unsigned>> LoopSchedules;
   Loop *L = getLoopSurroundingRegion(R, LI);
   LoopSchedules[L];
   buildSchedule(&R, LI, LoopSchedules);
@@ -2329,7 +2331,7 @@ void Scop::init(LoopInfo &LI, AliasAnaly
   buildAliasChecks(AA);
 
   hoistInvariantLoads();
-  simplifySCoP();
+  simplifySCoP(false);
 }
 
 Scop::~Scop() {
@@ -2363,23 +2365,26 @@ void Scop::updateAccessDimensionality()
       Access->updateDimensionality();
 }
 
-void Scop::simplifySCoP() {
-
+void Scop::simplifySCoP(bool RemoveIgnoredStmts) {
   for (auto StmtIt = Stmts.begin(), StmtEnd = Stmts.end(); StmtIt != StmtEnd;) {
     ScopStmt &Stmt = *StmtIt;
+    RegionNode *RN = Stmt.isRegionStmt()
+                         ? Stmt.getRegion()->getNode()
+                         : getRegion().getBBNode(Stmt.getBasicBlock());
+
+    if (StmtIt->isEmpty() || (RemoveIgnoredStmts && isIgnored(RN))) {
+      // Remove the statement because it is unnecessary.
+      if (Stmt.isRegionStmt())
+        for (BasicBlock *BB : Stmt.getRegion()->blocks())
+          StmtMap.erase(BB);
+      else
+        StmtMap.erase(Stmt.getBasicBlock());
 
-    if (!StmtIt->isEmpty()) {
-      StmtIt++;
+      StmtIt = Stmts.erase(StmtIt);
       continue;
     }
 
-    if (Stmt.isRegionStmt())
-      for (BasicBlock *BB : Stmt.getRegion()->blocks())
-        StmtMap.erase(BB);
-    else
-      StmtMap.erase(Stmt.getBasicBlock());
-
-    StmtIt = Stmts.erase(StmtIt);
+    StmtIt++;
   }
 }
 
@@ -2874,11 +2879,20 @@ void Scop::buildSchedule(
     DenseMap<Loop *, std::pair<isl_schedule *, unsigned>> &LoopSchedules) {
 
   if (SD.isNonAffineSubRegion(R, &getRegion())) {
-    auto *Stmt = addScopStmt(nullptr, R);
-    auto *UDomain = isl_union_set_from_set(Stmt->getDomain());
-    auto *StmtSchedule = isl_schedule_from_domain(UDomain);
     Loop *L = getLoopSurroundingRegion(*R, LI);
     auto &LSchedulePair = LoopSchedules[L];
+    ScopStmt *Stmt = getStmtForBasicBlock(R->getEntry());
+    isl_set *Domain;
+    if (Stmt) {
+      Domain = Stmt->getDomain();
+    } else {
+      // This case happens when the SCoP consists of only one non-affine region
+      // which doesn't contain any accesses and has hence been optimized away.
+      // We use a dummy domain for this case.
+      Domain = isl_set_empty(isl_space_set_alloc(IslCtx, 0, 0));
+    }
+    auto *UDomain = isl_union_set_from_set(Domain);
+    auto *StmtSchedule = isl_schedule_from_domain(UDomain);
     LSchedulePair.first = StmtSchedule;
     return;
   }
@@ -2899,14 +2913,9 @@ void Scop::buildSchedule(
     auto &LSchedulePair = LoopSchedules[L];
     LSchedulePair.second += getNumBlocksInRegionNode(RN);
 
-    if (!isIgnored(RN)) {
-
-      ScopStmt *Stmt;
-      if (RN->isSubRegion())
-        Stmt = addScopStmt(nullptr, RN->getNodeAs<Region>());
-      else
-        Stmt = addScopStmt(RN->getNodeAs<BasicBlock>(), nullptr);
-
+    BasicBlock *BB = getRegionNodeBasicBlock(RN);
+    ScopStmt *Stmt = getStmtForBasicBlock(BB);
+    if (Stmt) {
       auto *UDomain = isl_union_set_from_set(Stmt->getDomain());
       auto *StmtSchedule = isl_schedule_from_domain(UDomain);
       LSchedulePair.first =
@@ -3195,6 +3204,21 @@ void ScopInfo::buildAccessFunctions(Regi
       buildAccessFunctions(R, *I->getNodeAs<BasicBlock>());
 }
 
+void ScopInfo::buildStmts(Region &SR) {
+  Region *R = getRegion();
+
+  if (SD->isNonAffineSubRegion(&SR, R)) {
+    scop->addScopStmt(nullptr, &SR);
+    return;
+  }
+
+  for (auto I = SR.element_begin(), E = SR.element_end(); I != E; ++I)
+    if (I->isSubRegion())
+      buildStmts(*I->getNodeAs<Region>());
+    else
+      scop->addScopStmt(I->getNodeAs<BasicBlock>(), nullptr);
+}
+
 void ScopInfo::buildAccessFunctions(Region &R, BasicBlock &BB,
                                     Region *NonAffineSubRegion,
                                     bool IsExitBlock) {
@@ -3234,6 +3258,13 @@ void ScopInfo::addMemoryAccess(BasicBloc
                                ArrayRef<const SCEV *> Subscripts,
                                ArrayRef<const SCEV *> Sizes,
                                MemoryAccess::AccessOrigin Origin) {
+  ScopStmt *Stmt = scop->getStmtForBasicBlock(BB);
+
+  // Do not create a memory access for anything not in the SCoP. It would be
+  // ignored anyway.
+  if (!Stmt)
+    return;
+
   AccFuncSetType &AccList = AccFuncMap[BB];
   size_t Identifier = AccList.size();
 
@@ -3243,8 +3274,14 @@ void ScopInfo::addMemoryAccess(BasicBloc
   std::string IdName = "__polly_array_ref_" + std::to_string(Identifier);
   isl_id *Id = isl_id_alloc(ctx, IdName.c_str(), nullptr);
 
-  AccList.emplace_back(Inst, Id, Type, BaseAddress, ElemBytes, Affine,
+  bool isApproximated =
+      Stmt->isRegionStmt() && (Stmt->getRegion()->getEntry() != BB);
+  if (isApproximated && Type == MemoryAccess::MUST_WRITE)
+    Type = MemoryAccess::MAY_WRITE;
+
+  AccList.emplace_back(Stmt, Inst, Id, Type, BaseAddress, ElemBytes, Affine,
                        Subscripts, Sizes, AccessValue, Origin, BaseName);
+  Stmt->addAccess(&AccList.back());
 }
 
 void ScopInfo::addExplicitAccess(
@@ -3291,6 +3328,7 @@ void ScopInfo::buildScop(Region &R, Domi
   unsigned MaxLoopDepth = getMaxLoopDepthInRegion(R, *LI, *SD);
   scop = new Scop(R, AccFuncMap, *SD, *SE, DT, ctx, MaxLoopDepth);
 
+  buildStmts(R);
   buildAccessFunctions(R, R);
 
   // In case the region does not have an exiting block we will later (during

Modified: polly/trunk/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll (original)
+++ polly/trunk/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll Fri Oct  2 08:53:07 2015
@@ -27,10 +27,6 @@
 ; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> [i0, 1] };
 ; CHECK:            ReadAccess := [Reduction Type: NONE] [Scalar: 0]
 ; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_A[i0] };
-; CHECK:            ReadAccess := [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_j_0[] };
-; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_j_2__phi[] };
 ; CHECK:            ReadAccess := [Reduction Type: NONE] [Scalar: 0]
 ; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_A[i0] };
 ; CHECK:            MayWriteAccess := [Reduction Type: NONE] [Scalar: 0]
@@ -39,6 +35,10 @@
 ; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_smax[] };
 ; CHECK:            MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_j_2__phi[] };
+; CHECK:            ReadAccess := [Reduction Type: NONE] [Scalar: 1]
+; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_j_0[] };
+; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
+; CHECK:                [N] -> { Stmt_bb4__TO__bb18[i0] -> MemRef_j_2__phi[] };
 ; CHECK:      Stmt_bb18
 ; CHECK:            Schedule :=
 ; CHECK:                [N] -> { Stmt_bb18[i0] -> [i0, 2] };

Modified: polly/trunk/test/ScopInfo/cond_constant_in_loop.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/cond_constant_in_loop.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/cond_constant_in_loop.ll (original)
+++ polly/trunk/test/ScopInfo/cond_constant_in_loop.ll Fri Oct  2 08:53:07 2015
@@ -43,9 +43,9 @@ return:
   ret void
 }
 
-; CHECK: Stmt_bb2
-; CHECK:   Domain :=
-; CHECK:     [M, N] -> { Stmt_bb2[i0] : 1 = 0 };
 ; CHECK: Stmt_bb1
 ; CHECK:   Domain :=
 ; CHECK:     [M, N] -> { Stmt_bb1[i0] : i0 >= 0 and i0 <= -1 + M };
+; CHECK: Stmt_bb2
+; CHECK:   Domain :=
+; CHECK:     [M, N] -> { Stmt_bb2[i0] : 1 = 0 };

Modified: polly/trunk/test/ScopInfo/non_affine_region_1.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/non_affine_region_1.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/non_affine_region_1.ll (original)
+++ polly/trunk/test/ScopInfo/non_affine_region_1.ll Fri Oct  2 08:53:07 2015
@@ -19,15 +19,15 @@
 ;    }
 ;
 ; CHECK:       Region: %bb1---%bb21
-; CHECK:       Stmt_bb8
+; CHECK:       Stmt_bb3
 ; CHECK:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                 [b] -> { Stmt_bb8[i0] -> MemRef_x_1__phi[] };
+; CHECK:                 [b] -> { Stmt_bb3[i0] -> MemRef_x_1__phi[] };
 ; CHECK:       Stmt_bb7
 ; CHECK:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:                 [b] -> { Stmt_bb7[i0] -> MemRef_x_1__phi[] };
-; CHECK:       Stmt_bb3
+; CHECK:       Stmt_bb8
 ; CHECK:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                 [b] -> { Stmt_bb3[i0] -> MemRef_x_1__phi[] };
+; CHECK:                 [b] -> { Stmt_bb8[i0] -> MemRef_x_1__phi[] };
 ; CHECK:       Stmt_bb10__TO__bb18
 ; CHECK-NEXT:        Domain :=
 ; CHECK-NEXT:            [b] -> { Stmt_bb10__TO__bb18[i0] :

Modified: polly/trunk/test/ScopInfo/non_affine_region_2.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/non_affine_region_2.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/non_affine_region_2.ll (original)
+++ polly/trunk/test/ScopInfo/non_affine_region_2.ll Fri Oct  2 08:53:07 2015
@@ -35,11 +35,11 @@
 ; CHECK-NEXT:        { Stmt_bb3__TO__bb18[i0] -> MemRef_A[i0] };
 ; CHECK-NOT:         { Stmt_bb3__TO__bb18[i0] -> MemRef_x_0[] };
 ; CHECK-NOT:         { Stmt_bb3__TO__bb18[i0] -> MemRef_x_1[] };
-; CHECK:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
+; CHECK:         MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:        { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
 ; CHECK-NOT:         { Stmt_bb3__TO__bb18[i0] -> MemRef_x_0[] };
 ; CHECK-NOT:         { Stmt_bb3__TO__bb18[i0] -> MemRef_x_1[] };
-; CHECK:         MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
+; CHECK:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK-NEXT:        { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
 ; CHECK-NOT:         { Stmt_bb3__TO__bb18[i0] -> MemRef_x_0[] };
 ; CHECK-NOT:         { Stmt_bb3__TO__bb18[i0] -> MemRef_x_1[] };

Modified: polly/trunk/test/ScopInfo/non_affine_region_3.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/non_affine_region_3.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/non_affine_region_3.ll (original)
+++ polly/trunk/test/ScopInfo/non_affine_region_3.ll Fri Oct  2 08:53:07 2015
@@ -31,14 +31,14 @@
 ; CHECK:             { Stmt_bb3__TO__bb18[i0] -> [i0, 0] };
 ; CHECK:         ReadAccess := [Reduction Type: NONE] [Scalar: 0]
 ; CHECK:             { Stmt_bb3__TO__bb18[i0] -> MemRef_A[i0] };
-; CHECK:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:             { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
 ; CHECK:         MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:             { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
 ; CHECK:         MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:             { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
 ; CHECK:         MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:             { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
+; CHECK:         MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
+; CHECK:             { Stmt_bb3__TO__bb18[i0] -> MemRef_x_2__phi[] };
 ; CHECK:   Stmt_bb18
 ; CHECK:         Domain :=
 ; CHECK:             { Stmt_bb18[i0] :

Modified: polly/trunk/test/ScopInfo/non_affine_region_4.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/non_affine_region_4.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/non_affine_region_4.ll (original)
+++ polly/trunk/test/ScopInfo/non_affine_region_4.ll Fri Oct  2 08:53:07 2015
@@ -39,10 +39,10 @@
 ; CHECK:                { Stmt_bb2__TO__bb7[i0] -> MemRef_A[i0] };
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:                { Stmt_bb2__TO__bb7[i0] -> MemRef_x[] };
-; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                { Stmt_bb2__TO__bb7[i0] -> MemRef_y__phi[] };
 ; CHECK:            MayWriteAccess := [Reduction Type: NONE] [Scalar: 1]
 ; CHECK:                { Stmt_bb2__TO__bb7[i0] -> MemRef_y__phi[] };
+; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
+; CHECK:                { Stmt_bb2__TO__bb7[i0] -> MemRef_y__phi[] };
 ; CHECK:      Stmt_bb7
 ; CHECK:            Domain :=
 ; CHECK:                { Stmt_bb7[i0] :

Modified: polly/trunk/test/ScopInfo/phi_condition_modeling_1.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/phi_condition_modeling_1.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/phi_condition_modeling_1.ll (original)
+++ polly/trunk/test/ScopInfo/phi_condition_modeling_1.ll Fri Oct  2 08:53:07 2015
@@ -12,15 +12,15 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK-LABEL:      Stmt_bb7
+; CHECK-LABEL:      Stmt_bb6
 ; CHECK-NOT: Access
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [N, c] -> { Stmt_bb7[i0] -> MemRef_tmp_0__phi[] };
+; CHECK:                [N, c] -> { Stmt_bb6[i0] -> MemRef_tmp_0__phi[] };
 ; CHECK-NOT: Access
-; CHECK-LABEL:      Stmt_bb6
+; CHECK-LABEL:      Stmt_bb7
 ; CHECK-NOT: Access
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [N, c] -> { Stmt_bb6[i0] -> MemRef_tmp_0__phi[] };
+; CHECK:                [N, c] -> { Stmt_bb7[i0] -> MemRef_tmp_0__phi[] };
 ; CHECK-NOT: Access
 ; CHECK-LABEL:      Stmt_bb8
 ; CHECK-NOT: Access

Modified: polly/trunk/test/ScopInfo/phi_condition_modeling_2.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/phi_condition_modeling_2.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/phi_condition_modeling_2.ll (original)
+++ polly/trunk/test/ScopInfo/phi_condition_modeling_2.ll Fri Oct  2 08:53:07 2015
@@ -12,15 +12,15 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK-LABEL:      Stmt_bb7
+; CHECK-LABEL:      Stmt_bb6
 ; CHECK-NOT: Access
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [N, c] -> { Stmt_bb7[i0] -> MemRef_tmp_0__phi[] };
+; CHECK:                [N, c] -> { Stmt_bb6[i0] -> MemRef_tmp_0__phi[] };
 ; CHECK-NOT: Access
-; CHECK-LABEL:      Stmt_bb6
+; CHECK-LABEL:      Stmt_bb7
 ; CHECK-NOT: Access
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [N, c] -> { Stmt_bb6[i0] -> MemRef_tmp_0__phi[] };
+; CHECK:                [N, c] -> { Stmt_bb7[i0] -> MemRef_tmp_0__phi[] };
 ; CHECK-NOT: Access
 ; CHECK-LABEL:      Stmt_bb8
 ; CHECK-NOT: Access

Modified: polly/trunk/test/ScopInfo/phi_conditional_simple_1.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/phi_conditional_simple_1.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/phi_conditional_simple_1.ll (original)
+++ polly/trunk/test/ScopInfo/phi_conditional_simple_1.ll Fri Oct  2 08:53:07 2015
@@ -10,15 +10,15 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK-LABEL:      Stmt_if_then
+; CHECK-LABEL:      Stmt_if_else
 ; CHECK-NOT: Access
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [c] -> { Stmt_if_then[i0] -> MemRef_phi__phi[] };
+; CHECK:                [c] -> { Stmt_if_else[i0] -> MemRef_phi__phi[] };
 ; CHECK-NOT: Access
-; CHECK-LABEL:      Stmt_if_else
+; CHECK-LABEL:      Stmt_if_then
 ; CHECK-NOT: Access
 ; CHECK:            MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
-; CHECK:                [c] -> { Stmt_if_else[i0] -> MemRef_phi__phi[] };
+; CHECK:                [c] -> { Stmt_if_then[i0] -> MemRef_phi__phi[] };
 ; CHECK-NOT: Access
 ; CHECK-LABEL:      Stmt_if_end
 ; CHECK-NOT: Access

Modified: polly/trunk/test/ScopInfo/switch-1.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/switch-1.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/switch-1.ll (original)
+++ polly/trunk/test/ScopInfo/switch-1.ll Fri Oct  2 08:53:07 2015
@@ -19,21 +19,21 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK:      Stmt_sw_bb_6
+; CHECK:      Stmt_sw_bb_1
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_6[i0] : exists (e0 = floor((-3 + i0)/4): 4e0 = -3 + i0 and i0 >= 0 and i0 <= -1 + N) };
+; CHECK:                [N] -> { Stmt_sw_bb_1[i0] : exists (e0 = floor((-1 + i0)/4): 4e0 = -1 + i0 and i0 >= 1 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_6[i0] -> [i0, 0] };
+; CHECK:                [N] -> { Stmt_sw_bb_1[i0] -> [i0, 2] };
 ; CHECK:      Stmt_sw_bb_2
 ; CHECK:            Domain :=
 ; CHECK:                [N] -> { Stmt_sw_bb_2[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
 ; CHECK:                [N] -> { Stmt_sw_bb_2[i0] -> [i0, 1] };
-; CHECK:      Stmt_sw_bb_1
+; CHECK:      Stmt_sw_bb_6
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_1[i0] : exists (e0 = floor((-1 + i0)/4): 4e0 = -1 + i0 and i0 >= 1 and i0 <= -1 + N) };
+; CHECK:                [N] -> { Stmt_sw_bb_6[i0] : exists (e0 = floor((-3 + i0)/4): 4e0 = -3 + i0 and i0 >= 0 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_1[i0] -> [i0, 2] };
+; CHECK:                [N] -> { Stmt_sw_bb_6[i0] -> [i0, 0] };
 ; CHECK:    }
 ;
 ;

Modified: polly/trunk/test/ScopInfo/switch-2.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/switch-2.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/switch-2.ll (original)
+++ polly/trunk/test/ScopInfo/switch-2.ll Fri Oct  2 08:53:07 2015
@@ -19,18 +19,18 @@
 ;
 ; CHECK:    Statements {
 ; CHECK-NOT:  Stmt_sw_bb1
-; CHECK:      Stmt_sw_bb_2
-; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_2[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
-; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_2[i0] -> [i0, 0] };
-; CHECK-NOT:  Stmt_sw_bb1
 ; CHECK:      Stmt_sw_bb
 ; CHECK:            Domain :=
 ; CHECK:                [N] -> { Stmt_sw_bb[i0] : exists (e0 = floor((i0)/4): 4e0 = i0 and i0 >= 0 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
 ; CHECK:                [N] -> { Stmt_sw_bb[i0] -> [i0, 1] };
 ; CHECK-NOT:  Stmt_sw_bb1
+; CHECK:      Stmt_sw_bb_2
+; CHECK:            Domain :=
+; CHECK:                [N] -> { Stmt_sw_bb_2[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
+; CHECK:            Schedule :=
+; CHECK:                [N] -> { Stmt_sw_bb_2[i0] -> [i0, 0] };
+; CHECK-NOT:  Stmt_sw_bb1
 ; CHECK:    }
 ;
 ; AST:  if (1)

Modified: polly/trunk/test/ScopInfo/switch-3.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/switch-3.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/switch-3.ll (original)
+++ polly/trunk/test/ScopInfo/switch-3.ll Fri Oct  2 08:53:07 2015
@@ -18,16 +18,6 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK:      Stmt_sw_bb_5
-; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_5[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
-; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_5[i0] -> [i0, 0] };
-; CHECK:      Stmt_sw_bb_9
-; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_9[i0] : exists (e0 = floor((i0)/4): i0 >= 0 and i0 <= -1 + N and 4e0 >= -3 + i0 and 4e0 <= -2 + i0) };
-; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_9[i0] -> [i0, 1] };
 ; CHECK:      Stmt_sw_bb
 ; CHECK:            Domain :=
 ; CHECK:                [N] -> { Stmt_sw_bb[i0] : exists (e0 = floor((i0)/4): 4e0 = i0 and i0 >= 0 and i0 <= -1 + N) };
@@ -38,6 +28,16 @@
 ; CHECK:                [N] -> { Stmt_sw_bb_1[i0] : exists (e0 = floor((2 + i0)/4): i0 >= 0 and i0 <= -1 + N and 4e0 >= -1 + i0 and 4e0 <= i0) };
 ; CHECK:            Schedule :=
 ; CHECK:                [N] -> { Stmt_sw_bb_1[i0] -> [i0, 3] };
+; CHECK:      Stmt_sw_bb_5
+; CHECK:            Domain :=
+; CHECK:                [N] -> { Stmt_sw_bb_5[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
+; CHECK:            Schedule :=
+; CHECK:                [N] -> { Stmt_sw_bb_5[i0] -> [i0, 0] };
+; CHECK:      Stmt_sw_bb_9
+; CHECK:            Domain :=
+; CHECK:                [N] -> { Stmt_sw_bb_9[i0] : exists (e0 = floor((i0)/4): i0 >= 0 and i0 <= -1 + N and 4e0 >= -3 + i0 and 4e0 <= -2 + i0) };
+; CHECK:            Schedule :=
+; CHECK:                [N] -> { Stmt_sw_bb_9[i0] -> [i0, 1] };
 ; CHECK:    }
 ;
 ; AST:  if (1)

Modified: polly/trunk/test/ScopInfo/switch-4.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/switch-4.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/switch-4.ll (original)
+++ polly/trunk/test/ScopInfo/switch-4.ll Fri Oct  2 08:53:07 2015
@@ -22,29 +22,29 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK:      Stmt_sw_bb_9
+; CHECK:      Stmt_sw_default
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_9[i0] : exists (e0 = floor((-3 + i0)/4): 4e0 = -3 + i0 and i0 >= 0 and i0 <= -1 + N) };
-; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_9[i0] -> [i0, 0] };
-; CHECK:      Stmt_sw_bb_5
+; CHECK:                [N] -> { Stmt_sw_default[i0] : 1 = 0 };
+; CHECK:      Stmt_sw_bb
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_5[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
+; CHECK:                [N] -> { Stmt_sw_bb[i0] : exists (e0 = floor((i0)/4): 4e0 = i0 and i0 >= 0 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb_5[i0] -> [i0, 1] };
+; CHECK:                [N] -> { Stmt_sw_bb[i0] -> [i0, 3] };
 ; CHECK:      Stmt_sw_bb_1
 ; CHECK:            Domain :=
 ; CHECK:                [N] -> { Stmt_sw_bb_1[i0] : exists (e0 = floor((-1 + i0)/4): 4e0 = -1 + i0 and i0 >= 1 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
 ; CHECK:                [N] -> { Stmt_sw_bb_1[i0] -> [i0, 2] };
-; CHECK:      Stmt_sw_bb
+; CHECK:      Stmt_sw_bb_5
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb[i0] : exists (e0 = floor((i0)/4): 4e0 = i0 and i0 >= 0 and i0 <= -1 + N) };
+; CHECK:                [N] -> { Stmt_sw_bb_5[i0] : exists (e0 = floor((-2 + i0)/4): 4e0 = -2 + i0 and i0 >= 2 and i0 <= -1 + N) };
 ; CHECK:            Schedule :=
-; CHECK:                [N] -> { Stmt_sw_bb[i0] -> [i0, 3] };
-; CHECK:      Stmt_sw_default
+; CHECK:                [N] -> { Stmt_sw_bb_5[i0] -> [i0, 1] };
+; CHECK:      Stmt_sw_bb_9
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_default[i0] : 1 = 0 };
+; CHECK:                [N] -> { Stmt_sw_bb_9[i0] : exists (e0 = floor((-3 + i0)/4): 4e0 = -3 + i0 and i0 >= 0 and i0 <= -1 + N) };
+; CHECK:            Schedule :=
+; CHECK:                [N] -> { Stmt_sw_bb_9[i0] -> [i0, 0] };
 ; CHECK:    }
 ;
 ; AST:  if (1)

Modified: polly/trunk/test/ScopInfo/switch-6.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/switch-6.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/switch-6.ll (original)
+++ polly/trunk/test/ScopInfo/switch-6.ll Fri Oct  2 08:53:07 2015
@@ -22,18 +22,18 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK:      Stmt_sw_bb_9
-; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_9[3] : N >= 4 };
-; CHECK:      Stmt_sw_bb_5
+; CHECK:      Stmt_sw_bb
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb_5[2] : N >= 3 };
+; CHECK:                [N] -> { Stmt_sw_bb[0] : N >= 1 };
 ; CHECK:      Stmt_sw_bb_1
 ; CHECK:            Domain :=
 ; CHECK:                [N] -> { Stmt_sw_bb_1[1] : N >= 2 };
-; CHECK:      Stmt_sw_bb
+; CHECK:      Stmt_sw_bb_5
 ; CHECK:            Domain :=
-; CHECK:                [N] -> { Stmt_sw_bb[0] : N >= 1 };
+; CHECK:                [N] -> { Stmt_sw_bb_5[2] : N >= 3 };
+; CHECK:      Stmt_sw_bb_9
+; CHECK:            Domain :=
+; CHECK:                [N] -> { Stmt_sw_bb_9[3] : N >= 4 };
 ; CHECK:    }
 ;
 ; AST:  if (1)

Modified: polly/trunk/test/ScopInfo/switch-7.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/switch-7.ll?rev=249132&r1=249131&r2=249132&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/switch-7.ll (original)
+++ polly/trunk/test/ScopInfo/switch-7.ll Fri Oct  2 08:53:07 2015
@@ -1,3 +1,4 @@
+
 ; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
 ; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s --check-prefix=AST
 ;
@@ -17,16 +18,16 @@
 ;    }
 ;
 ; CHECK:    Statements {
-; CHECK:      Stmt_for_body_7
-; CHECK:            Domain :=
-; CHECK:                [c, N] -> { Stmt_for_body_7[i0] : c = 1 and i0 >= 0 and i0 <= -1 + N };
-; CHECK:            Schedule :=
-; CHECK:                [c, N] -> { Stmt_for_body_7[i0] -> [0, i0] };
 ; CHECK:      Stmt_for_body
 ; CHECK:            Domain :=
 ; CHECK:                [c, N] -> { Stmt_for_body[i0] : c = -1 and i0 >= 0 and i0 <= -1 + N };
 ; CHECK:            Schedule :=
 ; CHECK:                [c, N] -> { Stmt_for_body[i0] -> [1, i0] };
+; CHECK:      Stmt_for_body_7
+; CHECK:            Domain :=
+; CHECK:                [c, N] -> { Stmt_for_body_7[i0] : c = 1 and i0 >= 0 and i0 <= -1 + N };
+; CHECK:            Schedule :=
+; CHECK:                [c, N] -> { Stmt_for_body_7[i0] -> [0, i0] };
 ; CHECK:    }
 ;
 ; AST:  if (1)




More information about the llvm-commits mailing list