]> granicus.if.org Git - clang/commitdiff
Fix <rdar://problem/6848739>. When using -analyze, -Werror has no effect.
authorTed Kremenek <kremenek@apple.com>
Thu, 7 May 2009 19:02:53 +0000 (19:02 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 7 May 2009 19:02:53 +0000 (19:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71172 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/override-werror.c [new file with mode: 0644]
tools/clang-cc/AnalysisConsumer.cpp

diff --git a/test/Analysis/override-werror.c b/test/Analysis/override-werror.c
new file mode 100644 (file)
index 0000000..f928ee0
--- /dev/null
@@ -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}}  
+}
+
index b1fb7417825fd760d5d0914d207e382fd543b6fc..381b9d0ba2b80485f50a7dd2cc3f9a7d774ff9d2 100644 (file)
@@ -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();
 }