https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94386
--- Comment #7 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Bill Seurer from comment #6)
> These were both clean builds run on a powerpc64 power8 LE machine.
I can confirm this on x86-64-gnu-linux; if I use the current trunk and undo
this commit, it works – with the patch, it fails.
* * *
Looking it at in the debugger, one has:
logical, parameter :: a(0) = .true.
data d /a%kind/
In gfc_match_varspec, one has:
if (tmp && tmp->type == REF_INQUIRY)
At this point, primary is "a" and primary->ref->next == tmp == tail while
primary->ref is the (full) array spec. Now one calls:
gfc_simplify_expr (primary, 0);
which turns this into an EXPR_ARRAY and as this one cleans up, "tmp" now points
to undefined memory and fails.