* ada-valprint.c (print_optional_low_bound): Handle properly
authorJoel Brobecker <brobecker@gnat.com>
Mon, 10 Oct 2005 01:05:32 +0000 (01:05 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Mon, 10 Oct 2005 01:05:32 +0000 (01:05 +0000)
        cases where the array index type is a TYPE_CODE_RANGE.

gdb/ChangeLog
gdb/ada-valprint.c

index c0f89fd8107194195a049b7ebb9582508607861c..666fd793c3713853c41ad23b0d2d08631fd85c84 100644 (file)
@@ -1,4 +1,9 @@
-2005-10-05  Joel Brobecker  <brobecker@adacore.com>
+2005-10-09  Joel Brobecker  <brobecker@adacore.com>
+
+       * ada-valprint.c (print_optional_low_bound): Handle properly
+       cases where the array index type is a TYPE_CODE_RANGE.
+
+2005-10-09  Joel Brobecker  <brobecker@adacore.com>
 
        * valprint.c (val_print_array_elements): Check array size before
        computing its low bound. If zero, then use a default bound of zero.
index a02bf6e39928f331fe843976a51c76f7fbb63b23..2548a5fe026e83c7a80bf0b146d976db5afe7e6f 100644 (file)
@@ -94,6 +94,16 @@ print_optional_low_bound (struct ui_file *stream, struct type *type)
 
   index_type = TYPE_INDEX_TYPE (type);
 
+  if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
+    {
+      /* We need to know what the base type is, in order to do the
+         appropriate check below.  Otherwise, if this is a subrange
+         of an enumerated type, where the underlying value of the
+         first element is typically 0, we might test the low bound
+         against the wrong value.  */
+      index_type = TYPE_TARGET_TYPE (index_type);
+    }
+
   switch (TYPE_CODE (index_type))
     {
     case TYPE_CODE_ENUM: