Lines Matching defs:PP

36   void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
42 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
48 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
54 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
61 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
70 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
76 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
82 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
88 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
94 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
101 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
111 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
114 if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {
115 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
120 if (PP.LexOnOffSwitch(OOS))
123 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
131 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
140 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
143 if (PP.LexOnOffSwitch(OOS))
147 PP.getPreprocessorAllocator().Allocate<Token>(1), 1);
155 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
164 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
172 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
175 PP.Diag(UnknownTok, diag::ext_stdc_pragma_ignored);
181 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
191 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
212 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
234 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
244 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
254 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
260 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
266 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
272 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
280 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
289 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
295 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
305 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
312 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
315 if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {
316 PP.Diag(FirstToken.getLocation(), diag::warn_pragma_fp_ignored)
322 PP.Lex(Tok);
324 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
328 PP.Lex(Tok); // Consume the l_paren.
330 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);
337 PP.Lex(Tok);
340 PP.Lex(Tok);
342 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);
346 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
350 PP.Lex(Tok); // Consume the r_paren.
353 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
359 PP.getPreprocessorAllocator().Allocate<Token>(1), 1);
366 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
374 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
385 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
394 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
400 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
407 void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer,
422 PP.AddPragmaHandler(AlignHandler.get());
425 PP.AddPragmaHandler("GCC", GCCVisibilityHandler.get());
428 PP.AddPragmaHandler(OptionsHandler.get());
431 PP.AddPragmaHandler(PackHandler.get());
434 PP.AddPragmaHandler(MSStructHandler.get());
437 PP.AddPragmaHandler(UnusedHandler.get());
440 PP.AddPragmaHandler(WeakHandler.get());
443 PP.AddPragmaHandler(RedefineExtnameHandler.get());
446 PP.AddPragmaHandler("STDC", FPContractHandler.get());
449 PP.AddPragmaHandler("STDC", STDCFenvAccessHandler.get());
452 PP.AddPragmaHandler("STDC", STDCFenvRoundHandler.get());
455 PP.AddPragmaHandler("STDC", STDCCXLIMITHandler.get());
458 PP.AddPragmaHandler("STDC", STDCUnknownHandler.get());
461 PP.AddPragmaHandler("clang", PCSectionHandler.get());
465 PP.AddPragmaHandler("OPENCL", OpenCLExtensionHandler.get());
467 PP.AddPragmaHandler("OPENCL", FPContractHandler.get());
473 PP.AddPragmaHandler(OpenMPHandler.get());
479 PP.AddPragmaHandler(OpenACCHandler.get());
484 PP.AddPragmaHandler(MSCommentHandler.get());
488 PP.AddPragmaHandler(FloatControlHandler.get());
492 PP.AddPragmaHandler(MSDetectMismatchHandler.get());
494 PP.AddPragmaHandler(MSPointersToMembers.get());
496 PP.AddPragmaHandler(MSVtorDisp.get());
498 PP.AddPragmaHandler(MSInitSeg.get());
500 PP.AddPragmaHandler(MSDataSeg.get());
502 PP.AddPragmaHandler(MSBSSSeg.get());
504 PP.AddPragmaHandler(MSConstSeg.get());
506 PP.AddPragmaHandler(MSCodeSeg.get());
508 PP.AddPragmaHandler(MSSection.get());
511 PP.AddPragmaHandler(MSStrictGuardStackCheck.get());
513 PP.AddPragmaHandler(MSFunction.get());
515 PP.AddPragmaHandler(MSAllocText.get());
517 PP.AddPragmaHandler(MSOptimize.get());
519 PP.AddPragmaHandler(MSRuntimeChecks.get());
521 PP.AddPragmaHandler(MSIntrinsic.get());
523 PP.AddPragmaHandler(MSFenvAccess.get());
529 PP.AddPragmaHandler("clang", CUDAForceHostDeviceHandler.get());
533 PP.AddPragmaHandler("clang", OptimizeHandler.get());
536 PP.AddPragmaHandler("clang", LoopHintHandler.get());
539 PP.AddPragmaHandler(UnrollHintHandler.get());
540 PP.AddPragmaHandler("GCC", UnrollHintHandler.get());
543 PP.AddPragmaHandler(NoUnrollHintHandler.get());
544 PP.AddPragmaHandler("GCC", NoUnrollHintHandler.get());
548 PP.AddPragmaHandler(UnrollAndJamHintHandler.get());
552 PP.AddPragmaHandler(NoUnrollAndJamHintHandler.get());
555 PP.AddPragmaHandler("clang", FPHandler.get());
559 PP.AddPragmaHandler("clang", AttributePragmaHandler.get());
562 PP.AddPragmaHandler("clang", MaxTokensHerePragmaHandler.get());
565 PP.AddPragmaHandler("clang", MaxTokensTotalPragmaHandler.get());
569 PP.AddPragmaHandler("clang", RISCVPragmaHandler.get());
575 PP.RemovePragmaHandler(AlignHandler.get());
577 PP.RemovePragmaHandler("GCC", GCCVisibilityHandler.get());
579 PP.RemovePragmaHandler(OptionsHandler.get());
581 PP.RemovePragmaHandler(PackHandler.get());
583 PP.RemovePragmaHandler(MSStructHandler.get());
585 PP.RemovePragmaHandler(UnusedHandler.get());
587 PP.RemovePragmaHandler(WeakHandler.get());
589 PP.RemovePragmaHandler(RedefineExtnameHandler.get());
593 PP.RemovePragmaHandler("OPENCL", OpenCLExtensionHandler.get());
595 PP.RemovePragmaHandler("OPENCL", FPContractHandler.get());
597 PP.RemovePragmaHandler(OpenMPHandler.get());
600 PP.RemovePragmaHandler(OpenACCHandler.get());
605 PP.RemovePragmaHandler(MSCommentHandler.get());
609 PP.RemovePragmaHandler("clang", PCSectionHandler.get());
612 PP.RemovePragmaHandler(FloatControlHandler.get());
615 PP.RemovePragmaHandler(MSDetectMismatchHandler.get());
617 PP.RemovePragmaHandler(MSPointersToMembers.get());
619 PP.RemovePragmaHandler(MSVtorDisp.get());
621 PP.RemovePragmaHandler(MSInitSeg.get());
623 PP.RemovePragmaHandler(MSDataSeg.get());
625 PP.RemovePragmaHandler(MSBSSSeg.get());
627 PP.RemovePragmaHandler(MSConstSeg.get());
629 PP.RemovePragmaHandler(MSCodeSeg.get());
631 PP.RemovePragmaHandler(MSSection.get());
633 PP.RemovePragmaHandler(MSStrictGuardStackCheck.get());
635 PP.RemovePragmaHandler(MSFunction.get());
637 PP.RemovePragmaHandler(MSAllocText.get());
639 PP.RemovePragmaHandler(MSRuntimeChecks.get());
641 PP.RemovePragmaHandler(MSIntrinsic.get());
643 PP.RemovePragmaHandler(MSOptimize.get());
645 PP.RemovePragmaHandler(MSFenvAccess.get());
650 PP.RemovePragmaHandler("clang", CUDAForceHostDeviceHandler.get());
654 PP.RemovePragmaHandler("STDC", FPContractHandler.get());
657 PP.RemovePragmaHandler("STDC", STDCFenvAccessHandler.get());
660 PP.RemovePragmaHandler("STDC", STDCFenvRoundHandler.get());
663 PP.RemovePragmaHandler("STDC", STDCCXLIMITHandler.get());
666 PP.RemovePragmaHandler("STDC", STDCUnknownHandler.get());
669 PP.RemovePragmaHandler("clang", OptimizeHandler.get());
672 PP.RemovePragmaHandler("clang", LoopHintHandler.get());
675 PP.RemovePragmaHandler(UnrollHintHandler.get());
676 PP.RemovePragmaHandler("GCC", UnrollHintHandler.get());
679 PP.RemovePragmaHandler(NoUnrollHintHandler.get());
680 PP.RemovePragmaHandler("GCC", NoUnrollHintHandler.get());
683 PP.RemovePragmaHandler(UnrollAndJamHintHandler.get());
686 PP.RemovePragmaHandler(NoUnrollAndJamHintHandler.get());
689 PP.RemovePragmaHandler("clang", FPHandler.get());
692 PP.RemovePragmaHandler("clang", AttributePragmaHandler.get());
695 PP.RemovePragmaHandler("clang", MaxTokensHerePragmaHandler.get());
698 PP.RemovePragmaHandler("clang", MaxTokensTotalPragmaHandler.get());
702 PP.RemovePragmaHandler("clang", RISCVPragmaHandler.get());
770 PP.Diag(Tok, diag::warn_pragma_debug_missing_argument) << "dump";
773 PP.Diag(Tok, diag::warn_pragma_debug_unexpected_argument);
789 PP.Diag(StartLoc, diag::warn_pragma_debug_dependent_argument)
943 PP.Diag(Tok, diag::err_expected) << tok::l_brace;
989 PP.Diag(NameLoc, diag::warn_pragma_expected_predicate) << 1;
1001 PP.Diag(NameLoc, diag::warn_pragma_unknown_extension) << Ident;
1005 PP.Diag(NameLoc, diag::warn_pragma_extension_is_core) << Ident;
1007 PP.Diag(NameLoc, diag::warn_pragma_unsupported_extension) << Ident;
1034 PP.EnterTokenStream(std::move(TheTokens->first), TheTokens->second, true,
1039 PP.Lex(Tok); // pragma kind
1061 PP.Lex(Tok);
1062 PP.Lex(Tok);
1069 PP.Diag(PragmaLocation, diag::warn_pragma_expected_lparen) << PragmaName;
1072 PP.Lex(Tok); // (
1075 PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_name)
1084 PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string)
1091 PP.Lex(Tok); // ,
1096 PP.Lex(Tok); // long/short
1101 PP.Diag(PragmaLocation, diag::warn_pragma_expected_action_or_r_paren)
1118 PP.Diag(PragmaLocation, Flag == ASTContext::PSF_None
1126 PP.Lex(Tok); // Identifier
1133 PP.Diag(PragmaLocation, diag::warn_pragma_expected_rparen) << PragmaName;
1136 PP.Lex(Tok); // )
1138 PP.Diag(PragmaLocation, diag::warn_pragma_extra_tokens_at_eol)
1142 PP.Lex(Tok); // eof
1150 PP.Diag(PragmaLocation, diag::warn_pragma_expected_lparen) << PragmaName;
1153 PP.Lex(Tok); // (
1163 PP.Diag(PragmaLocation,
1169 PP.Lex(Tok); // push | pop
1171 PP.Lex(Tok); // ,
1175 PP.Lex(Tok); // identifier
1177 PP.Lex(Tok);
1179 PP.Diag(PragmaLocation, diag::warn_pragma_expected_punc)
1185 PP.Diag(PragmaLocation, diag::warn_pragma_expected_punc) << PragmaName;
1198 PP.Diag(PragmaLocation, DiagID) << PragmaName;
1206 PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string)
1215 PP.Diag(PragmaLocation, diag::warn_pragma_expected_rparen) << PragmaName;
1218 PP.Lex(Tok); // )
1220 PP.Diag(PragmaLocation, diag::warn_pragma_extra_tokens_at_eol)
1224 PP.Lex(Tok); // eof
1234 PP.Diag(PragmaLocation, diag::warn_pragma_init_seg_unsupported_target);
1262 PP.Lex(Tok);
1270 PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string)
1278 PP.Diag(PragmaLocation, diag::warn_pragma_expected_init_seg) << PragmaName;
1305 PP.Lex(Tok);
1311 PP.Lex(Tok);
1320 PP.Lex(Tok);
1323 PP.Lex(Tok);
1326 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action)
1359 PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string)
1366 PP.Lex(Tok);
1368 PP.Diag(PragmaLocation, diag::warn_pragma_expected_section_name)
1380 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
1388 PP.Lex(Tok);
1391 PP.Lex(Tok);
1513 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/false,
1523 PP.Lex(Tok); // Identifier
1546 PP.Lex(Tok); // ,
1559 PP.Lex(Tok); // Identifier
1583 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/false,
1900 PP.EnterTokenStream(Info->Tokens, /*DisableMacroExpansion=*/false,
2068 void PragmaGCCVisibilityHandler::HandlePragma(Preprocessor &PP,
2074 PP.LexUnexpandedToken(Tok);
2082 PP.LexUnexpandedToken(Tok);
2084 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
2088 PP.LexUnexpandedToken(Tok);
2091 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2095 PP.LexUnexpandedToken(Tok);
2097 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
2102 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2107 PP.LexUnexpandedToken(Tok);
2109 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2121 PP.EnterTokenStream(std::move(Toks), 1, /*DisableMacroExpansion=*/true,
2130 void PragmaPackHandler::HandlePragma(Preprocessor &PP,
2136 PP.Lex(Tok);
2138 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "pack";
2146 PP.Lex(Tok);
2150 PP.Lex(Tok);
2155 Action = (PP.getLangOpts().ApplePragmaPack || PP.getLangOpts().XLPragmaPack)
2171 PP.Lex(Tok);
2172 } else if (II->isStr("packed") && PP.getLangOpts().ZOSExt) {
2175 PP.Lex(Tok);
2176 } else if (II->isStr("full") && PP.getLangOpts().ZOSExt) {
2179 PP.Lex(Tok);
2180 } else if (II->isStr("twobyte") && PP.getLangOpts().ZOSExt) {
2183 PP.Lex(Tok);
2184 } else if (II->isStr("reset") && PP.getLangOpts().ZOSExt) {
2187 PP.Lex(Tok);
2194 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << "pack";
2197 PP.Lex(Tok);
2200 PP.Lex(Tok);
2206 PP.Lex(Tok);
2209 PP.Lex(Tok);
2212 PP.Lex(Tok);
2215 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
2222 PP.Lex(Tok);
2225 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
2230 } else if (PP.getLangOpts().ApplePragmaPack ||
2231 PP.getLangOpts().XLPragmaPack) {
2240 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "pack";
2245 PP.Lex(Tok);
2247 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "pack";
2252 PP.getPreprocessorAllocator().Allocate<Sema::PragmaPackInfo>(1);
2257 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
2264 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2270 void PragmaMSStructHandler::HandlePragma(Preprocessor &PP,
2276 PP.Lex(Tok);
2278 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
2285 PP.Lex(Tok);
2288 PP.Lex(Tok);
2290 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
2295 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2300 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
2308 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2313 void PragmaClangSectionHandler::HandlePragma(Preprocessor &PP,
2320 PP.Lex(Tok); // eat 'section'
2323 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
2339 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
2344 PP.Lex(Tok); // eat ['bss'|'data'|'rodata'|'text']
2346 PP.Diag(Tok.getLocation(), diag::err_pragma_clang_section_expected_equal) << SecKind;
2351 if (!PP.LexStringLiteral(Tok, SecName, "pragma clang section", false))
2365 static void ParseAlignPragma(Preprocessor &PP, Token &FirstTok,
2370 PP.Lex(Tok);
2373 PP.Diag(Tok.getLocation(), diag::warn_pragma_options_expected_align);
2378 PP.Lex(Tok);
2379 if (PP.getLangOpts().XLPragmaPack) {
2381 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "align";
2385 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_expected_equal)
2390 PP.Lex(Tok);
2392 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2412 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_invalid_option)
2417 if (PP.getLangOpts().XLPragmaPack) {
2418 PP.Lex(Tok);
2420 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "align";
2426 PP.Lex(Tok);
2428 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2433 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
2441 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2445 void PragmaAlignHandler::HandlePragma(Preprocessor &PP,
2448 ParseAlignPragma(PP, AlignTok, /*IsOptions=*/false);
2451 void PragmaOptionsHandler::HandlePragma(Preprocessor &PP,
2454 ParseAlignPragma(PP, OptionsTok, /*IsOptions=*/true);
2458 void PragmaUnusedHandler::HandlePragma(Preprocessor &PP,
2466 PP.Lex(Tok);
2468 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "unused";
2478 PP.Lex(Tok);
2488 PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var);
2504 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_punc) << "unused";
2508 PP.Lex(Tok);
2510 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2525 PP.getPreprocessorAllocator().Allocate<Token>(2 * Identifiers.size()),
2534 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2540 void PragmaWeakHandler::HandlePragma(Preprocessor &PP,
2546 PP.Lex(Tok);
2548 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << "weak";
2556 PP.Lex(Tok);
2559 PP.Lex(Tok);
2561 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2566 PP.Lex(Tok);
2570 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "weak";
2576 PP.getPreprocessorAllocator().Allocate<Token>(3), 3);
2584 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2588 PP.getPreprocessorAllocator().Allocate<Token>(2), 2);
2595 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2601 void PragmaRedefineExtnameHandler::HandlePragma(Preprocessor &PP,
2607 PP.Lex(Tok);
2609 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2615 PP.Lex(Tok);
2618 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2624 PP.Lex(Tok);
2627 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2632 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(3),
2641 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2645 void PragmaFPContractHandler::HandlePragma(Preprocessor &PP,
2649 if (PP.LexOnOffSwitch(OOS))
2652 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
2660 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2664 void PragmaOpenCLExtensionHandler::HandlePragma(Preprocessor &PP,
2667 PP.LexUnexpandedToken(Tok);
2669 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2676 PP.Lex(Tok);
2678 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_colon) << Ext;
2682 PP.Lex(Tok);
2684 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << 0;
2699 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate)
2705 PP.Lex(Tok);
2707 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2712 auto Info = PP.getPreprocessorAllocator().Allocate<OpenCLExtData>(1);
2715 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
2722 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
2725 if (PP.getPPCallbacks())
2726 PP.getPPCallbacks()->PragmaOpenCLExtension(NameLoc, Ext,
2734 Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {
2735 if (!PP.getDiagnostics().isIgnored(IgnoredDiag, FirstTok.getLocation())) {
2736 PP.Diag(FirstTok, IgnoredDiag);
2737 PP.getDiagnostics().setSeverity(IgnoredDiag, diag::Severity::Ignored,
2740 PP.DiscardUntilEndOfDirective();
2748 Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstTok) {
2757 PP.Lex(Tok);
2759 PP.Diag(Tok, UnexpectedDiag) << 0;
2762 PP.Lex(Tok);
2768 PP.Lex(Tok);
2779 PP.EnterTokenStream(std::move(Toks), Pragma.size(),
2791 void PragmaMSPointersToMembers::HandlePragma(Preprocessor &PP,
2795 PP.Lex(Tok);
2797 PP.Diag(PointersToMembersLoc, diag::warn_pragma_expected_lparen)
2801 PP.Lex(Tok);
2804 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2808 PP.Lex(Tok);
2816 PP.Lex(Tok);
2820 PP.Diag(Tok.getLocation(),
2825 PP.Lex(Tok);
2832 PP.Diag(Tok.getLocation(), diag::err_expected_punc)
2849 PP.Diag(Tok.getLocation(),
2858 PP.Diag(Tok.getLocation(), diag::err_expected_rparen_after)
2864 PP.Lex(Tok);
2866 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2878 PP.EnterToken(AnnotTok, /*IsReinject=*/true);
2889 void PragmaMSVtorDisp::HandlePragma(Preprocessor &PP,
2892 PP.Lex(Tok);
2894 PP.Diag(VtorDispLoc, diag::warn_pragma_expected_lparen) << "vtordisp";
2897 PP.Lex(Tok);
2904 PP.Lex(Tok);
2906 PP.Diag(VtorDispLoc, diag::warn_pragma_expected_punc) << "vtordisp";
2909 PP.Lex(Tok);
2914 PP.Lex(Tok);
2930 PP.Lex(Tok);
2933 PP.Lex(Tok);
2936 PP.parseSimpleIntegerLiteral(Tok, Value)) {
2938 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_integer)
2943 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action)
2951 PP.Diag(VtorDispLoc, diag::warn_pragma_expected_rparen) << "vtordisp";
2955 PP.Lex(Tok);
2957 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2970 PP.EnterToken(AnnotTok, /*IsReinject=*/false);
2975 void PragmaMSPragma::HandlePragma(Preprocessor &PP,
2986 for (; Tok.isNot(tok::eod); PP.Lex(Tok)) {
2997 auto Value = new (PP.getPreprocessorAllocator())
3001 PP.EnterToken(AnnotTok, /*IsReinject*/ false);
3015 void PragmaFloatControlHandler::HandlePragma(Preprocessor &PP,
3021 if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {
3022 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
3026 PP.Lex(Tok);
3028 PP.Diag(FloatControlLoc, diag::err_expected) << tok::l_paren;
3033 PP.Lex(Tok);
3035 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3048 PP.Lex(Tok); // the identifier
3050 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3054 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3057 PP.Lex(Tok); // Eat the r_paren
3062 PP.Lex(Tok); // the r_paren
3064 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3067 PP.Lex(Tok); // ,
3069 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3084 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3087 PP.Lex(Tok); // the identifier
3089 PP.Lex(Tok); // ,
3091 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3098 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3101 PP.Lex(Tok); // the push identifier
3104 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3107 PP.Lex(Tok); // the r_paren
3112 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3117 // Note: there is no accomodation for PP callback for this pragma.
3129 PP.EnterTokenStream(std::move(TokenArray), 1,
3143 void PragmaDetectMismatchHandler::HandlePragma(Preprocessor &PP,
3147 PP.Lex(Tok);
3149 PP.Diag(DetectMismatchLoc, diag::err_expected) << tok::l_paren;
3155 if (!PP.LexStringLiteral(Tok, NameString,
3163 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
3167 if (!PP.LexStringLiteral(Tok, ValueString, "pragma detect_mismatch",
3172 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3175 PP.Lex(Tok); // Eat the r_paren.
3178 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
3183 if (PP.getPPCallbacks())
3184 PP.getPPCallbacks()->PragmaDetectMismatch(DetectMismatchLoc, NameString,
3199 void PragmaCommentHandler::HandlePragma(Preprocessor &PP,
3203 PP.Lex(Tok);
3205 PP.Diag(CommentLoc, diag::err_pragma_comment_malformed);
3210 PP.Lex(Tok);
3212 PP.Diag(CommentLoc, diag::err_pragma_comment_malformed);
3227 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_unknown_kind);
3231 if (PP.getTargetInfo().getTriple().isOSBinFormatELF() && Kind != PCK_Lib) {
3232 PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored)
3238 PP.Lex(Tok);
3240 if (Tok.is(tok::comma) && !PP.LexStringLiteral(Tok, ArgumentString,
3253 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
3256 PP.Lex(Tok); // eat the r_paren.
3259 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
3264 if (PP.getPPCallbacks())
3265 PP.getPPCallbacks()->PragmaComment(CommentLoc, II, ArgumentString);
3272 void PragmaOptimizeHandler::HandlePragma(Preprocessor &PP,
3276 PP.Lex(Tok);
3278 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
3283 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
3284 << PP.getSpelling(Tok);
3293 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
3294 << PP.getSpelling(Tok);
3297 PP.Lex(Tok);
3300 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_extra_argument)
3301 << PP.getSpelling(Tok);
3321 void PragmaFPHandler::HandlePragma(Preprocessor &PP,
3327 PP.Lex(Tok);
3329 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
3334 auto *AnnotValue = new (PP.getPreprocessorAllocator()) TokFPAnnotValue;
3347 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
3351 PP.Lex(Tok);
3355 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3358 PP.Lex(Tok);
3364 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3365 << PP.getSpelling(Tok) << OptionInfo->getName()
3380 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3381 << PP.getSpelling(Tok) << OptionInfo->getName() << *FlagKind;
3393 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3394 << PP.getSpelling(Tok) << OptionInfo->getName() << *FlagKind;
3406 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3407 << PP.getSpelling(Tok) << OptionInfo->getName() << *FlagKind;
3419 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3420 << PP.getSpelling(Tok) << OptionInfo->getName() << *FlagKind;
3424 PP.Lex(Tok);
3428 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3431 PP.Lex(Tok);
3435 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3451 PP.EnterTokenStream(std::move(TokenArray), TokenList.size(),
3455 void PragmaSTDC_FENV_ROUNDHandler::HandlePragma(Preprocessor &PP,
3460 if (!PP.getTargetInfo().hasStrictFP() && !PP.getLangOpts().ExpStrictFP) {
3461 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
3466 PP.Lex(Tok);
3468 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
3484 PP.Diag(Tok.getLocation(), diag::warn_stdc_unknown_rounding_mode);
3487 PP.Lex(Tok);
3490 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3496 PP.Diag(Tok.getLocation(), diag::warn_stdc_fenv_round_not_supported);
3498 MutableArrayRef<Token> Toks(PP.getPreprocessorAllocator().Allocate<Token>(1),
3506 PP.EnterTokenStream(Toks, /*DisableMacroExpansion=*/true,
3538 static bool ParseLoopHintValue(Preprocessor &PP, Token &Tok, Token PragmaName,
3554 PP.Lex(Tok);
3560 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3563 PP.Lex(Tok);
3573 Info.Toks = llvm::ArrayRef(ValueList).copy(PP.getPreprocessorAllocator());
3628 void PragmaLoopHintHandler::HandlePragma(Preprocessor &PP,
3636 PP.Lex(Tok);
3638 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3660 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3664 PP.Lex(Tok);
3668 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3671 PP.Lex(Tok);
3673 auto *Info = new (PP.getPreprocessorAllocator()) PragmaLoopHintInfo;
3674 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, /*ValueInParens=*/true,
3689 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3697 PP.EnterTokenStream(std::move(TokenArray), TokenList.size(),
3722 void PragmaUnrollHintHandler::HandlePragma(Preprocessor &PP,
3728 PP.Lex(Tok);
3729 auto *Info = new (PP.getPreprocessorAllocator()) PragmaLoopHintInfo;
3736 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3745 PP.Lex(Tok);
3749 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, ValueInParens, *Info))
3754 if (PP.getLangOpts().CUDA && ValueInParens)
3755 PP.Diag(Info->Toks[0].getLocation(),
3759 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3772 PP.EnterTokenStream(std::move(TokenArray), 1,
3788 void PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP,
3791 PP.Lex(Tok);
3794 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
3798 PP.Lex(Tok);
3800 bool SuggestIntrinH = !PP.isMacroDefined("__INTRIN_H");
3805 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3808 PP.Lex(Tok);
3811 PP.Lex(Tok);
3815 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
3819 PP.Lex(Tok);
3822 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3834 bool SuggestIntrinH = !PP.isMacroDefined("__INTRIN_H");
3840 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3845 PP.Lex(Tok);
3848 PP.Lex(Tok); // ,
3870 PP.Diag(PragmaLocation, diag::warn_pragma_expected_string) << PragmaName;
3878 PP.Diag(PragmaLocation, diag::warn_pragma_expected_non_wide_string)
3888 PP.Diag(PragmaLocation, diag::warn_pragma_missing_argument)
3894 PP.Diag(PragmaLocation, diag::warn_pragma_invalid_argument)
3895 << PP.getSpelling(Tok) << PragmaName << /*Expected=*/true
3900 PP.Lex(Tok);
3908 PP.Diag(PragmaLocation, diag::warn_pragma_invalid_argument)
3923 Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {
3926 PP.Lex(Tok);
3929 PP.Diag(FirstTok.getLocation(),
3937 PP.Diag(FirstTok.getLocation(),
3940 PP.Lex(Tok);
3942 PP.Diag(FirstTok.getLocation(),
3973 void PragmaAttributeHandler::HandlePragma(Preprocessor &PP,
3977 PP.Lex(Tok);
3978 auto *Info = new (PP.getPreprocessorAllocator())
3986 PP.Lex(Tok);
3989 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_period)
3993 PP.Lex(Tok);
3998 PP.Diag(Tok.getLocation(),
4006 PP.Diag(Tok.getLocation(),
4008 PP.Diag(Tok.getLocation(),
4020 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_invalid_argument)
4021 << PP.getSpelling(Tok);
4025 PP.Lex(Tok);
4032 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
4035 PP.Lex(Tok);
4050 PP.Lex(Tok);
4054 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_attribute);
4058 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
4062 PP.Lex(Tok);
4073 llvm::ArrayRef(AttributeTokens).copy(PP.getPreprocessorAllocator());
4077 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4087 PP.EnterTokenStream(std::move(TokenArray), 1,
4092 void PragmaMaxTokensHereHandler::HandlePragma(Preprocessor &PP,
4095 PP.Lex(Tok);
4097 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
4105 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
4106 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
4112 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4117 if (PP.getTokenCount() > MaxTokens) {
4118 PP.Diag(Loc, diag::warn_max_tokens)
4119 << PP.getTokenCount() << (unsigned)MaxTokens;
4124 void PragmaMaxTokensTotalHandler::HandlePragma(Preprocessor &PP,
4127 PP.Lex(Tok);
4129 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
4137 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
4138 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
4144 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4149 PP.overrideMaxTokens(MaxTokens, Loc);
4154 void PragmaRISCVHandler::HandlePragma(Preprocessor &PP,
4158 PP.Lex(Tok);
4162 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
4163 << PP.getSpelling(Tok) << "riscv" << /*Expected=*/true << "'intrinsic'";
4167 PP.Lex(Tok);
4170 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
4171 << PP.getSpelling(Tok) << "riscv" << /*Expected=*/true
4176 PP.Lex(Tok);
4178 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)