* f-typeprint.c (f_type_print_varspec_suffix): Print array index
authorPer Bothner <per@bothner.com>
Thu, 2 Feb 1995 05:23:51 +0000 (05:23 +0000)
committerPer Bothner <per@bothner.com>
Thu, 2 Feb 1995 05:23:51 +0000 (05:23 +0000)
ranges in reverse order.
* f-valprint.c (f77_create_arrayprint_offset_tbl):  Fix calculation.

* eval.c (evaluate_subscript):  Don't call value_subscript, since
it adjusts for lower bound and enforces ranges.

* expression.h (exp_code):  Remove MULTI_F77_SUBSCRIPT, OP_F77_SUBSTR.
* eval.c, parse.c:  Removed uses of removed opcodes.

gdb/ChangeLog
gdb/f-typeprint.c
gdb/f-valprint.c
gdb/parse.c

index e11602b4dee6bf585b815097ed4c4373d6f94f08..6a000d2a75318b99762872488984b71cddfe0b2e 100644 (file)
@@ -1,5 +1,14 @@
-Wed Feb  1 15:44:11 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+Wed Feb  1 21:16:42 1995  Per Bothner  <bothner@kalessin.cygnus.com>
 
+       * f-typeprint.c (f_type_print_varspec_suffix):  Print array index
+       ranges in reverse order.
+       * f-valprint.c (f77_create_arrayprint_offset_tbl):  Fix calculation.
+
+       * eval.c (evaluate_subscript):  Don't call value_subscript, since
+       it adjusts for lower bound and enforces ranges.
+
+       * expression.h (exp_code):  Remove MULTI_F77_SUBSCRIPT, OP_F77_SUBSTR.
+       * eval.c, parse.c:  Removed uses of removed opcodes.
        * eval.c (evaluate_subexp):  Clean up handling of
        OP_UNDETERMINED_ARGLIST (no backtracking, more general).
 
index 58558e4b5d609df0b042503764a0c693b5869c0d..699c61dbbf4ef891e61a23e6e142c4feef4f1a67 100644 (file)
@@ -216,8 +216,9 @@ f_type_print_varspec_suffix (type, stream, show, passed_a_ptr, demangled_args)
 
       if (arrayprint_recurse_level == 1)
        fprintf_filtered(stream,"(");
-      else
-       fprintf_filtered(stream,",");
+
+      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
+       f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0);
 
       retcode = f77_get_dynamic_lowerbound (type,&lower_bound);
 
@@ -251,9 +252,12 @@ f_type_print_varspec_suffix (type, stream, show, passed_a_ptr, demangled_args)
             fprintf_filtered(stream,"%d",upper_bound);
         }
 
-      f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0);
+      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY)
+       f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0);
       if (arrayprint_recurse_level == 1)
        fprintf_filtered (stream, ")");
+      else
+       fprintf_filtered(stream,",");
       arrayprint_recurse_level--;
       break;
 
index f094971ad166549ad2bb03b6f1e72e8915e55441..5d4c1eb93ee4a8660694815d38f062ada7e276ee 100644 (file)
@@ -225,7 +225,7 @@ f77_create_arrayprint_offset_tbl (type, stream)
      FILE *stream;
 {
   struct type *tmp_type;
-  int eltlen; 
+  int eltlen;
   int ndimen = 1;
   int upper, lower, retcode; 
   
@@ -246,31 +246,22 @@ f77_create_arrayprint_offset_tbl (type, stream)
       
       F77_DIM_SIZE (ndimen) = upper - lower + 1;
       
-      if (ndimen == 1)
-       F77_DIM_OFFSET (ndimen) = 1;
-      else
-       F77_DIM_OFFSET (ndimen) = 
-         F77_DIM_OFFSET (ndimen - 1) * F77_DIM_SIZE(ndimen - 1);
-      
       tmp_type = TYPE_TARGET_TYPE (tmp_type);
       ndimen++; 
     }
   
-  eltlen = TYPE_LENGTH (tmp_type); 
-
   /* Now we multiply eltlen by all the offsets, so that later we 
      can print out array elements correctly.  Up till now we 
      know an offset to apply to get the item but we also 
      have to know how much to add to get to the next item */
   
-  tmp_type = type; 
-  ndimen = 1
-  
-  while ((TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)) 
+  ndimen--;
+  eltlen = TYPE_LENGTH (tmp_type)
+  F77_DIM_OFFSET (ndimen) = eltlen;
+  while (--ndimen > 0)
     {
-      F77_DIM_OFFSET (ndimen) *= eltlen; 
-      ndimen++;
-      tmp_type = TYPE_TARGET_TYPE (tmp_type);
+      eltlen *= F77_DIM_SIZE (ndimen + 1);
+      F77_DIM_OFFSET (ndimen) = eltlen;
     }
 }
 
index e2723b7c845a80ae84f379f594f81c677ac74d7b..dff887e0d95547e9b5128df3112a6fb35dfa4900 100644 (file)
@@ -475,11 +475,6 @@ length_of_subexp (expr, endpos)
       args = 2;
       break; 
 
-    case OP_F77_SUBSTR:
-      oplen = 1; 
-      args = 2;
-      break; 
-
     case OP_FUNCALL:
     case OP_F77_UNDETERMINED_ARGLIST:
       oplen = 3;
@@ -542,8 +537,6 @@ length_of_subexp (expr, endpos)
 
       /* Modula-2 */
    case MULTI_SUBSCRIPT:
-      /* Fortran */
-   case MULTI_F77_SUBSCRIPT:
       oplen = 3;
       args = 1 + longest_to_int (expr->elts[endpos- 2].longconst);
       break;
@@ -620,11 +613,6 @@ prefixify_subexp (inexpr, outexpr, inend, outbeg)
       args = 2; 
       break; 
 
-   case OP_F77_SUBSTR:
-      oplen = 1; 
-      args = 2; 
-      break; 
-
     case OP_FUNCALL:
     case OP_F77_UNDETERMINED_ARGLIST:
       oplen = 3;
@@ -691,8 +679,6 @@ prefixify_subexp (inexpr, outexpr, inend, outbeg)
 
       /* Modula-2 */
    case MULTI_SUBSCRIPT:
-      /* Fortran */
-   case MULTI_F77_SUBSCRIPT:
       oplen = 3;
       args = 1 + longest_to_int (inexpr->elts[inend - 2].longconst);
       break;