Author: erichkeane Date: 2024-05-09T06:44:11-07:00 New Revision: 8d2ab2a0ec168673696930ba3e3c403656cdfe55
URL: https://github.com/llvm/llvm-project/commit/8d2ab2a0ec168673696930ba3e3c403656cdfe55 DIFF: https://github.com/llvm/llvm-project/commit/8d2ab2a0ec168673696930ba3e3c403656cdfe55.diff LOG: [OpenACC][NFC] Fix EndLoc behavior of optional clause params It was discovered while writing the 'wait' clause ast tests that the 'endloc' wasn't set correctly when there was no arguments. This patch ensures we set it right, and adds an assert to prevent us from messing it up in the future. Added: Modified: clang/include/clang/AST/OpenACCClause.h clang/lib/Parse/ParseOpenACC.cpp Removed: ################################################################################ diff --git a/clang/include/clang/AST/OpenACCClause.h b/clang/include/clang/AST/OpenACCClause.h index e7b0b411b654f..125c2af793308 100644 --- a/clang/include/clang/AST/OpenACCClause.h +++ b/clang/include/clang/AST/OpenACCClause.h @@ -26,7 +26,10 @@ class OpenACCClause { protected: OpenACCClause(OpenACCClauseKind K, SourceLocation BeginLoc, SourceLocation EndLoc) - : Kind(K), Location(BeginLoc, EndLoc) {} + : Kind(K), Location(BeginLoc, EndLoc) { + assert(!BeginLoc.isInvalid() && !EndLoc.isInvalid() && + "Begin and end location must be valid for OpenACCClause"); + } public: OpenACCClauseKind getClauseKind() const { return Kind; } diff --git a/clang/lib/Parse/ParseOpenACC.cpp b/clang/lib/Parse/ParseOpenACC.cpp index 8c8330a5fad75..727854db9be1f 100644 --- a/clang/lib/Parse/ParseOpenACC.cpp +++ b/clang/lib/Parse/ParseOpenACC.cpp @@ -1112,6 +1112,10 @@ Parser::OpenACCClauseParseResult Parser::ParseOpenACCClauseParams( ParsedClause.setEndLoc(getCurToken().getLocation()); if (Parens.consumeClose()) return OpenACCCannotContinue(); + } else { + // If we have optional parens, make sure we set the end-location to the + // clause, as we are a 'single token' clause. + ParsedClause.setEndLoc(ClauseLoc); } } return OpenACCSuccess( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits