================
@@ -913,6 +913,48 @@ void Preprocessor::HandlePragmaHdrstop(Token &Tok) {
SkippingUntilPragmaHdrStop = false;
}
+bool Preprocessor::isPragmaSetPPStateMacro(IdentifierInfo *MacroName) {
+ return MacroName == Ident__GLIBCXX__;
+}
+
+void Preprocessor::HandlePragmaSetPPState(PragmaIntroducer Introducer,
+ Token &Tok) {
+ // Lex the macro name we want to set.
+ LexUnexpandedToken(Tok);
+ if (!Tok.getIdentifierInfo()) {
+ Diag(Tok.getLocation(), diag::err_pp_pragma_set_pp_state_expected_name);
+ return;
+ }
+
+ IdentifierInfo *MacroName = Tok.getIdentifierInfo();
+ if (!isPragmaSetPPStateMacro(MacroName)) {
+ Diag(Tok.getLocation(), diag::err_pp_pragma_set_pp_state_invalid_arg)
+ << MacroName;
+ return;
+ }
+
+ // Lex the integer argument.
+ Lex(Tok);
+ std::uint64_t Value;
+ if (!Tok.is(tok::numeric_constant) ||
+ !parseSimpleIntegerLiteral(Tok, Value)) {
+ Diag(Tok.getLocation(),
diag::err_pp_pragma_set_pp_state_expected_int_after)
+ // Don't pass an IdentifierInfo* here to avoid quoting.
+ << MacroName->getName();
+ return;
+ }
+
+ // Update the state.
+ if (MacroName == Ident__GLIBCXX__) {
+ setStdLibCxxVersion(Value);
+ } else {
+ llvm_unreachable("forgot to handle a possible argument to __set_pp_state");
+ }
----------------
cor3ntin wrote:
Braces
https://github.com/llvm/llvm-project/pull/210802
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits