aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2018-06-10 15:31:42 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2018-06-10 15:31:42 +0000
commit980fa45eefc0ec8f71e1947a28938af28f6fdbb2 (patch)
tree6beac9da84a5344f39428891e904a85f281417f0 /gcc/fortran/trans-expr.c
parentdcdae924d27a737dcda16bac7d9dfad5fbdfba6a (diff)
downloadgcc-980fa45eefc0ec8f71e1947a28938af28f6fdbb2.zip
gcc-980fa45eefc0ec8f71e1947a28938af28f6fdbb2.tar.gz
gcc-980fa45eefc0ec8f71e1947a28938af28f6fdbb2.tar.bz2
gfortran.h (gfc_expr): Add no_bounds_check field.
2018-06-10 Thomas Koenig <tkoenig@gcc.gnu.org> * gfortran.h (gfc_expr): Add no_bounds_check field. * frontend-passes.c (get_array_inq_function): Set no_bounds_check on function and function argument. (inline_matmul_assign): Set no_bounds_check on zero expression and on lhs of zero expression. Also handle A1B2 case if realloc on assigment is active. * trans-array.c (gfc_conv_array_ref): Don't do range checking if expr has no_bounds_check set. (gfc_conv_expr_descriptor): Set no_bounds_check on ss if expr has it set. * trans-expr.c (gfc_trans_assignment_1): Set no_bounds_check on lss and lss if the corresponding expressions have it set. 2018-06-10 Thomas Koenig <tkoenig@gcc.gnu.org> * gfortran.dg/inline_matmul_23.f90: New test. From-SVN: r261388
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r--gcc/fortran/trans-expr.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index f855951..b2a645b 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -9991,6 +9991,8 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
|| expr2->value.function.isym->conversion)))
lss->is_alloc_lhs = 1;
}
+ else
+ lss->no_bounds_check = expr1->no_bounds_check;
rss = NULL;
@@ -10045,6 +10047,7 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
if (is_poly_assign && expr2->rank == 0 && !UNLIMITED_POLY (expr2))
rss->info->type = GFC_SS_REFERENCE;
+ rss->no_bounds_check = expr2->no_bounds_check;
/* Associate the SS with the loop. */
gfc_add_ss_to_loop (&loop, lss);
gfc_add_ss_to_loop (&loop, rss);