diff --git a/flang/lib/Parser/Fortran-parsers.cpp b/flang/lib/Parser/Fortran-parsers.cpp --- a/flang/lib/Parser/Fortran-parsers.cpp +++ b/flang/lib/Parser/Fortran-parsers.cpp @@ -1172,11 +1172,11 @@ constexpr auto ignore_tkr{ "DIR$ IGNORE_TKR" >> optionalList(construct( defaulted(parenthesized(some("tkr"_ch))), name))}; -TYPE_PARSER( - beginDirective >> sourced(construct(ignore_tkr) || - construct("DIR$" >> - many(construct( - name, maybe("=" >> digitString64))))) / +TYPE_PARSER(beginDirective >> + sourced(construct(ignore_tkr) || + construct( + "DIR$" >> many(construct(name, + maybe(("="_tok || ":"_tok) >> digitString64))))) / endDirective) TYPE_PARSER(extension(construct( diff --git a/flang/test/Parser/compiler-directives.f90 b/flang/test/Parser/compiler-directives.f90 --- a/flang/test/Parser/compiler-directives.f90 +++ b/flang/test/Parser/compiler-directives.f90 @@ -9,4 +9,8 @@ !dir$ integer implicit integer(a-z) !dir$ integer + !dir$ integer=64 + !dir$ integer = 64 + !dir$ optimize:1 + !dir$ optimize : 1 end