[flang-commits] [flang] [flang] Accept C-style comments in label fields (PR #207012)
Leandro Lupori via flang-commits
flang-commits at lists.llvm.org
Tue Jul 14 12:47:41 PDT 2026
================
@@ -716,42 +753,42 @@ const char *Prescanner::SkipCComment(const char *p) const {
bool Prescanner::NextToken(TokenSequence &tokens) {
CHECK(at_ >= start_ && at_ < limit_);
- if (InFixedFormSource() && !preprocessingOnly_) {
+ bool compilingFixedForm{InFixedFormSource() && !preprocessingOnly_};
+ if (compilingFixedForm) {
SkipSpaces();
- } else {
- if (*at_ == '/' && IsCComment(at_)) {
- // Recognize and skip over classic C style /*comments*/ when
- // outside a character literal.
- if (features_.ShouldWarn(LanguageFeature::ClassicCComments)) {
- Say(LanguageFeature::ClassicCComments, GetCurrentProvenance(),
- "nonstandard usage: C-style comment"_port_en_US);
- }
- SkipCComments();
- }
- if (IsSpaceOrTab(at_)) {
- // Compress free-form white space into a single space character.
- const auto theSpace{at_};
- char previous{at_ <= start_ ? ' ' : at_[-1]};
- NextChar();
- SkipSpaces();
- if (*at_ == '\n' && !omitNewline_) {
- // Discard white space at the end of a line.
- } else if (!inPreprocessorDirective_ &&
- (previous == '(' || *at_ == '(' || *at_ == ')')) {
- // Discard white space before/after '(' and before ')', unless in a
- // preprocessor directive. This helps yield space-free contiguous
- // names for generic interfaces like OPERATOR( + ) and
- // READ ( UNFORMATTED ), without misinterpreting #define f (notAnArg).
- // This has the effect of silently ignoring the illegal spaces in
- // the array constructor ( /1,2/ ) but that seems benign; it's
- // hard to avoid that while still removing spaces from OPERATOR( / )
- // and OPERATOR( // ).
- } else {
- // Preserve the squashed white space as a single space character.
- tokens.PutNextTokenChar(' ', GetProvenance(theSpace));
- tokens.CloseToken();
- return true;
- }
+ }
+ if (*at_ == '/' && IsCComment(at_)) {
+ // Recognize and skip over classic C style /*comments*/ when
+ // outside a character literal.
+ if (features_.ShouldWarn(LanguageFeature::ClassicCComments)) {
+ Say(LanguageFeature::ClassicCComments, GetCurrentProvenance(),
+ "nonstandard usage: C-style comment"_port_en_US);
+ }
+ SkipCComments();
+ }
----------------
luporl wrote:
Right, `SkipSpaces()` added.
https://github.com/llvm/llvm-project/pull/207012
More information about the flang-commits
mailing list