From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org
Subject: [Qemu-devel] [PULL 2/3] decodetree: Suppress redundant declaration warnings
Date: Mon, 19 Aug 2019 08:17:42 -0700 [thread overview]
Message-ID: <20190819151743.17267-3-richard.henderson@linaro.org> (raw)
In-Reply-To: <20190819151743.17267-1-richard.henderson@linaro.org>
We can tell that a decodetree input file is "secondary" when it
uses an argument set marked "!extern". This indicates that at
least one of the insn translation functions will have already
been declared by the "primary" input file, but given only the
secondary we cannot tell which.
Avoid redundant declaration warnings by suppressing them with pragmas.
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
scripts/decodetree.py | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/scripts/decodetree.py b/scripts/decodetree.py
index f6f7368774..d8c59cab60 100755
--- a/scripts/decodetree.py
+++ b/scripts/decodetree.py
@@ -33,6 +33,7 @@ arguments = {}
formats = {}
patterns = []
allpatterns = []
+anyextern = False
translate_prefix = 'trans'
translate_scope = 'static '
@@ -482,12 +483,14 @@ def parse_arguments(lineno, name, toks):
"""Parse one argument set from TOKS at LINENO"""
global arguments
global re_ident
+ global anyextern
flds = []
extern = False
for t in toks:
if re_fullmatch('!extern', t):
extern = True
+ anyextern = True
continue
if not re_fullmatch(re_ident, t):
error(lineno, 'invalid argument set token "{0}"'.format(t))
@@ -1188,6 +1191,7 @@ def main():
global insnmask
global decode_function
global variablewidth
+ global anyextern
decode_scope = 'static '
@@ -1248,6 +1252,19 @@ def main():
# A single translate function can be invoked for different patterns.
# Make sure that the argument sets are the same, and declare the
# function only once.
+ #
+ # If we're sharing formats, we're likely also sharing trans_* functions,
+ # but we can't tell which ones. Prevent issues from the compiler by
+ # suppressing redundant declaration warnings.
+ if anyextern:
+ output("#ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE\n",
+ "# pragma GCC diagnostic push\n",
+ "# pragma GCC diagnostic ignored \"-Wredundant-decls\"\n",
+ "# ifdef __clang__\n"
+ "# pragma GCC diagnostic ignored \"-Wtypedef-redefinition\"\n",
+ "# endif\n",
+ "#endif\n\n")
+
out_pats = {}
for i in allpatterns:
if i.name in out_pats:
@@ -1259,6 +1276,11 @@ def main():
out_pats[i.name] = i
output('\n')
+ if anyextern:
+ output("#ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE\n",
+ "# pragma GCC diagnostic pop\n",
+ "#endif\n\n")
+
for n in sorted(formats.keys()):
f = formats[n]
f.output_extract()
--
2.17.1
next prev parent reply other threads:[~2019-08-19 15:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-19 15:17 [Qemu-devel] [PULL 0/3] decodetree improvements Richard Henderson
2019-08-19 15:17 ` [Qemu-devel] [PULL 1/3] decodetree: Allow !function with no input bits Richard Henderson
2019-08-19 15:17 ` Richard Henderson [this message]
2019-08-19 15:17 ` [Qemu-devel] [PULL 3/3] target/riscv: Remove redundant declaration pragmas Richard Henderson
2019-08-20 9:19 ` [Qemu-devel] [PULL 0/3] decodetree improvements Peter Maydell
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=20190819151743.17267-3-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.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;
as well as URLs for NNTP newsgroup(s).