diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp index 9aef0c9981e3c..5c92974e3ebf2 100644 --- a/flang/lib/Parser/prescan.cpp +++ b/flang/lib/Parser/prescan.cpp @@ -1455,6 +1455,10 @@ const char *Prescanner::FreeFormContinuationLine(bool ampersand) { return nullptr; } } + if (p[0] == '/' && p[1] == '*') { + p = SkipCComment(p); + p = SkipWhiteSpaceIncludingEmptyMacros(p); + } if (p[0] == '!' && p[1] == '$' && !preprocessingOnly_ && features_.IsEnabled(LanguageFeature::OpenMP)) { // !$ conditional line can be a continuation diff --git a/flang/test/Parser/continuation-after-comment.f90 b/flang/test/Parser/continuation-after-comment.f90 new file mode 100644 index 0000000000000..845aa8bc36e5c --- /dev/null +++ b/flang/test/Parser/continuation-after-comment.f90 @@ -0,0 +1,15 @@ +! RUN: %flang_fc1 -E %s 2>&1 | FileCheck %s + +!Checking comments appearing in between continuation lines. +integer & +i(1) +/* \\\*/ +!CHECK: integer i(1) +i(1)& +/* \\\*/ +=1 +!CHECK: i(1) =1 +/* \*/ +if (i(1)/=1)write(6,*)'error',i(1) +print *,'pass' +end