================ @@ -2692,16 +2693,75 @@ bool Parser::isCXX11FinalKeyword() const { Specifier == VirtSpecifiers::VS_Sealed; } +bool Parser::isCXX2CTriviallyRelocatableKeyword(Token Tok) const { + if (!getLangOpts().CPlusPlus || Tok.isNot(tok::identifier)) + return false; + if (!Ident_trivially_relocatable_if_eligible) + Ident_trivially_relocatable_if_eligible = + &PP.getIdentifierTable().get("trivially_relocatable_if_eligible"); + IdentifierInfo *II = Tok.getIdentifierInfo(); + return II == Ident_trivially_relocatable_if_eligible; +} + +bool Parser::isCXX2CTriviallyRelocatableKeyword() const { + return isCXX2CTriviallyRelocatableKeyword(Tok); +} + +void Parser::ParseOptionalCXX2CTriviallyRelocatableSpecifier( + TriviallyRelocatableSpecifier &TRS) { + assert(isCXX2CTriviallyRelocatableKeyword() && + "expected a trivially_relocatable specifier"); + + Diag(Tok.getLocation(), getLangOpts().CPlusPlus26 + ? diag::warn_relocatable_keyword + : diag::ext_relocatable_keyword) + << /*relocatable*/ 0; + + TRS = Actions.ActOnTriviallyRelocatableSpecifier(ConsumeToken()); +} + +bool Parser::isCXX2CReplaceableKeyword(Token Tok) const { + if (!getLangOpts().CPlusPlus || Tok.isNot(tok::identifier)) + return false; + if (!Ident_replaceable_if_eligible) + Ident_replaceable_if_eligible = + &PP.getIdentifierTable().get("replaceable_if_eligible"); + IdentifierInfo *II = Tok.getIdentifierInfo(); + return II == Ident_replaceable_if_eligible; +} + +bool Parser::isCXX2CReplaceableKeyword() const { + return isCXX2CReplaceableKeyword(Tok); +} + +void Parser::ParseOptionalCXX2CReplaceableSpecifier(ReplaceableSpecifier &MRS) { + assert(isCXX2CReplaceableKeyword() && + "expected a replaceable_if_eligible specifier"); + + Diag(Tok.getLocation(), getLangOpts().CPlusPlus26 + ? diag::warn_relocatable_keyword + : diag::ext_relocatable_keyword) + << /*replaceable*/ 1; + + MRS = Actions.ActOnReplaceableSpecifier(ConsumeToken()); +} + /// isClassCompatibleKeyword - Determine whether the next token is a C++11 /// 'final' or Microsoft 'sealed' or 'abstract' contextual keywords. ---------------- Sirraide wrote:
nit: we might want to update this comment now https://github.com/llvm/llvm-project/pull/127636 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits