linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] use ARRAY_SIZE() when possible
@ 2010-12-09 11:27 Namhyung Kim
  2010-12-09 12:36 ` Nicholas Mc Guire
  2010-12-10  8:51 ` Christopher Li
  0 siblings, 2 replies; 4+ messages in thread
From: Namhyung Kim @ 2010-12-09 11:27 UTC (permalink / raw)
  To: Christopher Li; +Cc: linux-sparse

Convert (sizeof arr / sizeof arr[0]) to ARRAY_SIZE(arr).

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
---
 lib.c         |    8 ++++----
 pre-process.c |    4 ++--
 show-parse.c  |    4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/lib.c b/lib.c
index c4a6f87..1d96129 100644
--- a/lib.c
+++ b/lib.c
@@ -437,7 +437,7 @@ static char **handle_onoff_switch(char *arg, char **next, const struct warning w
 
 static char **handle_switch_W(char *arg, char **next)
 {
-	char ** ret = handle_onoff_switch(arg, next, warnings, sizeof warnings/sizeof warnings[0]);
+	char ** ret = handle_onoff_switch(arg, next, warnings, ARRAY_SIZE(warnings));
 	if (ret)
 		return ret;
 
@@ -453,7 +453,7 @@ static struct warning debugs[] = {
 
 static char **handle_switch_v(char *arg, char **next)
 {
-	char ** ret = handle_onoff_switch(arg, next, debugs, sizeof debugs/sizeof debugs[0]);
+	char ** ret = handle_onoff_switch(arg, next, debugs, ARRAY_SIZE(debugs));
 	if (ret)
 		return ret;
 
@@ -477,7 +477,7 @@ static void handle_onoff_switch_finalize(const struct warning warnings[], int n)
 
 static void handle_switch_W_finalize(void)
 {
-	handle_onoff_switch_finalize(warnings, sizeof(warnings) / sizeof(warnings[0]));
+	handle_onoff_switch_finalize(warnings, ARRAY_SIZE(warnings));
 
 	/* default Wdeclarationafterstatement based on the C dialect */
 	if (-1 == Wdeclarationafterstatement)
@@ -504,7 +504,7 @@ static void handle_switch_W_finalize(void)
 
 static void handle_switch_v_finalize(void)
 {
-	handle_onoff_switch_finalize(debugs, sizeof(debugs) / sizeof(debugs[0]));
+	handle_onoff_switch_finalize(debugs, ARRAY_SIZE(debugs));
 }
 
 static char **handle_switch_U(char *arg, char **next)
diff --git a/pre-process.c b/pre-process.c
index 656acaa..603cc00 100644
--- a/pre-process.c
+++ b/pre-process.c
@@ -1718,13 +1718,13 @@ static void init_preprocessor(void)
 		{ "elif",	handle_elif },
 	};
 
-	for (i = 0; i < (sizeof (normal) / sizeof (normal[0])); i++) {
+	for (i = 0; i < ARRAY_SIZE(normal); i++) {
 		struct symbol *sym;
 		sym = create_symbol(stream, normal[i].name, SYM_PREPROCESSOR, NS_PREPROCESSOR);
 		sym->handler = normal[i].handler;
 		sym->normal = 1;
 	}
-	for (i = 0; i < (sizeof (special) / sizeof (special[0])); i++) {
+	for (i = 0; i < ARRAY_SIZE(special); i++) {
 		struct symbol *sym;
 		sym = create_symbol(stream, special[i].name, SYM_PREPROCESSOR, NS_PREPROCESSOR);
 		sym->handler = special[i].handler;
diff --git a/show-parse.c b/show-parse.c
index c97debe..73cc86a 100644
--- a/show-parse.c
+++ b/show-parse.c
@@ -239,7 +239,7 @@ const char *builtin_typename(struct symbol *sym)
 {
 	int i;
 
-	for (i = 0; i < sizeof(typenames)/sizeof(typenames[0]); i++)
+	for (i = 0; i < ARRAY_SIZE(typenames); i++)
 		if (typenames[i].sym == sym)
 			return typenames[i].name;
 	return NULL;
@@ -249,7 +249,7 @@ const char *builtin_ctypename(struct ctype *ctype)
 {
 	int i;
 
-	for (i = 0; i < sizeof(typenames)/sizeof(typenames[0]); i++)
+	for (i = 0; i < ARRAY_SIZE(typenames); i++)
 		if (&typenames[i].sym->ctype == ctype)
 			return typenames[i].name;
 	return NULL;
-- 
1.7.2.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] use ARRAY_SIZE() when possible
  2010-12-09 11:27 [PATCH] use ARRAY_SIZE() when possible Namhyung Kim
@ 2010-12-09 12:36 ` Nicholas Mc Guire
  2010-12-10  8:56   ` Christopher Li
  2010-12-10  8:51 ` Christopher Li
  1 sibling, 1 reply; 4+ messages in thread
From: Nicholas Mc Guire @ 2010-12-09 12:36 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: Christopher Li, linux-sparse

On Thu, 09 Dec 2010, Namhyung Kim wrote:

> Convert (sizeof arr / sizeof arr[0]) to ARRAY_SIZE(arr).
>
would that not be a cadidate for coccinelle/spatch rather than a potentially
error prone and repetitive manual patch?
array.cocci from the current 0.4.2 coccinelle distribution below should du
the job. 
Might make sense to add a coccinelle directory in sparse to handle such cases ?

hofrat
 
// Use the macro ARRAY_SIZE when possible
//
// Confidence: High
// Copyright: (C) Gilles Muller, Julia Lawall, EMN, INRIA, DIKU.  GPLv2.
// URL: http://coccinelle.lip6.fr/rules/array.html
// Options: -I ... -all_includes can give more complete results
virtual org
virtual patch

@i@
@@

#include <linux/kernel.h>

/////////////////////////////////////
/////////////////////////////////////
@depends on i && patch && !org@
type T;
T[] E;
@@

- (sizeof(E)/sizeof(*E))
+ ARRAY_SIZE(E)

@depends on i && patch && !org@
type T;
T[] E;
@@

- (sizeof(E)/sizeof(E[...]))
+ ARRAY_SIZE(E)

@depends on i && patch && !org@
type T;
T[] E;
@@

- (sizeof(E)/sizeof(T))
+ ARRAY_SIZE(E)

@n_patch depends on patch && !org@
identifier AS,E;
@@

- #define AS(E) ARRAY_SIZE(E)

@ depends on patch && !org@
expression E;
identifier n_patch.AS;
@@

- AS(E)
+ ARRAY_SIZE(E)


/////////////////////////////////////
/////////////////////////////////////
@arr_ptr depends on i && !patch && org@
type T;
T[] E;
position p;
@@

 (sizeof(E@p)/sizeof(*E))

@arr_tab depends on i && !patch && org@
type T;
T[] E;
position p;
@@

 (sizeof(E@p)/sizeof(E[...]))

@arr_typ depends on i && !patch && org@
type T;
T[] E;
position p;
@@

 (sizeof(E@p)/sizeof(T))

@n_org depends on !patch && org@
identifier AS,E;
@@

#define AS(E) ARRAY_SIZE(E)

@arr_def depends on !patch && org@
expression E;
identifier n_org.AS;
position p;
@@

AS@p(E)

@script:python@
p << arr_ptr.p;
e << arr_ptr.E;
@@
cocci.print_main(e,p)

@script:python@
p << arr_tab.p;
e << arr_tab.E;
@@
cocci.print_main(e,p)

@script:python@
p << arr_typ.p;
e << arr_typ.E;
@@
cocci.print_main(e,p)

@script:python@
p << arr_def.p;
e << arr_def.E;
@@
cocci.print_main(e,p)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] use ARRAY_SIZE() when possible
  2010-12-09 11:27 [PATCH] use ARRAY_SIZE() when possible Namhyung Kim
  2010-12-09 12:36 ` Nicholas Mc Guire
@ 2010-12-10  8:51 ` Christopher Li
  1 sibling, 0 replies; 4+ messages in thread
From: Christopher Li @ 2010-12-10  8:51 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: linux-sparse

On Thu, Dec 9, 2010 at 3:27 AM, Namhyung Kim <namhyung@gmail.com> wrote:
> Convert (sizeof arr / sizeof arr[0]) to ARRAY_SIZE(arr).
>
> Signed-off-by: Namhyung Kim <namhyung@gmail.com>

Looks good.

Chris

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] use ARRAY_SIZE() when possible
  2010-12-09 12:36 ` Nicholas Mc Guire
@ 2010-12-10  8:56   ` Christopher Li
  0 siblings, 0 replies; 4+ messages in thread
From: Christopher Li @ 2010-12-10  8:56 UTC (permalink / raw)
  To: Nicholas Mc Guire; +Cc: Namhyung Kim, linux-sparse

On Thu, Dec 9, 2010 at 4:36 AM, Nicholas Mc Guire <der.herr@hofr.at> wrote:
> On Thu, 09 Dec 2010, Namhyung Kim wrote:
>
>> Convert (sizeof arr / sizeof arr[0]) to ARRAY_SIZE(arr).
>>
> would that not be a cadidate for coccinelle/spatch rather than a potentially
> error prone and repetitive manual patch?
> array.cocci from the current 0.4.2 coccinelle distribution below should du
> the job.
> Might make sense to add a coccinelle directory in sparse to handle such cases ?
>

Interesting. How do I use the provided script? I assume I need to invoke
coccinelle some how.

Chris

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-12-10  8:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-09 11:27 [PATCH] use ARRAY_SIZE() when possible Namhyung Kim
2010-12-09 12:36 ` Nicholas Mc Guire
2010-12-10  8:56   ` Christopher Li
2010-12-10  8:51 ` Christopher Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).