mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-03-04 00:20:14 +00:00
Detection: Allow to filter the regions that can be detected
llvm-svn: 200224
This commit is contained in:
parent
26292ccc91
commit
4449e52655
@ -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::value_desc("function-name"), cl::ValueRequired, cl::init(""),
|
||||||
cl::cat(PollyCategory));
|
cl::cat(PollyCategory));
|
||||||
|
|
||||||
|
static cl::opt<std::string>
|
||||||
|
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<bool>
|
static cl::opt<bool>
|
||||||
IgnoreAliasing("polly-ignore-aliasing",
|
IgnoreAliasing("polly-ignore-aliasing",
|
||||||
cl::desc("Ignore possible aliasing of the array bases"),
|
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");
|
DEBUG(dbgs() << "Checking region: " << R.getNameStr() << "\n\t");
|
||||||
|
|
||||||
// The toplevel region is no valid region.
|
|
||||||
if (R.isTopLevelRegion()) {
|
if (R.isTopLevelRegion()) {
|
||||||
DEBUG(dbgs() << "Top level region is invalid"; dbgs() << "\n");
|
DEBUG(dbgs() << "Top level region is invalid"; dbgs() << "\n");
|
||||||
return false;
|
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()) {
|
if (!R.getEnteringBlock()) {
|
||||||
BasicBlock *entry = R.getEntry();
|
BasicBlock *entry = R.getEntry();
|
||||||
Loop *L = LI->getLoopFor(entry);
|
Loop *L = LI->getLoopFor(entry);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user