From: Luc Van Oostenryck <lucvoo@kernel.org>
To: linux-sparse@vger.kernel.org
Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: [PATCH 2/6] inline: comment about creating node of node on variadics
Date: Sun, 26 Jun 2022 15:07:44 +0200 [thread overview]
Message-ID: <20220626130748.74163-3-lucvoo@kernel.org> (raw)
In-Reply-To: <20220626130748.74163-1-lucvoo@kernel.org>
From: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
When inlining a variadic function (unsupported in general by
sparse but OK when the arguments are unused and occurs as such
in the kernel), the extra arguments are added in the declaration
list as SYM_NODE.
But these arguments can already be SYM_NODEs. Sparse doesn't
support everywhere such nested nodes (they must be merged) but
in this case it's fine as the node will be merged when evaluated.
Add a comment telling the situation is fine.
Also, move the code to where the variadic arguments are handled
since the fixed one will be anyway directly overwritten.
Note: Sparse doesn't really support inlining of variadic functions
but is fine when the arguments are not used (and such cases
occur in the kernel).
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
inline.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/inline.c b/inline.c
index 0097e4bf620a..d031c9b19128 100644
--- a/inline.c
+++ b/inline.c
@@ -542,11 +542,15 @@ int inline_function(struct expression *expr, struct symbol *sym)
FOR_EACH_PTR(arg_list, arg) {
struct symbol *a = alloc_symbol(arg->pos, SYM_NODE);
- a->ctype.base_type = arg->ctype;
if (name) {
*a = *name;
set_replace(name, a);
add_symbol(&fn_symbol_list, a);
+ } else {
+ // This may create a node of a node but it will
+ // be resolved later when the corresponding
+ // STMT_DECLARATION will be evaluated.
+ a->ctype.base_type = arg->ctype;
}
a->initializer = arg;
add_symbol(&arg_decl, a);
--
2.36.1
next prev parent reply other threads:[~2022-06-26 13:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-26 13:07 [PATCH 0/6] cleanup related to inlining of variadic functions Luc Van Oostenryck
2022-06-26 13:07 ` [PATCH 1/6] inline: add testcases for inlining of variadics Luc Van Oostenryck
2022-06-26 13:07 ` Luc Van Oostenryck [this message]
2022-06-26 14:42 ` [PATCH 2/6] inline: comment about creating node of node on variadics Ramsay Jones
2022-06-26 16:07 ` Luc Van Oostenryck
2022-06-26 13:07 ` [PATCH 3/6] inline: declaration of the variadic vars is useless Luc Van Oostenryck
2022-06-26 13:07 ` [PATCH 4/6] inline: avoid needless intermediate vars Luc Van Oostenryck
2022-06-26 14:45 ` Ramsay Jones
2022-06-26 13:07 ` [PATCH 5/6] inline: allocate statement after guards Luc Van Oostenryck
2022-06-26 13:07 ` [PATCH 6/6] inline: free symbol list after use Luc Van Oostenryck
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=20220626130748.74163-3-lucvoo@kernel.org \
--to=lucvoo@kernel.org \
--cc=linux-sparse@vger.kernel.org \
--cc=luc.vanoostenryck@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).