Hi Harald, It looks OK to me. I can see why you are asking about the implementation but cannot offer a better solution.
OK for master. Thanks Paul On Tue, 12 Jan 2021 at 22:03, Harald Anlauf via Fortran <fort...@gcc.gnu.org> wrote: > Dear all, > > when playing around with the issues exposed by PR93340, particularly > visible > in the tree dump, I tried to find ways to simplify substrings in those > cases > where they are eligible as designator, which is required e.g. in DATA > statements. > > Given my limited understanding, I finally arrived at a potential solution > which > does that simplification near the end of match_string_constant in > primary.c. > I couldn't find a better place, but I am open to better suggestions. > > The simplification below does an even better job at detecting invalid > substring > starting or ending indices than HEAD, and regtests cleanly on > x86_64-pc-linux-gnu. > > Feedback appreciated. Is this potentially ok for master, or should this > be done > differently? > > Thanks, > Harald > > > PR fortran/93340 - fix missed substring simplifications > > Substrings were not reduced early enough for use in initializations, > such as DATA statements. Add an early simplification for substrings > with constant starting and ending points. > > gcc/fortran/ChangeLog: > > * gfortran.h (gfc_resolve_substring): Add prototype. > * primary.c (match_string_constant): Simplify substrings with > constant starting and ending points. > * resolve.c: Rename resolve_substring to gfc_resolve_substring. > (gfc_resolve_ref): Use renamed function gfc_resolve_substring. > > gcc/testsuite/ChangeLog: > > * substr_10.f90: New test. > * substr_9.f90: New test. > > -- "If you can't explain it simply, you don't understand it well enough" - Albert Einstein