args = 2;
break;
- case OP_F77_SUBSTR:
- oplen = 1;
- args = 2;
- break;
-
case OP_FUNCALL:
case OP_F77_UNDETERMINED_ARGLIST:
oplen = 3;
/* Modula-2 */
case MULTI_SUBSCRIPT:
- /* Fortran */
- case MULTI_F77_SUBSCRIPT:
oplen = 3;
args = 1 + longest_to_int (expr->elts[endpos- 2].longconst);
break;
args = 2;
break;
- case OP_F77_SUBSTR:
- oplen = 1;
- args = 2;
- break;
-
case OP_FUNCALL:
case OP_F77_UNDETERMINED_ARGLIST:
oplen = 3;
/* Modula-2 */
case MULTI_SUBSCRIPT:
- /* Fortran */
- case MULTI_F77_SUBSCRIPT:
oplen = 3;
args = 1 + longest_to_int (inexpr->elts[inend - 2].longconst);
break;
break;
case tp_array:
array_size = pop_type_int ();
- if (array_size != -1)
- {
- range_type =
- create_range_type ((struct type *) NULL,
- builtin_type_int, 0,
- array_size - 1);
- follow_type =
- create_array_type ((struct type *) NULL,
- follow_type, range_type);
- }
- else
- follow_type = lookup_pointer_type (follow_type);
+ /* FIXME-type-allocation: need a way to free this type when we are
+ done with it. */
+ range_type =
+ create_range_type ((struct type *) NULL,
+ builtin_type_int, 0,
+ array_size >= 0 ? array_size - 1 : 0);
+ follow_type =
+ create_array_type ((struct type *) NULL,
+ follow_type, range_type);
+ if (array_size < 0)
+ TYPE_ARRAY_UPPER_BOUND_TYPE(follow_type)
+ = BOUND_CANNOT_BE_DETERMINED;
break;
case tp_function:
+ /* FIXME-type-allocation: need a way to free this type when we are
+ done with it. */
follow_type = lookup_function_type (follow_type);
break;
}