summaryrefslogtreecommitdiffstats
path: root/polly/lib/Analysis/ScopDetection.cpp
diff options
context:
space:
mode:
authorSiddharth Bhat <siddu.druid@gmail.com>2017-07-24 12:40:52 +0000
committerSiddharth Bhat <siddu.druid@gmail.com>2017-07-24 12:40:52 +0000
commite2699b572e99110dc647a9f9dd1147b70db40412 (patch)
tree5ac63631630a7a7406b6c51fc5af0498a41c6b4d /polly/lib/Analysis/ScopDetection.cpp
parent5b8a9095e84c3be3a1bb46dfd3e09e9e4d8013f0 (diff)
downloadbcm5719-llvm-e2699b572e99110dc647a9f9dd1147b70db40412.tar.gz
bcm5719-llvm-e2699b572e99110dc647a9f9dd1147b70db40412.zip
[Polly] [NFC] [ScopDetection] Make `polly-only-func` perform regex scop name match.
Summary: - We were using `.count` in `StringRef`, which matches substrings. - We may want to use this for equality as well. - Generalise this, so allow regexes as a parameter to `polly-only-func`. Differential Revision: https://reviews.llvm.org/D35728 llvm-svn: 308875
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
-rw-r--r--polly/lib/Analysis/ScopDetection.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp
index 199306abc53..cb223d9cc17 100644
--- a/polly/lib/Analysis/ScopDetection.cpp
+++ b/polly/lib/Analysis/ScopDetection.cpp
@@ -64,6 +64,7 @@
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/Support/Debug.h"
+#include "llvm/Support/Regex.h"
#include <set>
#include <stack>
@@ -92,10 +93,10 @@ static cl::opt<bool, true> XPollyProcessUnprofitable(
static cl::list<std::string> OnlyFunctions(
"polly-only-func",
- cl::desc("Only run on functions that contain a certain string. "
- "Multiple strings can be comma separated. "
- "Scop detection will run on all functions that contain "
- "any of the strings provided."),
+ cl::desc("Only run on functions that match a regex. "
+ "Multiple regexes can be comma separated. "
+ "Scop detection will run on all functions that match "
+ "ANY of the regexes provided."),
cl::ZeroOrMore, cl::CommaSeparated, cl::cat(PollyCategory));
static cl::opt<bool>
@@ -274,9 +275,17 @@ void DiagnosticScopFound::print(DiagnosticPrinter &DP) const {
}
static bool IsFnNameListedInOnlyFunctions(StringRef FnName) {
- for (auto Name : OnlyFunctions)
- if (FnName.count(Name) > 0)
+ for (auto RegexStr : OnlyFunctions) {
+ Regex R(RegexStr);
+
+ std::string Err;
+ if (!R.isValid(Err))
+ report_fatal_error(
+ "invalid regex given as input to -polly-only-func. " + Err, true);
+
+ if (R.match(FnName))
return true;
+ }
return false;
}
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud