Hi Jerry, looks ok to me. Thanks for taking care.
- Andre On Fri, 2 Aug 2024 10:44:58 -0700 Jerry D <jvdelis...@gmail.com> wrote: > Hi all, > > Doing some catchup here. I plan to commit the following shortly. This is > one of Steve's patches posted on bugzilla. > > I have created a new test case. > > Regression tested on linux x86-64. > > git show: > > commit 4d4549937b789afe4037c2f8f80dfc2285504a1e (HEAD -> master) > Author: Steve Kargl <kar...@comcast.net> > Date: Thu Aug 1 21:50:49 2024 -0700 > > Fortran: Fix ICE on invalid in gfc_format_decoder. > > PR fortran/104626 > > gcc/fortran/ChangeLog: > > * symbol.cc (gfc_add_save): Add checks for SAVE attribute > conflicts and duplicate SAVE attribute. > > gcc/testsuite/ChangeLog: > > * gfortran.dg/pr104626.f90: New test. > > diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc > index a8479b862e3..b5143d9f790 100644 > --- a/gcc/fortran/symbol.cc > +++ b/gcc/fortran/symbol.cc > @@ -1307,9 +1307,8 @@ gfc_add_save (symbol_attribute *attr, save_state > s, const char *name, > > if (s == SAVE_EXPLICIT && gfc_pure (NULL)) > { > - gfc_error > - ("SAVE attribute at %L cannot be specified in a PURE procedure", > - where); > + gfc_error ("SAVE attribute at %L cannot be specified in a PURE " > + "procedure", where); > return false; > } > > @@ -1319,10 +1318,15 @@ gfc_add_save (symbol_attribute *attr, save_state > s, const char *name, > if (s == SAVE_EXPLICIT && attr->save == SAVE_EXPLICIT > && (flag_automatic || pedantic)) > { > - if (!gfc_notify_std (GFC_STD_LEGACY, > - "Duplicate SAVE attribute specified at %L", > - where)) > + if (!where) > + { > + gfc_error ("Duplicate SAVE attribute specified near %C"); > return false; > + } > + > + if (!gfc_notify_std (GFC_STD_LEGACY, "Duplicate SAVE attribute " > + "specified at %L", where)) > + return false; > } > > attr->save = s; > diff --git a/gcc/testsuite/gfortran.dg/pr104626.f90 > b/gcc/testsuite/gfortran.dg/pr104626.f90 > new file mode 100644 > index 00000000000..faff65a8c92 > --- /dev/null > +++ b/gcc/testsuite/gfortran.dg/pr104626.f90 > @@ -0,0 +1,8 @@ > +! { dg-do compile } > +program p > + procedure(g), save :: f ! { dg-error "PROCEDURE attribute conflicts" } > + procedure(g), save :: f ! { dg-error "Duplicate SAVE attribute" } > +contains > + subroutine g > + end > +end -- Andre Vehreschild * Email: vehre ad gmx dot de