Work around gcc9 warning bug
authorAlan Modra <amodra@gmail.com>
Sun, 28 Apr 2019 23:47:05 +0000 (09:17 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 30 Apr 2019 12:34:32 +0000 (22:04 +0930)
* wrstabs.c (stab_start_class_type): Add assert to work around
gcc9 warning.  Tidy.

binutils/ChangeLog
binutils/wrstabs.c

index 8fbc761..364fddb 100644 (file)
@@ -1,3 +1,8 @@
+2019-04-30  Alan Modra  <amodra@gmail.com>
+
+       * wrstabs.c (stab_start_class_type): Add assert to work around
+       gcc9 warning.  Tidy.
+
 2019-04-24  Nick Clifton  <nickc@redhat.com>
 
        * objcopy.c (strip_main): Do not enable note merging by default if
index 3d1839f..3e941dc 100644 (file)
@@ -1440,18 +1440,15 @@ stab_end_struct_type (void *p)
 /* Start outputting a class.  */
 
 static bfd_boolean
-stab_start_class_type (void *p, const char *tag, unsigned int id, bfd_boolean structp, unsigned int size, bfd_boolean vptr, bfd_boolean ownvptr)
+stab_start_class_type (void *p, const char *tag, unsigned int id,
+                      bfd_boolean structp, unsigned int size,
+                      bfd_boolean vptr, bfd_boolean ownvptr)
 {
   struct stab_write_handle *info = (struct stab_write_handle *) p;
-  bfd_boolean definition;
-  char *vstring;
+  bfd_boolean definition = FALSE;
+  char *vstring = NULL;
 
-  if (! vptr || ownvptr)
-    {
-      definition = FALSE;
-      vstring = NULL;
-    }
-  else
+  if (vptr && !ownvptr)
     {
       definition = info->type_stack->definition;
       vstring = stab_pop_type (info);
@@ -1472,17 +1469,16 @@ stab_start_class_type (void *p, const char *tag, unsigned int id, bfd_boolean st
        }
       else
        {
+         assert (vstring);
          vtable = (char *) xmalloc (strlen (vstring) + 3);
          sprintf (vtable, "~%%%s", vstring);
          free (vstring);
+         if (definition)
+           info->type_stack->definition = TRUE;
        }
-
       info->type_stack->vtable = vtable;
     }
 
-  if (definition)
-    info->type_stack->definition = TRUE;
-
   return TRUE;
 }