[polly] [ScopInfo] Don't pre-compute the name of the Scop's region.

This gets very expensive for basic blocks which don't have a name: it
calls printAsOperand, which numbers the entire module. We don't
normally need the name anyway, though; it's only used for debug dumps,
so don't compute it by default.

Differential Revision: https://reviews.llvm.org/D44946

llvm-svn: 328666
This commit is contained in:
Eli Friedman 2018-03-27 20:51:49 +00:00
parent b62f86a6b7
commit ac4ad45177
2 changed files with 3 additions and 6 deletions

View File

@ -1709,9 +1709,6 @@ private:
/// The underlying Region.
Region &R;
/// The name of the SCoP (identical to the regions name)
std::string name;
/// The ID to be assigned to the next Scop in a function
static int NextScopID;
@ -2442,7 +2439,7 @@ public:
/// could be executed.
bool isEmpty() const { return Stmts.empty(); }
const StringRef getName() const { return name; }
const StringRef getName() const { return R.getNameStr(); }
using array_iterator = ArrayInfoSetTy::iterator;
using const_array_iterator = ArrayInfoSetTy::const_iterator;

View File

@ -3327,8 +3327,8 @@ Scop::Scop(Region &R, ScalarEvolution &ScalarEvolution, LoopInfo &LI,
DominatorTree &DT, ScopDetection::DetectionContext &DC,
OptimizationRemarkEmitter &ORE)
: IslCtx(isl_ctx_alloc(), isl_ctx_free), SE(&ScalarEvolution), DT(&DT),
R(R), name(R.getNameStr()), HasSingleExitEdge(R.getExitingBlock()),
DC(DC), ORE(ORE), Affinator(this, LI),
R(R), HasSingleExitEdge(R.getExitingBlock()), DC(DC), ORE(ORE),
Affinator(this, LI),
ID(getNextID((*R.getEntry()->getParent()).getName().str())) {
if (IslOnErrorAbort)
isl_options_set_on_error(getIslCtx().get(), ISL_ON_ERROR_ABORT);