* [PATCH 0/13] make return of 0 explicit
@ 2014-05-19 4:31 Julia Lawall
2014-05-19 4:31 ` [PATCH 13/13] s390/irq: " Julia Lawall
0 siblings, 1 reply; 3+ messages in thread
From: Julia Lawall @ 2014-05-19 4:31 UTC (permalink / raw)
To: brcm80211-dev-list
Cc: kernel-janitors, alsa-devel, coreteam, netfilter, netfilter-devel,
linux-scsi, linux-kernel, libertas-dev, linux-wireless, netdev,
linux-usb, devel, linux-raid, oprofile-list, linux-s390
Sometimes a local variable is used as a return value in a case where the
return value is always 0. The result is more apparent if this variable is
just replaced by 0. This is done by the following semantic patch, although
some cleanups may be needed. (http://coccinelle.lip6.fr/)
// <smpl>
@r exists@
local idexpression ret;
identifier reti;
expression e;
position p;
@@
ret@reti = 0;
... when != \(ret = e\|ret &= e\|ret |= e\|ret += e\|ret -= e\|ret *= e\|ret ^= e\)
when != \(++ret\|--ret\|ret++\|ret--\)
when != &ret
return ret;@p
@bad1 exists@
expression e != 0;
local idexpression r.ret;
position r.p;
@@
\(ret = e\|ret &= e\|ret |= e\|ret += e\|ret -= e\|ret *= e\|ret ^= e\|++ret\|--ret\|ret++\|ret--\|&ret\)
...
return ret;@p
@bad2 exists@
identifier r.reti;
position r.p;
identifier f;
type T;
@@
f(...,T reti,...) {
...
return reti;@p
}
@change depends on !bad1 && !bad2@
position r.p;
local idexpression r.ret;
identifier f;
@@
f(...) { <+...
return
-ret
+0
;@p
...+> }
@rewrite@
local idexpression r.ret;
expression e;
position p;
identifier change.f;
@@
f(...) { <+...
\(ret@p = e\|&ret@p\)
...+> }
@depends on change@
local idexpression r.ret;
position p != rewrite.p;
identifier change.f;
@@
f(...) { <+...
(
break;
|
ret = 0;
... when exists
ret@p
... when any
|
- ret = 0;
)
...+> }
@depends on change@
identifier r.reti;
type T;
constant C;
identifier change.f;
@@
f(...) { ... when any
-T reti = C;
... when != reti
when strict
}
@depends on change@
identifier r.reti;
type T;
identifier change.f;
@@
f(...) { ... when any
-T reti;
... when != reti
when strict
}
// </smpl>
The first four rules detect cases where only 0 reaches a return. The
remaining rules clean up any variable initializations or declarations that
are made unnecessary by this change.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 13/13] s390/irq: make return of 0 explicit
2014-05-19 4:31 [PATCH 0/13] make return of 0 explicit Julia Lawall
@ 2014-05-19 4:31 ` Julia Lawall
2014-05-19 6:03 ` Heiko Carstens
0 siblings, 1 reply; 3+ messages in thread
From: Julia Lawall @ 2014-05-19 4:31 UTC (permalink / raw)
To: Robert Richter
Cc: kernel-janitors, Martin Schwidefsky, Heiko Carstens, linux390,
oprofile-list, linux-s390, linux-kernel
From: Julia Lawall <Julia.Lawall@lip6.fr>
Delete unnecessary local variable whose value is always 0 and that hides
the fact that the result is always 0.
A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@r exists@
local idexpression ret;
expression e;
position p;
@@
-ret = 0;
... when != ret = e
return
- ret
+ 0
;
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
---
arch/s390/oprofile/hwsampler.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/s390/oprofile/hwsampler.c b/arch/s390/oprofile/hwsampler.c
index 276f2e2..28b2760 100644
--- a/arch/s390/oprofile/hwsampler.c
+++ b/arch/s390/oprofile/hwsampler.c
@@ -212,10 +212,8 @@ static void init_all_cpu_buffers(void)
static int prepare_cpu_buffers(void)
{
int cpu;
- int rc;
struct hws_cpu_buffer *cb;
- rc = 0;
for_each_online_cpu(cpu) {
cb = &per_cpu(sampler_cpu_buffer, cpu);
atomic_set(&cb->ext_params, 0);
@@ -231,7 +229,7 @@ static int prepare_cpu_buffers(void)
cb->stop_mode = 0;
}
- return rc;
+ return 0;
}
/*
@@ -1156,7 +1154,7 @@ int hwsampler_stop_all(void)
rc = 0;
if (hws_state == HWS_INIT) {
mutex_unlock(&hws_sem);
- return rc;
+ return 0;
}
hws_state = HWS_STOPPING;
mutex_unlock(&hws_sem);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 13/13] s390/irq: make return of 0 explicit
2014-05-19 4:31 ` [PATCH 13/13] s390/irq: " Julia Lawall
@ 2014-05-19 6:03 ` Heiko Carstens
0 siblings, 0 replies; 3+ messages in thread
From: Heiko Carstens @ 2014-05-19 6:03 UTC (permalink / raw)
To: Julia Lawall
Cc: Robert Richter, kernel-janitors, Martin Schwidefsky, linux390,
oprofile-list, linux-s390, linux-kernel
On Mon, May 19, 2014 at 06:31:15AM +0200, Julia Lawall wrote:
> From: Julia Lawall <Julia.Lawall@lip6.fr>
>
> Delete unnecessary local variable whose value is always 0 and that hides
> the fact that the result is always 0.
>
> A simplified version of the semantic patch that fixes this problem is as
> follows: (http://coccinelle.lip6.fr/)
>
> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
>
> ---
> arch/s390/oprofile/hwsampler.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/arch/s390/oprofile/hwsampler.c b/arch/s390/oprofile/hwsampler.c
> index 276f2e2..28b2760 100644
> --- a/arch/s390/oprofile/hwsampler.c
> +++ b/arch/s390/oprofile/hwsampler.c
> @@ -212,10 +212,8 @@ static void init_all_cpu_buffers(void)
> static int prepare_cpu_buffers(void)
> {
> int cpu;
> - int rc;
> struct hws_cpu_buffer *cb;
>
> - rc = 0;
> for_each_online_cpu(cpu) {
> cb = &per_cpu(sampler_cpu_buffer, cpu);
> atomic_set(&cb->ext_params, 0);
> @@ -231,7 +229,7 @@ static int prepare_cpu_buffers(void)
> cb->stop_mode = 0;
> }
>
> - return rc;
> + return 0;
> }
Thanks Julia,
I applied a slightly different version which also turns prepare_cpu_buffers
into a void returning function.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-19 6:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-19 4:31 [PATCH 0/13] make return of 0 explicit Julia Lawall
2014-05-19 4:31 ` [PATCH 13/13] s390/irq: " Julia Lawall
2014-05-19 6:03 ` Heiko Carstens
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).