]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
metag build error
authorAlan Modra <amodra@gmail.com>
Sat, 7 Jun 2025 11:58:41 +0000 (21:28 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 9 Jun 2025 00:34:03 +0000 (10:04 +0930)
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

index 09ee5c3acea3ffbc98b9a4de657783fbf64af8b7..cd0c50ff9c990cb34d75e65e5105cdf4e1f9238a 100644 (file)
@@ -4380,11 +4380,10 @@ parse_dsp_addr (const char *line, metag_addr *addr, unsigned int size,
 
   l = parse_dsp_regs_list (l, regs, 1, &regs_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, &regs_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.  */