diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-16 03:33:05 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-16 03:33:05 +0000 |
commit | 19adb97a310cd398814c5ccb75580b1658433cfc (patch) | |
tree | 93d70adc2dad5bf9a72be8b8a2f4b2b31a89d633 /gcc/fortran | |
parent | 3dd6f5737587b7838b2d0b79cc3259e1303081af (diff) | |
download | gcc-19adb97a310cd398814c5ccb75580b1658433cfc.zip gcc-19adb97a310cd398814c5ccb75580b1658433cfc.tar.gz gcc-19adb97a310cd398814c5ccb75580b1658433cfc.tar.bz2 |
re PR fortran/87994 (ICE in match_data_constant, at fortran/decl.c:399)
2018-12-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87944
* decl.c (match_data_constant): Allow inquiry parameter as data
constant in data statement.
2018-12-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87944
* gfortran.dg/pr87994_1.f90: New test.
* gfortran.dg/pr87994_2.f90: Ditto.
* gfortran.dg/pr87994_3.f90: Ditto.
From-SVN: r267184
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2fe463a..0034c3b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,10 @@ -2019-12-15 Steven G. Kargl <kargl@gcc.gnu.org> +2018-12-15 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/87944 + * decl.c (match_data_constant): Allow inquiry parameter as data + constant in data statement. + +2018-12-15 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/88138 * decl.c (variable_decl): Check that a derived isn't being assigned diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 78555ce..1dd3225 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -399,6 +399,14 @@ match_data_constant (gfc_expr **result) } else if (m == MATCH_YES) { + /* If a parameter inquiry ends up here, symtree is NULL but **result + contains the right constant expression. Check here. */ + if ((*result)->symtree == NULL + && (*result)->expr_type == EXPR_CONSTANT + && ((*result)->ts.type == BT_INTEGER + || (*result)->ts.type == BT_REAL)) + return m; + /* F2018:R845 data-stmt-constant is initial-data-target. A data-stmt-constant shall be ... initial-data-target if and only if the corresponding data-stmt-object has the POINTER |