From: Markus Elfring <Markus.Elfring@web.de>
To: cocci@inria.fr, tools@kernel.org
Cc: kernel-janitors@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: [RFC] Replacing special goto statements by direct returns?
Date: Tue, 3 Nov 2026 15:23:23 +0100 [thread overview]
Message-ID: <52418f50-b3ff-461d-8e66-c10f70e35b2a@web.de> (raw)
Hello,
The documentation for the Linux coding style contains the following information.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?h=v7.4-rc1#n526
“…
The goto statement comes in handy when a function exits from multiple
locations and some common work such as cleanup has to be done. If there is no
cleanup needed then just return directly.
…”
Thus it seems that the following script for the semantic patch language
can work to some degree.
@replacement exists@
identifier label, var;
@@
-goto label;
+return var;
...
-label:
return var;
Unfortunately, patches would be generated then by such a simple SmPL code
which would still preserve return statements that became unreachable.
Test result example:
Markus_Elfring@Sonne:…/Projekte/Linux/next-analyses> time spatch --allow-inconsistent-paths fs/xfs/libxfs/xfs_btree.c …/Projekte/Coccinelle/janitor/replace_goto_by_return2.cocci
…
@@ -1735,7 +1735,7 @@ xfs_btree_increment(
--lev;
error = xfs_btree_read_buf_block(cur, ptrp, 0, &block, &bp);
if (error)
- goto error0;
+ return error;
xfs_btree_setbuf(cur, lev, bp);
cur->bc_levels[lev].ptr = 1;
@@ -1747,8 +1747,6 @@ out1:
out0:
*stat = 0;
return 0;
-
-error0:
return error;
}
…
real 0m1,074s
user 0m0,995s
sys 0m0,071s
How should such a source code transformation approach be improved accordingly?
Regards,
Markus
next reply other threads:[~2026-11-03 14:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 14:23 Markus Elfring [this message]
2026-11-03 16:38 ` Julia Lawall
2026-11-03 17:48 ` Markus Elfring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52418f50-b3ff-461d-8e66-c10f70e35b2a@web.de \
--to=markus.elfring@web.de \
--cc=cocci@inria.fr \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tools@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®