simplify ada-valprint.c:ada_val_print_array
authorJoel Brobecker <brobecker@gnat.com>
Mon, 7 Mar 2011 08:57:09 +0000 (08:57 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Mon, 7 Mar 2011 08:57:09 +0000 (08:57 +0000)
Two things:
  - Move the declaration of a couple of variables inside the block
    where they are actually used;
  - Remove some code that checks against NULL/zero, because the
    condition should always be false. Add some gdb_asserts to
    make sure we never fail those assumptions.

gdb/ChangeLog:

        * ada-valprint.c (ada_val_print_array): Move the declaration of
        "byte_order" and "elttype" inside the block where these variables
        are actually used.  Remove some special handling for the case
        where "elttype" and "eltlen" are null.  Replace by a comment
        and a couple of assertion checks.

gdb/ChangeLog
gdb/ada-valprint.c

index 48870264158e8a0cc4865aa46ad1e02c3d6a9e48..965917cd550d42278ff1d5d959a699ded3e02c43 100644 (file)
@@ -1,3 +1,12 @@
+2011-03-07  Joel Brobecker  <brobecker@adacore.com>
+           Michael Snyder  <msnyder@vmware.com>
+
+       * ada-valprint.c (ada_val_print_array): Move the declaration of
+       "byte_order" and "elttype" inside the block where these variables
+       are actually used.  Remove some special handling for the case
+       where "elttype" and "eltlen" are null.  Replace by a comment
+       and a couple of assertion checks.
+
 2011-03-05  Michael Snyder  <msnyder@vmware.com>
 
        * source.c (add_path): Replace semicolon at end of block.
index 9381ecca5cdcc5945296bd844ada172610fb5127..09266ceb6beb2da1808b9b663633f050dd0cea9a 100644 (file)
@@ -605,25 +605,25 @@ ada_val_print_array (struct type *type, const gdb_byte *valaddr,
                     const struct value *val,
                     const struct value_print_options *options)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
-  struct type *elttype = TYPE_TARGET_TYPE (type);
   int result = 0;
 
   /* For an array of chars, print with string syntax.  */
   if (ada_is_string_type (type)
       && (options->format == 0 || options->format == 's'))
     {
+      enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
+      struct type *elttype = TYPE_TARGET_TYPE (type);
       unsigned int eltlen;
       unsigned int len;
 
-      if (elttype == NULL)
-        eltlen = 0;
-      else
-        eltlen = TYPE_LENGTH (elttype);
-      if (eltlen == 0)
-        len = 0;
-      else
-        len = TYPE_LENGTH (type) / eltlen;
+      /* We know that ELTTYPE cannot possibly be null, because we found
+        that TYPE is a string-like type.  Similarly, the size of ELTTYPE
+        should also be non-null, since it's a character-like type.  */
+      gdb_assert (elttype != NULL);
+      gdb_assert (TYPE_LENGTH (elttype) != 0);
+
+      eltlen = TYPE_LENGTH (elttype);
+      len = TYPE_LENGTH (type) / eltlen;
 
       if (options->prettyprint_arrays)
         print_spaces_filtered (2 + 2 * recurse, stream);