diff options
author | Paul Thomas <pault@pc30.home> | 2020-02-28 18:30:57 +0000 |
---|---|---|
committer | Paul Thomas <pault@pc30.home> | 2020-02-28 18:32:50 +0000 |
commit | 7485ace81de9ec9dd5c87edf67e359d31ce35a20 (patch) | |
tree | 34ca8a6f956e028704544051a20fcc3c480b178b /gcc/fortran | |
parent | ab2f2e19111bfdd013697fdfd0cded5ab291a7a1 (diff) | |
download | gcc-7485ace81de9ec9dd5c87edf67e359d31ce35a20.zip gcc-7485ace81de9ec9dd5c87edf67e359d31ce35a20.tar.gz gcc-7485ace81de9ec9dd5c87edf67e359d31ce35a20.tar.bz2 |
Commit for PR92785
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 11 |
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d9dd618..b9293de 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2020-02-28 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/92785 + * trans-expr.c (gfc_conv_intrinsic_to_class): Renormalise non- + variable expressions to be unity lbound based. + 2020-02-25 Steven G. Kargl <kargl@gcc.gnu.org> * simplify.c (degrees_f): Remove unused code. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 5825a4b..9d0921e 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -843,6 +843,7 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e, tree ctree; tree var; tree tmp; + int dim; /* The intrinsic type needs to be converted to a temporary CLASS object. */ @@ -892,6 +893,16 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e, parmse->ss = ss; parmse->use_offset = 1; gfc_conv_expr_descriptor (parmse, e); + + /* Array references with vector subscripts and non-variable expressions + need be converted to a one-based descriptor. */ + if (e->expr_type != EXPR_VARIABLE) + { + for (dim = 0; dim < e->rank; ++dim) + gfc_conv_shift_descriptor_lbound (&parmse->pre, parmse->expr, + dim, gfc_index_one_node); + } + if (class_ts.u.derived->components->as->rank != e->rank) { tmp = fold_build1_loc (input_location, VIEW_CONVERT_EXPR, |