https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93365

--- Comment #8 from markeggleston at gcc dot gnu.org ---
(In reply to markeggleston from comment #7)
> (In reply to Steve Kargl from comment #6)
> > On Fri, Jan 24, 2020 at 12:36:45PM +0000, markeggleston at gcc dot gnu.org
> > wrote:
> > > gfc_simplify_expr calls simplify_parameter_variable which for zero size
> > > arrays it creates a new gfc_expr structure with the expr_type set to 
> > > EXPR_ARRAY
> > > and replaces primary. When primary is replaced its chain of ref 
> > > structures is
> > > deleted so tmp->u.i is invalid causing the ICE the following lines are 
> > > never
> > > reached:
> > 
> > The lines are reached in my debugging sessions. :-)
> > I bootstrap with --enable-checking, which might 
> > prevent the ICE issue.
> 
> Tried that to no effect, however, I found that the version of the compiler
> used to compile gfortran does affect the outcome:
> 
> bootstrap no ICE
> gcc-8.2.0 no ICE

checking the environment again: gcc 8.2.1, g++ 4.8.5

> gcc-6.3.0 ICE
> 
> I haven't tried an other compilers.
> 
> > 
> > > > then enters the switch statement and get to lines 2384-2385
> > > > 
> > > >        primary->ts.type = BT_INTEGER;
> > > >        primary->ts.kind = gfc_default_integer_kind;
> > > > 
> > > > This just resets a part of primary, but it does not fix up
> > > > it up correctly.  Likely, need to check for zero size
> > > > arrays do extra work.
> > > 
> > > I have modified gfc_simplify_expr:
> > 
> > I'm beginning to think that calling gfc_simplify_expr may
> > not be correct, here.  But, don't have time to investigate
> > more.

Reply via email to