re PR fortran/34706 (FE should reuse array temporaries, reduce temporaties and tell ME the array-size type)
2008-01-08 Richard Guenther <rguenther@suse.de> PR fortran/34706 PR tree-optimization/34683 * trans-types.c (gfc_get_array_type_bounds): Use an array type with known size for accesses if that is known. From-SVN: r131404
This commit is contained in:
parent
4d86971803
commit
416a8af4da
@ -1,3 +1,10 @@
|
||||
2008-01-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR fortran/34706
|
||||
PR tree-optimization/34683
|
||||
* trans-types.c (gfc_get_array_type_bounds): Use an array type
|
||||
with known size for accesses if that is known.
|
||||
|
||||
2008-01-08 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/34476
|
||||
|
@ -1436,7 +1436,7 @@ gfc_get_array_type_bounds (tree etype, int dimen, tree * lbound,
|
||||
enum gfc_array_kind akind)
|
||||
{
|
||||
char name[8 + GFC_RANK_DIGITS + GFC_MAX_SYMBOL_LEN];
|
||||
tree fat_type, base_type, arraytype, lower, upper, stride, tmp;
|
||||
tree fat_type, base_type, arraytype, lower, upper, stride, tmp, rtype;
|
||||
const char *typename;
|
||||
int n;
|
||||
|
||||
@ -1511,10 +1511,15 @@ gfc_get_array_type_bounds (tree etype, int dimen, tree * lbound,
|
||||
/* TODO: known offsets for descriptors. */
|
||||
GFC_TYPE_ARRAY_OFFSET (fat_type) = NULL_TREE;
|
||||
|
||||
/* We define data as an unknown size array. Much better than doing
|
||||
pointer arithmetic. */
|
||||
arraytype =
|
||||
build_array_type (etype, gfc_array_range_type);
|
||||
/* We define data as an array with the correct size if possible.
|
||||
Much better than doing pointer arithmetic. */
|
||||
if (stride)
|
||||
rtype = build_range_type (gfc_array_index_type, gfc_index_zero_node,
|
||||
int_const_binop (MINUS_EXPR, stride,
|
||||
integer_one_node, 0));
|
||||
else
|
||||
rtype = gfc_array_range_type;
|
||||
arraytype = build_array_type (etype, rtype);
|
||||
arraytype = build_pointer_type (arraytype);
|
||||
GFC_TYPE_ARRAY_DATAPTR_TYPE (fat_type) = arraytype;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user