This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Re: [Patch, Fortran] PR 78392: ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979
- From: Janus Weil <janus at gcc dot gnu dot org>
- To: Dominique d'Humières <dominiq at lps dot ens dot fr>
- Cc: gfortran <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>, Jerry DeLisle <jvdelisle at gcc dot gnu dot org>
- Date: Sat, 3 Dec 2016 08:05:16 +0100
- Subject: Re: [Patch, Fortran] PR 78392: ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979
- Authentication-results: sourceware.org; auth=none
- References: <2709BC01-540E-4BB6-8266-355357EA7138@lps.ens.fr> <CAKwh3qj6PK8fvhrZYa45c_XGWG94nfX2qCyUBPz7QeLpme=F=A@mail.gmail.com> <CAKwh3qjqYF3ozbX36hEpvjCVB0HrjbcbpadX7j_Zz8xb9GHDfg@mail.gmail.com> <CAKwh3qhRn7HZU2SP17woe5hDxsvabcCmusFH3T+5Q8gW0=wx4A@mail.gmail.com>
double-ping!
2016-11-26 10:45 GMT+01:00 Janus Weil <janus@gcc.gnu.org>:
> ping!
>
>
> 2016-11-19 10:12 GMT+01:00 Janus Weil <janus@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 <janus@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 <janus@gcc.gnu.org>
>>
>> PR fortran/78392
>> * gfortran.dg/constant_shape.f90: New test case.