diff options
Diffstat (limited to 'polly/lib')
-rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 33 | ||||
-rw-r--r-- | polly/lib/Support/GICHelper.cpp | 28 |
2 files changed, 30 insertions, 31 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index e462c779194..2028f7630a4 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -309,30 +309,6 @@ MemoryAccess::~MemoryAccess() { isl_map_free(newAccessRelation); } -static void replace(std::string &str, const std::string &find, - const std::string &replace) { - size_t pos = 0; - while ((pos = str.find(find, pos)) != std::string::npos) { - str.replace(pos, find.length(), replace); - pos += replace.length(); - } -} - -static void makeIslCompatible(std::string &str) { - str.erase(0, 1); - replace(str, ".", "_"); - replace(str, "\"", "_"); -} - -void MemoryAccess::setBaseName() { - raw_string_ostream OS(BaseName); - getBaseAddr()->printAsOperand(OS, false); - BaseName = OS.str(); - - makeIslCompatible(BaseName); - BaseName = "MemRef_" + BaseName; -} - isl_map *MemoryAccess::getAccessRelation() const { return isl_map_copy(AccessRelation); } @@ -424,7 +400,7 @@ MemoryAccess::MemoryAccess(const IRAccess &Access, const Instruction *AccInst, : Statement(Statement), Inst(AccInst), newAccessRelation(nullptr) { BaseAddr = Access.getBase(); - setBaseName(); + BaseName = getIslCompatibleName("MemRef_", getBaseAddr(), ""); if (!Access.isAffine()) { // We overapproximate non-affine accesses with a possible access to the @@ -809,12 +785,7 @@ ScopStmt::ScopStmt(Scop &parent, TempScop &tempScop, const Region &CurRegion, NestLoops[i] = Nest[i]; } - raw_string_ostream OS(BaseName); - bb.printAsOperand(OS, false); - BaseName = OS.str(); - - makeIslCompatible(BaseName); - BaseName = "Stmt_" + BaseName; + BaseName = getIslCompatibleName("Stmt_", &bb, ""); Domain = buildDomain(tempScop, CurRegion); buildScattering(Scatter); diff --git a/polly/lib/Support/GICHelper.cpp b/polly/lib/Support/GICHelper.cpp index 530ce91371f..3ad4e501b71 100644 --- a/polly/lib/Support/GICHelper.cpp +++ b/polly/lib/Support/GICHelper.cpp @@ -11,6 +11,7 @@ // //===----------------------------------------------------------------------===// #include "polly/Support/GICHelper.h" +#include "llvm/IR/Value.h" #include "isl/aff.h" #include "isl/map.h" #include "isl/schedule.h" @@ -124,3 +125,30 @@ std::string polly::stringFromIslObj(__isl_keep isl_pw_aff *pwaff) { return stringFromIslObjInternal(pwaff, isl_pw_aff_get_ctx, isl_printer_print_pw_aff); } + +static void replace(std::string &str, const std::string &find, + const std::string &replace) { + size_t pos = 0; + while ((pos = str.find(find, pos)) != std::string::npos) { + str.replace(pos, find.length(), replace); + pos += replace.length(); + } +} + +static void makeIslCompatible(std::string &str) { + replace(str, ".", "_"); + replace(str, "\"", "_"); +} + +std::string polly::getIslCompatibleName(std::string Prefix, const Value *Val, + std::string Suffix) { + std::string ValStr; + raw_string_ostream OS(ValStr); + Val->printAsOperand(OS, false); + ValStr = OS.str(); + // Remove the leading % + ValStr.erase(0, 1); + ValStr = Prefix + ValStr + Suffix; + makeIslCompatible(ValStr); + return ValStr; +} |