aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r--gcc/fortran/trans.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index aa10fbb..153bab6 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -407,7 +407,12 @@ gfc_build_array_ref (tree base, tree offset, tree decl, tree vptr)
if (vptr)
span = gfc_vptr_size_get (vptr);
else if (decl)
- span = get_array_span (type, decl);
+ {
+ if (TREE_CODE (decl) == COMPONENT_REF)
+ span = gfc_conv_descriptor_span_get (decl);
+ else
+ span = get_array_span (type, decl);
+ }
/* If a non-null span has been generated reference the element with
pointer arithmetic. */