diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-05-07 19:02:53 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-05-07 19:02:53 +0000 |
commit | 2c4036eda90fad6d219d9f3fadbd9288fa197e89 (patch) | |
tree | cf755d45d33290fa10b0bfa02a872e76a23158df | |
parent | af199f32b008191341f248d7d50616a6a71ba354 (diff) |
Fix <rdar://problem/6848739>. When using -analyze, -Werror has no effect.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71172 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/Analysis/override-werror.c | 15 | ||||
-rw-r--r-- | tools/clang-cc/AnalysisConsumer.cpp | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/test/Analysis/override-werror.c b/test/Analysis/override-werror.c new file mode 100644 index 0000000000..f928ee031f --- /dev/null +++ b/test/Analysis/override-werror.c @@ -0,0 +1,15 @@ +// RUN: clang-cc -analyze -checker-cfref -Werror %s -analyzer-store=basic -verify && +// RUN: clang-cc -analyze -checker-cfref -Werror %s -analyzer-store=region -verify + +// This test case illustrates that using '-analyze' overrides the effect of +// -Werror. This allows basic warnings not to interfere with producing +// analyzer results. + +char* f(int *p) { + return p; // expected-warning{{incompatible pointer types returning 'int *', expected 'char *'}} +} + +void g(int *p) { + if (!p) *p = 0; // expected-warning{{null}} +} + diff --git a/tools/clang-cc/AnalysisConsumer.cpp b/tools/clang-cc/AnalysisConsumer.cpp index b1fb741782..381b9d0ba2 100644 --- a/tools/clang-cc/AnalysisConsumer.cpp +++ b/tools/clang-cc/AnalysisConsumer.cpp @@ -654,6 +654,9 @@ ASTConsumer* clang::CreateAnalysisConsumer(Diagnostic &diags, Preprocessor* pp, #include "Analyses.def" default: break; } + + // Last, disable the effects of '-Werror' when using the AnalysisConsumer. + diags.setWarningsAsErrors(false); return C.take(); } |