Message ID | 5C478731.6000606@gmx.de |
---|---|
State | New |
Headers | show |
Series | [PR,fortran/57553] - bad error message for invalid use of STORAGE_SIZE | expand |
Hi Harald,
> OK for trunk?
OK. Also not likely to cause a regression, so I think this is quite
fine for now.
Regards
Thomas
Committed as Revision: 268303 URL: https://gcc.gnu.org/viewcvs?rev=268303&root=gcc&view=rev Log: 2019-01-26 Harald Anlauf <anlauf@gmx.de> PR fortran/57553 * expr.c (check_inquiry): Add list of inquiry functions allowed in constant expressions for F2008+. 2019-01-26 Harald Anlauf <anlauf@gmx.de> PR fortran/57553 * gfortran.dg/pr57553.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/pr57553.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/expr.c trunk/gcc/testsuite/ChangeLog Thanks for the review and support. Harald P.S.: this was my first actual commit to gcc. On 01/24/19 23:28, Thomas Koenig wrote: > Hi Harald, > >> OK for trunk? > > OK. Also not likely to cause a regression, so I think this is quite > fine for now. > > Regards > > Thomas >
Hi Harald,
> P.S.: this was my first actual commit to gcc.
Congratulations, and welcome to the club!
Regards
Thomas
Index: gcc/fortran/expr.c =================================================================== --- gcc/fortran/expr.c (revision 268162) +++ gcc/fortran/expr.c (working copy) @@ -2515,7 +2515,8 @@ static bool check_restricted (gfc_expr *); /* F95, 7.1.6.1, Initialization expressions, (7) - F2003, 7.1.7 Initialization expression, (8) */ + F2003, 7.1.7 Initialization expression, (8) + F2008, 7.1.12 Constant expression, (4)*/ static match check_inquiry (gfc_expr *e, int not_restricted) @@ -2539,6 +2540,15 @@ "new_line", NULL }; + /* std=f2008+ or -std=gnu */ + static const char *const inquiry_func_gnu[] = { + "lbound", "shape", "size", "ubound", + "bit_size", "len", "kind", + "digits", "epsilon", "huge", "maxexponent", "minexponent", + "precision", "radix", "range", "tiny", + "new_line", "storage_size", NULL + }; + int i = 0; gfc_actual_arglist *ap; @@ -2565,8 +2575,11 @@ { name = e->symtree->n.sym->name; - functions = (gfc_option.warn_std & GFC_STD_F2003) - ? inquiry_func_f2003 : inquiry_func_f95; + functions = inquiry_func_gnu; + if (gfc_option.warn_std & GFC_STD_F2003) + functions = inquiry_func_f2003; + if (gfc_option.warn_std & GFC_STD_F95) + functions = inquiry_func_f95; for (i = 0; functions[i]; i++) if (strcmp (functions[i], name) == 0)