diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 9 | ||||
| -rw-r--r-- | clang/test/Frontend/optimization-remark-extra-analysis.c | 11 |
2 files changed, 16 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index a29e8de317f..3873ef4eb58 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -53,19 +53,20 @@ namespace clang { : CodeGenOpts(CGOpts), BackendCon(BCon) {} bool handleDiagnostics(const DiagnosticInfo &DI) override; - bool isAnalysisRemarkEnable(const std::string &PassName) { + + bool isAnalysisRemarkEnabled(StringRef PassName) const override { return (CodeGenOpts.OptimizationRemarkAnalysisPattern && CodeGenOpts.OptimizationRemarkAnalysisPattern->match(PassName)); } - bool isMissedOptRemarkEnable(const std::string &PassName) { + bool isMissedOptRemarkEnabled(StringRef PassName) const override { return (CodeGenOpts.OptimizationRemarkMissedPattern && CodeGenOpts.OptimizationRemarkMissedPattern->match(PassName)); } - bool isPassedOptRemarkEnable(const std::string &PassName) { + bool isPassedOptRemarkEnabled(StringRef PassName) const override { return (CodeGenOpts.OptimizationRemarkPattern && CodeGenOpts.OptimizationRemarkPattern->match(PassName)); } - + private: const CodeGenOptions &CodeGenOpts; BackendConsumer *BackendCon; diff --git a/clang/test/Frontend/optimization-remark-extra-analysis.c b/clang/test/Frontend/optimization-remark-extra-analysis.c new file mode 100644 index 00000000000..1a8415e69cf --- /dev/null +++ b/clang/test/Frontend/optimization-remark-extra-analysis.c @@ -0,0 +1,11 @@ +// Test that the is*RemarkEnabled overrides are working properly. This remark +// requiring extra analysis is only conditionally enabled. + +// RUN: %clang_cc1 %s -Rpass-missed=gvn -O2 -emit-llvm-only -verify + +int foo(int *x, int *y) { + int a = *x; + *y = 2; + // expected-remark@+1 {{load of type i32 not eliminated}} + return a + *x; +} |

