aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorJosh Triplett <josh@freedesktop.org>2007-05-22 16:58:06 -0700
committerJosh Triplett <josh@freedesktop.org>2007-05-22 16:59:23 -0700
commitb376177890bb579d4fd6a532bb95a6ef9a8d0787 (patch)
tree5c7f8f5c974717bf380a4695227cca4a35243469
parent12e4c7936209670106213f71ad8d9269c3dbfeb9 (diff)
downloadsparse-dev-b376177890bb579d4fd6a532bb95a6ef9a8d0787.tar.gz
Add -Wno-non-pointer-null to turn off warning about using a plain integer as a NULL pointer
Signed-off-by: Josh Triplett <josh@freedesktop.org>
-rwxr-xr-xcgcc2
-rw-r--r--evaluate.c2
-rw-r--r--lib.c2
-rw-r--r--lib.h1
-rw-r--r--validation/non-pointer-null.c1
5 files changed, 6 insertions, 2 deletions
diff --git a/cgcc b/cgcc
index a364c0ac..4ac4a3b2 100755
--- a/cgcc
+++ b/cgcc
@@ -66,7 +66,7 @@ exit 0;
sub check_only_option {
my ($arg) = @_;
- return 1 if $arg =~ /^-W(no-?)?(default-bitfield-sig|one-bit-signed-bitfield|cast-truncate|bitwise|typesign|context|undefined-preprocessor|ptr-subtraction-blows|cast-to-address-space|decl|transparent-union|address-space|enum-mismatch|do-while|old-initializer)$/;
+ return 1 if $arg =~ /^-W(no-?)?(default-bitfield-sig|one-bit-signed-bitfield|cast-truncate|bitwise|typesign|context|undefined-preprocessor|ptr-subtraction-blows|cast-to-address-space|decl|transparent-union|address-space|enum-mismatch|do-while|old-initializer|non-pointer-null)$/;
return 1 if $arg =~ /^-v(no-?)?(entry|dead)$/;
return 0;
}
diff --git a/evaluate.c b/evaluate.c
index 59b3d32e..e44426bd 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -812,7 +812,7 @@ static int is_null_ptr(struct expression *expr)
{
if (expr->type != EXPR_VALUE || expr->value)
return 0;
- if (!is_ptr_type(expr->ctype))
+ if (Wnon_pointer_null && !is_ptr_type(expr->ctype))
warning(expr->pos, "Using plain integer as NULL pointer");
return 1;
}
diff --git a/lib.c b/lib.c
index 8ffb2575..1cd1d239 100644
--- a/lib.c
+++ b/lib.c
@@ -205,6 +205,7 @@ int Wenum_mismatch = 1;
int Wdo_while = 1;
int Wuninitialized = 1;
int Wold_initializer = 1;
+int Wnon_pointer_null = 1;
int dbg_entry = 0;
int dbg_dead = 0;
@@ -354,6 +355,7 @@ static const struct warning {
{ "do-while", &Wdo_while },
{ "uninitialized", &Wuninitialized },
{ "old-initializer", &Wold_initializer },
+ { "non-pointer-null", &Wnon_pointer_null },
};
enum {
diff --git a/lib.h b/lib.h
index 7f33d75c..9ea4ad2a 100644
--- a/lib.h
+++ b/lib.h
@@ -102,6 +102,7 @@ extern int Wcast_truncate;
extern int Wdo_while;
extern int Wuninitialized;
extern int Wold_initializer;
+extern int Wnon_pointer_null;
extern int dbg_entry;
extern int dbg_dead;
diff --git a/validation/non-pointer-null.c b/validation/non-pointer-null.c
new file mode 100644
index 00000000..de23a1f8
--- /dev/null
+++ b/validation/non-pointer-null.c
@@ -0,0 +1 @@
+void *p = 0;