Commit 8342981f by Richard Henderson Committed by Jeff Law

* com.c (ffecom_sym_transform_): Assumed arrays have no upper bound.

From-SVN: r17141
parent dfe91418
Fri Dec 19 00:12:01 1997 Richard Henderson <rth@cygnus.com>
* com.c (ffecom_sym_transform_): Assumed arrays have no upper bound.
Mon Dec 15 17:35:35 1997 Richard Henderson <rth@cygnus.com> Mon Dec 15 17:35:35 1997 Richard Henderson <rth@cygnus.com>
* com.c (ffecom_type_vardesc_): Vardesc.dims is a `ftnlen*'. * com.c (ffecom_type_vardesc_): Vardesc.dims is a `ftnlen*'.
......
...@@ -8260,13 +8260,17 @@ ffecom_sym_transform_ (ffesymbol s) ...@@ -8260,13 +8260,17 @@ ffecom_sym_transform_ (ffesymbol s)
assert (ffebld_right (dim) != NULL); assert (ffebld_right (dim) != NULL);
if ((ffebld_op (ffebld_right (dim)) == FFEBLD_opSTAR) if ((ffebld_op (ffebld_right (dim)) == FFEBLD_opSTAR)
|| ffecom_doing_entry_) || ffecom_doing_entry_)
{
/* Used to just do high=low. But for ffecom_tree_ /* Used to just do high=low. But for ffecom_tree_
canonize_ref_, it probably is important to correctly canonize_ref_, it probably is important to correctly
assess the size. E.g. given COMPLEX C(*),CFUNC and assess the size. E.g. given COMPLEX C(*),CFUNC and
C(2)=CFUNC(C), overlap can happen, while it can't C(2)=CFUNC(C), overlap can happen, while it can't
for, say, C(1)=CFUNC(C(2)). */ for, say, C(1)=CFUNC(C(2)). */
high = convert (TREE_TYPE (low), /* Even more recently used to set to INT_MAX, but that
TYPE_MAX_VALUE (TREE_TYPE (low))); broke when some overflow checking went into the back
end. Now we just leave the upper bound unspecified. */
high = NULL;
}
else else
high = ffecom_expr (ffebld_right (dim)); high = ffecom_expr (ffebld_right (dim));
...@@ -8406,7 +8410,7 @@ ffecom_sym_transform_ (ffesymbol s) ...@@ -8406,7 +8410,7 @@ ffecom_sym_transform_ (ffesymbol s)
if (!adjustable if (!adjustable
&& ((TREE_CODE (low) != INTEGER_CST) && ((TREE_CODE (low) != INTEGER_CST)
|| (TREE_CODE (high) != INTEGER_CST))) || (high && TREE_CODE (high) != INTEGER_CST)))
adjustable = TRUE; adjustable = TRUE;
#if 0 /* Old approach -- see below. */ #if 0 /* Old approach -- see below. */
...@@ -8416,7 +8420,7 @@ ffecom_sym_transform_ (ffesymbol s) ...@@ -8416,7 +8420,7 @@ ffecom_sym_transform_ (ffesymbol s)
low, low,
ffecom_integer_zero_node); ffecom_integer_zero_node);
if (TREE_CODE (high) != INTEGER_CST) if (high && TREE_CODE (high) != INTEGER_CST)
high = ffecom_3 (COND_EXPR, integer_type_node, high = ffecom_3 (COND_EXPR, integer_type_node,
ffecom_adjarray_passed_ (s), ffecom_adjarray_passed_ (s),
high, high,
...@@ -8432,7 +8436,7 @@ ffecom_sym_transform_ (ffesymbol s) ...@@ -8432,7 +8436,7 @@ ffecom_sym_transform_ (ffesymbol s)
/* ~~~similarly, this fixes dumb0.f. The C front end /* ~~~similarly, this fixes dumb0.f. The C front end
does this, which is why dumb0.c would work. */ does this, which is why dumb0.c would work. */
if (TREE_CODE (high) != INTEGER_CST) if (high && TREE_CODE (high) != INTEGER_CST)
high = variable_size (high); high = variable_size (high);
type type
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment