2003-08-23 05:06:47

by Randy.Dunlap

[permalink] [raw]
Subject: [PATCH] eliminate gcc warnings on assert [__builtin_expect]


Building genksyms on ia64 (gcc 3.3.1) produces these warnings:

scripts/genksyms/genksyms.c: In function `copy_node':
scripts/genksyms/genksyms.c:224: warning: passing arg 1 of `__builtin_expect' makes integer from pointer without a cast
scripts/genksyms/genksyms.c: In function `expand_and_crc_list':
scripts/genksyms/genksyms.c:384: warning: passing arg 1 of `__builtin_expect' makes integer from pointer without a cast
scripts/genksyms/genksyms.c:390: warning: passing arg 1 of `__builtin_expect' makes integer from pointer without a cast
scripts/genksyms/genksyms.c:396: warning: passing arg 1 of `__builtin_expect' makes integer from pointer without a cast


Is there a problem with coercing the pointer parameter to be (int)?

--
~Randy


patch_name: ksyms_assert.patch
patch_version: 2003-08-22.21:28:40
author: Randy.Dunlap <[email protected]>
description: eliminate gcc warnings on assert/__builtin_expect();
product: Linux
product_versions: 260-test4
diffstat: =
scripts/genksyms/genksyms.h | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)


diff -Naur ./scripts/genksyms/genksyms.h~astype ./scripts/genksyms/genksyms.h
--- ./scripts/genksyms/genksyms.h~astype Fri Aug 8 21:39:02 2003
+++ ./scripts/genksyms/genksyms.h Fri Aug 22 21:14:59 2003
@@ -89,8 +89,8 @@

#define MODUTILS_VERSION "<in-kernel>"

-#define xmalloc(size) ({ void *__ptr = malloc(size); assert(__ptr || size == 0); __ptr; })
-#define xstrdup(str) ({ char *__str = strdup(str); assert(__str); __str; })
+#define xmalloc(size) ({ void *__ptr = malloc(size); assert((int)__ptr || size == 0); __ptr; })
+#define xstrdup(str) ({ char *__str = strdup(str); assert((int)__str); __str; })


#endif /* genksyms.h */


2003-08-23 05:22:03

by Roland Dreier

[permalink] [raw]
Subject: Re: [PATCH] eliminate gcc warnings on assert [__builtin_expect]

>>>>> "Randy" == Randy Dunlap <Randy.Dunlap> writes:

Randy> Building genksyms on ia64 (gcc 3.3.1) produces these
Randy> warnings:

[...]

Randy> Is there a problem with coercing the pointer parameter to
Randy> be (int)?

Doesn't this produce "warning: cast from pointer to integer of different size"?
It would be better to do something like "!!__ptr" or "__ptr != 0" to
test if the pointer is NULL. (This was discussed to death recently on LKML)

- R.

2003-08-23 05:48:00

by Randy.Dunlap

[permalink] [raw]
Subject: Re: [PATCH] eliminate gcc warnings on assert [__builtin_expect]

>>>>>> "Randy" == Randy Dunlap <Randy.Dunlap> writes:
>
> Randy> Building genksyms on ia64 (gcc 3.3.1) produces these
> Randy> warnings:
>
> [...]
>
> Randy> Is there a problem with coercing the pointer parameter to Randy>
> be (int)?
>
> Doesn't this produce "warning: cast from pointer to integer of different
> size"? It would be better to do something like "!!__ptr" or "__ptr != 0" to
> test if the pointer is NULL. (This was discussed to death recently on LKML)

Argh, you are right (on both counts).

I'll try that.

Thanks.

~Randy