[binutils-gdb] metag build error
Alan Modra
amodra@sourceware.org
Mon Jun 9 02:20:12 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b3f1e0239c93484b5a06af06a47f833150a3df38
commit b3f1e0239c93484b5a06af06a47f833150a3df38
Author: Alan Modra <amodra@gmail.com>
Date: Sat Jun 7 21:28:41 2025 +0930
metag build error
gas/config/tc-metag.c: In function ‘parse_dsp_addr’:
gas/config/tc-metag.c:4386:29: error: ‘regs[0]’ may be used uninitialized [-Werror=maybe-uninitialized]
4386 | if (!is_addr_unit (regs[0]->unit) &&
| ~~~~~~~^~~~~~
It looks like regs_read can be zero with "l" non-NULL, so this gcc
complaint is accurate.
* config/tc-metag.c (parse_dsp_addr, parse_dget_set): Check
regs_read.
Diff:
---
gas/config/tc-metag.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/gas/config/tc-metag.c b/gas/config/tc-metag.c
index 09ee5c3acea..cd0c50ff9c9 100644
--- a/gas/config/tc-metag.c
+++ b/gas/config/tc-metag.c
@@ -4380,11 +4380,10 @@ parse_dsp_addr (const char *line, metag_addr *addr, unsigned int size,
l = parse_dsp_regs_list (l, regs, 1, ®s_read, true, true, load, false);
- if (l == NULL)
+ if (l == NULL || regs_read == 0)
return NULL;
- if (!is_addr_unit (regs[0]->unit) &&
- !is_dspram_reg (regs[0]))
+ if (!is_addr_unit (regs[0]->unit) && !is_dspram_reg (regs[0]))
{
as_bad (_("invalid register for memory access"));
return NULL;
@@ -4434,7 +4433,7 @@ parse_dsp_addr (const char *line, metag_addr *addr, unsigned int size,
l = parse_dsp_regs_list (l, regs, 1, ®s_read, true, true, load, false);
- if (l == NULL)
+ if (l == NULL || regs_read == 0)
return NULL;
if (regs[0]->unit != addr->base_reg->unit)
@@ -4522,7 +4521,7 @@ parse_dget_set (const char *line, metag_insn *insn,
false, false);
}
- if (l == NULL)
+ if (l == NULL || regs_read == 0)
return NULL;
/* The first register dictates the unit. */
More information about the Binutils-cvs
mailing list