ping!
2016-11-19 10:12 GMT+01:00 Janus Weil <ja...@gcc.gnu.org>: > Hi all, > >> I previously assumed that the test case for this PR would be legal, >> but by now I think that's wrong. The test case should be rejected, and >> we already have checking mechanisms for this (see >> resolve_fl_variable), but apparently they are not working. >> >> My current suspicion is that 'gfc_is_constant_expr' has a bug, because >> it claims the call to the function 'get_i' to be a constant >> expression. This is not true, because get_i() can not be reduced to a >> compile-time constant. > > some more reading in the standard confirms this suspicion: In > gfc_is_constant_expr there is a piece of code which claims that > specification functions are constant. That is certainly not true, and > so what I'm doing in the attached fix is to remove that code and add > some references to the standard to make things clearer. > > The code that I'm removing has last been touched in this commit by > Jerry six years ago: > > https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=166520 > > However, this did not introduce the bug in the first place (not sure > when that happened). > > In any case the new patch in the attachment regtests cleanly and > correctly rejects the original test case as well as one of the cases > mentioned by Dominique. Ok for trunk? > > Cheers, > Janus > > > > 2016-11-19 Janus Weil <ja...@gcc.gnu.org> > > PR fortran/78392 > * expr.c (gfc_is_constant_expr): Specification functions are not > compile-time constants. Update documentation (add reference to F08 > standard), add a FIXME. > (external_spec_function): Add reference to F08 standard. > * resolve.c (resolve_fl_variable): Ditto. > > 2016-11-19 Janus Weil <ja...@gcc.gnu.org> > > PR fortran/78392 > * gfortran.dg/constant_shape.f90: New test case.