From: Alan Modra Date: Sat, 7 Jun 2025 11:58:41 +0000 (+0930) Subject: metag build error X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3f1e0239c93484b5a06af06a47f833150a3df38;p=thirdparty%2Fbinutils-gdb.git 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 --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. */