diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp index 2f25b02bf7a32..f61eff5b0dd6a 100644 --- a/flang/lib/Parser/prescan.cpp +++ b/flang/lib/Parser/prescan.cpp @@ -1177,16 +1177,14 @@ Prescanner::IsFixedFormCompilerDirectiveLine(const char *start) const { char sentinel[5], *sp{sentinel}; int column{2}; for (; column < 6; ++column, ++p) { - if (*p != ' ') { - if (*p == '\n' || *p == '\t') { - break; - } - if (sp == sentinel + 1 && sentinel[0] == '$' && IsDecimalDigit(*p)) { - // OpenMP conditional compilation line: leave the label alone - break; - } - *sp++ = ToLowerCaseLetter(*p); + if (*p == ' ' || *p == '\n' || *p == '\t') { + break; + } + if (sp == sentinel + 1 && sentinel[0] == '$' && IsDecimalDigit(*p)) { + // OpenMP conditional compilation line: leave the label alone + break; } + *sp++ = ToLowerCaseLetter(*p); } if (column == 6) { if (*p == ' ' || *p == '\t' || *p == '0') { diff --git a/flang/test/Parser/OpenMP/sentinels.f b/flang/test/Parser/OpenMP/sentinels.f new file mode 100644 index 0000000000000..98d4bad19f6a2 --- /dev/null +++ b/flang/test/Parser/OpenMP/sentinels.f @@ -0,0 +1,42 @@ +! RUN: %flang_fc1 -fopenmp -E %s | FileCheck %s +! CHECK: program main +! CHECK: interface +! CHECK: subroutine sub(a, b) +! CHECK:!dir$ ignore_tkr a +! CHECK:!dir$ ignore_tkr b +! CHECK: real(4):: a, b +! CHECK: end subroutine +! CHECK: end interface +! CHECK: PRINT *, "Is ' '" +! CHECK: 123 PRINT *, "Is '123 '" + +!@cuf subroutine atcuf; + program main + interface + subroutine sub(a, b) +!dir$ ignore_tkr a +!dir$ ignore_tkr +!dir$+ b + real(4):: a, b + end subroutine + end interface +! +! comment line +!@fp PRINT *, "This is a comment line" +!@f p PRINT *, "This is a comment line" +!$ PRINT *, "Is ' '" +!$123 PRINT *, "Is '123 '" +!$ABC PRINT *, "Is 'ABC '" +! $ PRINT *, "This is a comment line 6" +c $This is a comment line +!0$110This is a comment line + +! $ This is a comment line +! $ 0This is a comment line +! &This is a comment line +! $ This is a comment line +! $ This is a comment line +C $ This is a comment line +c $ his is a comment line +* $ This is a comment line + end