summaryrefslogtreecommitdiff
path: root/test/Analysis/diagnostics/false-positive-suppression.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/diagnostics/false-positive-suppression.c')
-rw-r--r--test/Analysis/diagnostics/false-positive-suppression.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/Analysis/diagnostics/false-positive-suppression.c b/test/Analysis/diagnostics/false-positive-suppression.c
new file mode 100644
index 000000000000..cdcd7cc77798
--- /dev/null
+++ b/test/Analysis/diagnostics/false-positive-suppression.c
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -I %S/Inputs -analyze -analyzer-checker=core,unix -verify %s
+// expected-no-diagnostics
+
+#include "include/sys/queue.h"
+
+typedef __typeof(sizeof(int)) size_t;
+void *malloc(size_t);
+
+int radar12491259() {
+ int *p = malloc(12);
+ FREE_POINTER(p);
+ FREE_POINTER(p); // no-warning: we are suppressing errors coming from sys/queue macros.
+ return 0;
+}
+
+#define MYMACRO(p) FREE_POINTER(p)
+
+int radar12491259_inside_macro() {
+ int *p = malloc(12);
+ MYMACRO(p);
+ MYMACRO(p); // no-warning: we are suppressing errors coming from sys/queue macros.
+ return 0;
+}