diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp index 8efcd617cf0f9..2a6ecfbb0830e 100644 --- a/flang/lib/Parser/prescan.cpp +++ b/flang/lib/Parser/prescan.cpp @@ -185,11 +185,9 @@ void Prescanner::Statement() { // a comment marker or directive sentinel. If so, disable line // continuation, so that NextToken() won't consume anything from // following lines. - if (IsLegalIdentifierStart(*at_)) { - CHECK(NextToken(tokens)); - CHECK(tokens.SizeInTokens() == 1); - CharBlock id{tokens.TokenAt(0)}; - if (preprocessor_.IsNameDefined(id) && + if (IsLegalIdentifierStart(*at_) && NextToken(tokens) && + tokens.SizeInTokens() > 0) { + if (CharBlock id{tokens.TokenAt(0)}; preprocessor_.IsNameDefined(id) && !preprocessor_.IsFunctionLikeDefinition(id)) { if (auto replaced{preprocessor_.MacroReplacement(tokens, *this)}) { auto newLineClass{ClassifyLine(*replaced, GetCurrentProvenance())}; diff --git a/flang/test/Preprocessing/multi-cont.F90 b/flang/test/Preprocessing/multi-cont.F90 new file mode 100644 index 0000000000000..5a2c0b9c47976 --- /dev/null +++ b/flang/test/Preprocessing/multi-cont.F90 @@ -0,0 +1,6 @@ +! RUN: %flang -E %s 2>&1 | FileCheck --strict-whitespace %s +! CHECK: print *, 666 +pr& +&i& +&nt *, 666 +end