[Refactor] Use non-const MemoryAccess base addresses
authorJohannes Doerfert <jdoerfert@codeaurora.org>
Tue, 29 Jul 2014 08:36:18 +0000 (08:36 +0000)
committerJohannes Doerfert <jdoerfert@codeaurora.org>
Tue, 29 Jul 2014 08:36:18 +0000 (08:36 +0000)
llvm-svn: 214168

polly/include/polly/ScopInfo.h
polly/include/polly/TempScopInfo.h
polly/lib/CodeGen/BlockGenerators.cpp
polly/lib/CodeGen/CodeGeneration.cpp

index 5be9650..e4b9123 100644 (file)
@@ -103,7 +103,9 @@ private:
   isl_map *AccessRelation;
   enum AccessType Type;
 
-  const Value *BaseAddr;
+  /// @brief The base address (e.g., A for A[i+j]).
+  Value *BaseAddr;
+
   std::string BaseName;
   isl_basic_map *createBasicAccessMap(ScopStmt *Statement);
   ScopStmt *Statement;
@@ -178,7 +180,8 @@ public:
   /// @brief Get an isl string representing this access function.
   std::string getAccessRelationStr() const;
 
-  const Value *getBaseAddr() const { return BaseAddr; }
+  /// @brief Get the base address of this access (e.g. A for A[i+j]).
+  Value *getBaseAddr() const { return BaseAddr; }
 
   const std::string &getBaseName() const { return BaseName; }
 
index 17fa751..e67ba40 100644 (file)
@@ -35,7 +35,7 @@ extern bool PollyDelinearize;
 /// @brief A memory access described by a SCEV expression and the access type.
 class IRAccess {
 public:
-  const Value *BaseAddress;
+  Value *BaseAddress;
 
   const SCEV *Offset;
 
@@ -53,7 +53,7 @@ private:
 public:
   SmallVector<const SCEV *, 4> Subscripts, Sizes;
 
-  explicit IRAccess(TypeKind Type, const Value *BaseAddress, const SCEV *Offset,
+  explicit IRAccess(TypeKind Type, Value *BaseAddress, const SCEV *Offset,
                     unsigned elemBytes, bool Affine,
                     SmallVector<const SCEV *, 4> Subscripts,
                     SmallVector<const SCEV *, 4> Sizes)
@@ -62,7 +62,7 @@ public:
 
   enum TypeKind getType() const { return Type; }
 
-  const Value *getBase() const { return BaseAddress; }
+  Value *getBase() const { return BaseAddress; }
 
   const SCEV *getOffset() const { return Offset; }
 
index 3cfdb4b..7284e24 100644 (file)
@@ -307,7 +307,7 @@ Value *BlockGenerator::generateLocationAccessed(const Instruction *Inst,
     NewPointer =
         getNewValue(Pointer, BBMap, GlobalMap, LTS, getLoopForInst(Inst));
   } else {
-    Value *BaseAddress = const_cast<Value *>(Access.getBaseAddr());
+    Value *BaseAddress = Access.getBaseAddr();
     NewPointer = getNewAccessOperand(NewAccessRelation, BaseAddress, BBMap,
                                      GlobalMap, LTS, getLoopForInst(Inst));
   }
index 56b2ab3..6b61927 100644 (file)
@@ -667,7 +667,7 @@ SetVector<Value *> ClastStmtCodeGen::getGPUValues(unsigned &OutputBytes) {
   // Record the memory reference base addresses.
   for (ScopStmt *Stmt : *S) {
     for (MemoryAccess *MA : *Stmt) {
-      Value *BaseAddr = const_cast<Value *>(MA->getBaseAddr());
+      Value *BaseAddr = MA->getBaseAddr();
       Values.insert((BaseAddr));
 
       // FIXME: we assume that there is one and only one array to be written