From b3f1e0239c93484b5a06af06a47f833150a3df38 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 7 Jun 2025 21:28:41 +0930 Subject: [PATCH] metag build error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. --- 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. */ -- 2.47.2