summaryrefslogtreecommitdiff
path: root/gcc/fortran/array.c
diff options
context:
space:
mode:
authorvehre <vehre@138bc75d-0d04-0410-961f-82ee72b054a4>2016-12-14 11:52:09 +0000
committervehre <vehre@138bc75d-0d04-0410-961f-82ee72b054a4>2016-12-14 11:52:09 +0000
commit3fe3b7cac93f9da23baf1d01ae90ff738a72b380 (patch)
tree8a84929bf6cd9296cf8c3765d56781c6466033d9 /gcc/fortran/array.c
parente1083a883e0a61d3448987660876fdb3d2fb77e0 (diff)
gcc/fortran/ChangeLog:
2016-12-14 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/78672 * array.c (gfc_find_array_ref): Add flag to return NULL when no ref is found instead of erroring out. * data.c (gfc_assign_data_value): Only constant expressions are valid for initializers. * gfortran.h: Reflect change of gfc_find_array_ref's signature. * interface.c (compare_actual_formal): Access the non-elemental array-ref. Prevent taking a REF_COMPONENT for a REF_ARRAY. Correct indentation. * module.c (load_omp_udrs): Clear typespec before reading into it. * trans-decl.c (gfc_build_qualified_array): Prevent accessing the array when it is a coarray. * trans-expr.c (gfc_conv_cst_int_power): Use wi::abs()-function instead of crutch preventing sanitizer's bickering here. * trans-stmt.c (gfc_trans_deallocate): Only get data-component when it is a descriptor-array here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243647 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r--gcc/fortran/array.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index 154b86068974..c531522f71f2 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -2563,7 +2563,7 @@ cleanup:
characterizes the reference. */
gfc_array_ref *
-gfc_find_array_ref (gfc_expr *e)
+gfc_find_array_ref (gfc_expr *e, bool allow_null)
{
gfc_ref *ref;
@@ -2573,7 +2573,12 @@ gfc_find_array_ref (gfc_expr *e)
break;
if (ref == NULL)
- gfc_internal_error ("gfc_find_array_ref(): No ref found");
+ {
+ if (allow_null)
+ return NULL;
+ else
+ gfc_internal_error ("gfc_find_array_ref(): No ref found");
+ }
return &ref->u.ar;
}