]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran's gfc_match_char: %S to match symbol with host_assoc
authorTobias Burnus <tobias@codesourcery.com>
Tue, 20 Jun 2023 11:23:40 +0000 (13:23 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Tue, 20 Jun 2023 11:23:40 +0000 (13:23 +0200)
gfc_match ("... %s ...", ...) matches a gfc_symbol but with
host_assoc = 0. This commit adds '%S' as variant which matches
with host_assoc = 1

gcc/fortran/ChangeLog:

* match.cc (gfc_match_char): Match with '%S' a symbol
with host_assoc = 1.

gcc/fortran/match.cc

index e7be7fddc642891822ae6beaef39c2ef15d9de81..1203787fe773fc08f2f69d5025e83c1970bef1e2 100644 (file)
@@ -1084,7 +1084,8 @@ gfc_match_char (char c, bool gobble_ws)
 
    %%  Literal percent sign
    %e  Expression, pointer to a pointer is set
-   %s  Symbol, pointer to the symbol is set
+   %s  Symbol, pointer to the symbol is set (host_assoc = 0)
+   %S  Symbol, pointer to the symbol is set (host_assoc = 1)
    %n  Name, character buffer is set to name
    %t  Matches end of statement.
    %o  Matches an intrinsic operator, returned as an INTRINSIC enum.
@@ -1151,8 +1152,9 @@ loop:
          goto loop;
 
        case 's':
+       case 'S':
          vp = va_arg (argp, void **);
-         n = gfc_match_symbol ((gfc_symbol **) vp, 0);
+         n = gfc_match_symbol ((gfc_symbol **) vp, c == 'S');
          if (n != MATCH_YES)
            {
              m = n;