diff options
Diffstat (limited to 'polly/lib/Analysis/ScopInfo.cpp')
-rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 8ae04e8f96f..819bf15a3d6 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -499,7 +499,7 @@ MemoryAccess::~MemoryAccess() { isl_map_free(NewAccessRelation); } -const ScopArrayInfo *MemoryAccess::getScopArrayInfo() const { +const ScopArrayInfo *MemoryAccess::getOriginalScopArrayInfo() const { isl_id *ArrayId = getArrayId(); void *User = isl_id_get_user(ArrayId); const ScopArrayInfo *SAI = static_cast<ScopArrayInfo *>(User); @@ -507,10 +507,24 @@ const ScopArrayInfo *MemoryAccess::getScopArrayInfo() const { return SAI; } -__isl_give isl_id *MemoryAccess::getArrayId() const { +const ScopArrayInfo *MemoryAccess::getLatestScopArrayInfo() const { + isl_id *ArrayId = getLatestArrayId(); + void *User = isl_id_get_user(ArrayId); + const ScopArrayInfo *SAI = static_cast<ScopArrayInfo *>(User); + isl_id_free(ArrayId); + return SAI; +} + +__isl_give isl_id *MemoryAccess::getOriginalArrayId() const { return isl_map_get_tuple_id(AccessRelation, isl_dim_out); } +__isl_give isl_id *MemoryAccess::getLatestArrayId() const { + if (!hasNewAccessRelation()) + return getOriginalArrayId(); + return isl_map_get_tuple_id(NewAccessRelation, isl_dim_out); +} + __isl_give isl_map *MemoryAccess::getAddressFunction() const { return isl_map_lexmin(getAccessRelation()); } |