* Unable to build the AArch64 binutils sources with NDEBUG defined
@ 2024-01-22 17:08 Nick Clifton
2024-01-23 18:30 ` [PATCH] aarch64: Eliminate unused variable warnings with -DNDEBUG Andrew Carlotti
0 siblings, 1 reply; 3+ messages in thread
From: Nick Clifton @ 2024-01-22 17:08 UTC (permalink / raw)
To: Andrew Carlotti; +Cc: Binutils
Hi Andrew,
Sorry for picking on you with an AArch64 build problem,
but you seem to active in the sources at the moment and
this should not be a big issue to solve:
If you build the AArch64 binutils sources with NDEBUG defined,
the assert() function call becomes a no-op and this in turn
leads to some compile time warnings about unused variables.
Since we treat compile time warnings as errors, this means
that the build fails. For example:
$ .../configure --quiet --target=aarch64-linux-gnu CFLAGS="-O2 -g -DNDEBUG"
$ make all-binutils
[...]
opcodes/aarch64-asm.c: In function 'aarch64_ins_sve_strided_reglist':
opcodes/aarch64-asm.c:1328:16: error: unused variable 'mask' [-Werror=unused-variable]
There are a couple more like this.
Fixing them is either a case of replacing the assert() with an "if () return <fail>"
type statement, or marking the variable as possibly unused:
diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c
index 565c4b10559..29e96e244bb 100644
--- a/opcodes/aarch64-asm.c
+++ b/opcodes/aarch64-asm.c
@@ -1325,7 +1325,7 @@ aarch64_ins_sve_strided_reglist (const aarch64_operand *self,
ATTRIBUTE_UNUSED)
{
unsigned int num_regs = get_operand_specific_data (self);
- unsigned int mask = 16 | (16 / num_regs - 1);
+ unsigned int mask ATTRIBUTE_UNUSED = 16 | (16 / num_regs - 1);
unsigned int val = info->reglist.first_regno;
assert ((val & mask) == val);
insert_field (self->fields[0], code, val >> 4, 0);
If you do not have the time to look into this issue, please let me know
and I will fix the problems myself.
Cheers
Nick
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] aarch64: Eliminate unused variable warnings with -DNDEBUG
2024-01-22 17:08 Unable to build the AArch64 binutils sources with NDEBUG defined Nick Clifton
@ 2024-01-23 18:30 ` Andrew Carlotti
2024-01-24 11:47 ` Nick Clifton
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Carlotti @ 2024-01-23 18:30 UTC (permalink / raw)
To: Nick Clifton; +Cc: Binutils
Ok for master and 2.42 branch?
Incidentally, while two of these sections of code were added recently, the
issue in aarch64-dis.c has been present since July 2022.
diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c
index 565c4b10559d1800c39f118d225088da5c1c3e36..29e96e244bb2d01ec5514f5d66acc2ff0c724503 100644
--- a/opcodes/aarch64-asm.c
+++ b/opcodes/aarch64-asm.c
@@ -1325,7 +1325,7 @@ aarch64_ins_sve_strided_reglist (const aarch64_operand *self,
ATTRIBUTE_UNUSED)
{
unsigned int num_regs = get_operand_specific_data (self);
- unsigned int mask = 16 | (16 / num_regs - 1);
+ unsigned int mask ATTRIBUTE_UNUSED = 16 | (16 / num_regs - 1);
unsigned int val = info->reglist.first_regno;
assert ((val & mask) == val);
insert_field (self->fields[0], code, val >> 4, 0);
diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c
index f63b74706f6da606d3df848bd722e5c2ae3f3ecb..82d2f8f8251f0f48e06a85360ebfdf258247de20 100644
--- a/opcodes/aarch64-dis.c
+++ b/opcodes/aarch64-dis.c
@@ -3686,8 +3686,9 @@ get_style_text (enum disassembler_style style)
for (i = 0; i <= 0xf; ++i)
{
- int res = snprintf (&formats[i][0], sizeof (formats[i]), "%c%x%c",
- STYLE_MARKER_CHAR, i, STYLE_MARKER_CHAR);
+ int res ATTRIBUTE_UNUSED
+ = snprintf (&formats[i][0], sizeof (formats[i]), "%c%x%c",
+ STYLE_MARKER_CHAR, i, STYLE_MARKER_CHAR);
assert (res == 3);
}
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index 5b76f2cfa2191fc388adf55ad174f4a1829202f3..965c1c0698c5ab97abde32cd502ae342ad9e34a1 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -3335,12 +3335,11 @@ aarch64_match_operands_constraint (aarch64_inst *inst,
invalid tying and invalid qualifiers, the error about
qualifiers would suggest several alternative instructions
that also have invalid tying. */
- enum aarch64_operand_class op_class1
+ enum aarch64_operand_class op_class
= aarch64_get_operand_class (inst->operands[0].type);
- enum aarch64_operand_class op_class2
- = aarch64_get_operand_class (inst->operands[i].type);
- assert (op_class1 == op_class2);
- if (op_class1 == AARCH64_OPND_CLASS_SVE_REGLIST
+ assert (aarch64_get_operand_class (inst->operands[i].type)
+ == op_class);
+ if (op_class == AARCH64_OPND_CLASS_SVE_REGLIST
? ((inst->operands[0].reglist.first_regno
!= inst->operands[i].reglist.first_regno)
|| (inst->operands[0].reglist.num_regs
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] aarch64: Eliminate unused variable warnings with -DNDEBUG
2024-01-23 18:30 ` [PATCH] aarch64: Eliminate unused variable warnings with -DNDEBUG Andrew Carlotti
@ 2024-01-24 11:47 ` Nick Clifton
0 siblings, 0 replies; 3+ messages in thread
From: Nick Clifton @ 2024-01-24 11:47 UTC (permalink / raw)
To: Andrew Carlotti; +Cc: Binutils
Hi Andrew,
> Ok for master and 2.42 branch?
Approved - please apply to master and branch.
> Incidentally, while two of these sections of code were added recently, the
> issue in aarch64-dis.c has been present since July 2022.
Yes - I only recently decided to add a build to my build farm that was configured
with -DNDEBUG. The idea being to catch problems exactly like this...
Cheers
Nick
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-01-24 11:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-22 17:08 Unable to build the AArch64 binutils sources with NDEBUG defined Nick Clifton
2024-01-23 18:30 ` [PATCH] aarch64: Eliminate unused variable warnings with -DNDEBUG Andrew Carlotti
2024-01-24 11:47 ` Nick Clifton
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 read-only IMAP folder(s) and NNTP newsgroup(s).