aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2018-04-09 21:05:13 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2018-04-09 21:05:13 +0000
commit06e8d82eba434c70d409b3d61b37b3427733e904 (patch)
treee85f2120dd54e789c13367c4c18fe819c8c92089 /gcc/fortran/resolve.c
parent17434237d3132a425c988dd8c0d1ac1a63ca34ae (diff)
downloadgcc-06e8d82eba434c70d409b3d61b37b3427733e904.zip
gcc-06e8d82eba434c70d409b3d61b37b3427733e904.tar.gz
gcc-06e8d82eba434c70d409b3d61b37b3427733e904.tar.bz2
re PR fortran/51260 (PARAMETER array with constructor initializer: Compile-time simplify single element access)
2018-04-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51260 * resolve.c (resolve_variable): Simplify cases where access to a parameter array results in a single constant. 2018-04-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51260 * gfortran.dg/parameter_array_element_3.f90: New test. From-SVN: r259256
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index e28146a..18da947 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -5577,6 +5577,16 @@ resolve_procedure:
if (t && flag_coarray == GFC_FCOARRAY_LIB && gfc_is_coindexed (e))
add_caf_get_intrinsic (e);
+ /* Simplify cases where access to a parameter array results in a
+ single constant. Suppress errors since those will have been
+ issued before, as warnings. */
+ if (e->rank == 0 && sym->as && sym->attr.flavor == FL_PARAMETER)
+ {
+ gfc_push_suppress_errors ();
+ gfc_simplify_expr (e, 1);
+ gfc_pop_suppress_errors ();
+ }
+
return t;
}