Hi Bernhard,

Am 27.10.21 um 19:40 schrieb Bernhard Reutner-Fischer via Fortran:
AFAICS current trunk still has this issue.
Any takers?
thanks,

can you create a PR tracking this issue?

AFAICS PR86935 has been fixed for gcc-9+.

Harald

On Sun, 2 Sep 2018 17:16:07 +0200
Bernhard Reutner-Fischer <rep.dot....@gmail.com> wrote:

                                                i spotted one
(pre-existing) possible inconsistency that i did overlook back then:

gfc_match_associate () reads
...
       if (gfc_match (" %e", &newAssoc->target) != MATCH_YES)
         {
           /* Have another go, allowing for procedure pointer selectors.  */
           gfc_matching_procptr_assignment = 1;
           if (gfc_match (" %e", &newAssoc->target) != MATCH_YES)
             {
               gfc_error ("Invalid association target at %C");
               goto assocListError;
             }
           gfc_matching_procptr_assignment = 0;
         }

i.e. we retry a match, but in the second attempt we turn on procptr
assignment matching and if that works, we turn procptr assignment
matching off again.
But if we fail that retry, we forget to turn it off again.
I suppose we should:

$ svn diff -x -p gcc/fortran/match.c
Index: gcc/fortran/match.c
===================================================================
--- gcc/fortran/match.c (revision 264040)
+++ gcc/fortran/match.c (working copy)
@@ -1898,13 +1898,16 @@ gfc_match_associate (void)
        if (gfc_match (" %e", &newAssoc->target) != MATCH_YES)
   {
     /* Have another go, allowing for procedure pointer selectors.  */
+   match m;
+
     gfc_matching_procptr_assignment = 1;
-   if (gfc_match (" %e", &newAssoc->target) != MATCH_YES)
+   m = gfc_match (" %e", &newAssoc->target);
+   gfc_matching_procptr_assignment = 0;
+   if (m != MATCH_YES)
       {
         gfc_error ("Invalid association target at %C");
         goto assocListError;
       }
-   gfc_matching_procptr_assignment = 0;
   }
        newAssoc->where = gfc_current_locus;


Untested. Maybe someone wants to give it a whirl...
If it wrecks havoc then leaving it set deliberately deserves at least a comment.

PS: It would be nice to get rid of gfc_matching_procptr_assignment,
gfc_matching_ptr_assignment, gfc_matching_prefix, FWIW.
cheers,

Thanks everyone!

Cheers,
Janus




Reply via email to