From 4449e5265560d620cd8c7e01f9b636b70ed936fd Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Mon, 27 Jan 2014 14:24:53 +0000 Subject: [PATCH] Detection: Allow to filter the regions that can be detected llvm-svn: 200224 --- polly/lib/Analysis/ScopDetection.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index 4247e279749e..9456ab3afa52 100644 --- a/polly/lib/Analysis/ScopDetection.cpp +++ b/polly/lib/Analysis/ScopDetection.cpp @@ -84,6 +84,13 @@ OnlyFunction("polly-only-func", cl::desc("Only run on a single function"), cl::value_desc("function-name"), cl::ValueRequired, cl::init(""), cl::cat(PollyCategory)); +static cl::opt +OnlyRegion("polly-only-region", + cl::desc("Only run on certain regions (The provided identifier must " + "appear in the name of the region's entry block"), + cl::value_desc("identifier"), cl::ValueRequired, cl::init(""), + cl::cat(PollyCategory)); + static cl::opt IgnoreAliasing("polly-ignore-aliasing", cl::desc("Ignore possible aliasing of the array bases"), @@ -626,12 +633,19 @@ bool ScopDetection::isValidRegion(DetectionContext &Context) const { DEBUG(dbgs() << "Checking region: " << R.getNameStr() << "\n\t"); - // The toplevel region is no valid region. if (R.isTopLevelRegion()) { DEBUG(dbgs() << "Top level region is invalid"; dbgs() << "\n"); return false; } + if (!R.getEntry()->getName().count(OnlyRegion)) { + DEBUG({ + dbgs() << "Region entry does not match -polly-region-only"; + dbgs() << "\n"; + }); + return false; + } + if (!R.getEnteringBlock()) { BasicBlock *entry = R.getEntry(); Loop *L = LI->getLoopFor(entry);