aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>1995-02-02 05:23:51 +0000
committerPer Bothner <per@bothner.com>1995-02-02 05:23:51 +0000
commit8a329002330ebe88b40210dfa64e57314275396b (patch)
treed03eee5aaf3cba3e3592cc741195d56750113666 /gdb
parentb7a24051cf6415d9482b7af73375ae5637b7cba1 (diff)
downloadgdb-8a329002330ebe88b40210dfa64e57314275396b.zip
gdb-8a329002330ebe88b40210dfa64e57314275396b.tar.gz
gdb-8a329002330ebe88b40210dfa64e57314275396b.tar.bz2
* 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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/f-typeprint.c10
-rw-r--r--gdb/f-valprint.c23
-rw-r--r--gdb/parse.c14
4 files changed, 24 insertions, 34 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e11602b..6a000d2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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).
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
index 58558e4..699c61d 100644
--- a/gdb/f-typeprint.c
+++ b/gdb/f-typeprint.c
@@ -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;
diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index f094971..5d4c1eb 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -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;
}
}
diff --git a/gdb/parse.c b/gdb/parse.c
index e2723b7..dff887e 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -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;