Lines Matching defs:Tok

112                     Token &Tok) override {
113 Token PragmaName = Tok;
115 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
127 Toks[0].setLocation(Tok.getLocation());
128 Toks[0].setAnnotationEndLoc(Tok.getLocation());
141 Token &Tok) override {
151 Toks[0].setLocation(Tok.getLocation());
152 Toks[0].setAnnotationEndLoc(Tok.getLocation());
165 Token &Tok) override;
321 Token Tok;
322 PP.Lex(Tok);
323 if (Tok.isNot(tok::l_paren)) {
324 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
328 PP.Lex(Tok); // Consume the l_paren.
329 if (Tok.isNot(tok::identifier)) {
330 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);
333 const IdentifierInfo *II = Tok.getIdentifierInfo();
337 PP.Lex(Tok);
340 PP.Lex(Tok);
342 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_fenv_access);
345 if (Tok.isNot(tok::r_paren)) {
346 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
350 PP.Lex(Tok); // Consume the r_paren.
352 if (Tok.isNot(tok::eod)) {
353 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
363 Toks[0].setAnnotationEndLoc(Tok.getLocation());
713 assert(Tok.is(tok::annot_pragma_unused));
715 Actions.ActOnPragmaUnused(Tok, getCurScope(), UnusedLoc);
720 assert(Tok.is(tok::annot_pragma_vis));
722 static_cast<IdentifierInfo *>(Tok.getAnnotationValue());
728 assert(Tok.is(tok::annot_pragma_pack));
730 static_cast<Sema::PragmaPackInfo *>(Tok.getAnnotationValue());
731 SourceLocation PragmaLoc = Tok.getLocation();
748 assert(Tok.is(tok::annot_pragma_msstruct));
750 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
756 assert(Tok.is(tok::annot_pragma_align));
759 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
760 Actions.ActOnPragmaOptionsAlign(Kind, Tok.getLocation());
767 assert(Tok.is(tok::annot_pragma_dump));
769 if (Tok.is(tok::eod)) {
770 PP.Diag(Tok, diag::warn_pragma_debug_missing_argument) << "dump";
772 if (Tok.isNot(tok::identifier)) {
773 PP.Diag(Tok, diag::warn_pragma_debug_unexpected_argument);
778 IdentifierInfo *II = Tok.getIdentifierInfo();
779 Actions.ActOnPragmaDump(getCurScope(), Tok.getLocation(), II);
782 SourceLocation StartLoc = Tok.getLocation();
791 << SourceRange(StartLoc, Tok.getLocation());
801 assert(Tok.is(tok::annot_pragma_weak));
803 Actions.ActOnPragmaWeakID(Tok.getIdentifierInfo(), PragmaLoc,
804 Tok.getLocation());
809 assert(Tok.is(tok::annot_pragma_weakalias));
811 IdentifierInfo *WeakName = Tok.getIdentifierInfo();
812 SourceLocation WeakNameLoc = Tok.getLocation();
814 IdentifierInfo *AliasName = Tok.getIdentifierInfo();
815 SourceLocation AliasNameLoc = Tok.getLocation();
823 assert(Tok.is(tok::annot_pragma_redefine_extname));
825 IdentifierInfo *RedefName = Tok.getIdentifierInfo();
826 SourceLocation RedefNameLoc = Tok.getLocation();
828 IdentifierInfo *AliasName = Tok.getIdentifierInfo();
829 SourceLocation AliasNameLoc = Tok.getLocation();
836 assert(Tok.is(tok::annot_pragma_fp_contract));
839 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
864 assert(Tok.is(tok::annot_pragma_float_control));
871 uintptr_t Value = reinterpret_cast<uintptr_t>(Tok.getAnnotationValue());
880 assert(Tok.is(tok::annot_pragma_fenv_access) ||
881 Tok.is(tok::annot_pragma_fenv_access_ms));
884 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
904 assert(Tok.is(tok::annot_pragma_fenv_round));
906 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
913 assert(Tok.is(tok::annot_pragma_cx_limited_range));
915 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
939 assert(Tok.is(tok::annot_pragma_captured));
942 if (Tok.isNot(tok::l_brace)) {
943 PP.Diag(Tok, diag::err_expected) << tok::l_brace;
947 SourceLocation Loc = Tok.getLocation();
973 assert(Tok.is(tok::annot_pragma_opencl_extension));
974 OpenCLExtData *Data = static_cast<OpenCLExtData*>(Tok.getAnnotationValue());
977 SourceLocation NameLoc = Tok.getLocation();
1011 assert(Tok.is(tok::annot_pragma_ms_pointers_to_members));
1014 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
1020 assert(Tok.is(tok::annot_pragma_ms_vtordisp));
1021 uintptr_t Value = reinterpret_cast<uintptr_t>(Tok.getAnnotationValue());
1030 assert(Tok.is(tok::annot_pragma_ms_pragma));
1033 (std::pair<std::unique_ptr<Token[]>, size_t> *)Tok.getAnnotationValue();
1037 assert(Tok.isAnyIdentifier());
1038 StringRef PragmaName = Tok.getIdentifierInfo()->getName();
1039 PP.Lex(Tok); // pragma kind
1060 while (Tok.isNot(tok::eof))
1061 PP.Lex(Tok);
1062 PP.Lex(Tok);
1068 if (Tok.isNot(tok::l_paren)) {
1072 PP.Lex(Tok); // (
1074 if (Tok.isNot(tok::string_literal)) {
1090 while (Tok.is(tok::comma)) {
1091 PP.Lex(Tok); // ,
1095 if (Tok.is(tok::kw_long) || Tok.is(tok::kw_short)) {
1096 PP.Lex(Tok); // long/short
1100 if (!Tok.isAnyIdentifier()) {
1107 Tok.getIdentifierInfo()->getName())
1121 << PragmaName << Tok.getIdentifierInfo()->getName();
1126 PP.Lex(Tok); // Identifier
1132 if (Tok.isNot(tok::r_paren)) {
1136 PP.Lex(Tok); // )
1137 if (Tok.isNot(tok::eof)) {
1142 PP.Lex(Tok); // eof
1149 if (Tok.isNot(tok::l_paren)) {
1153 PP.Lex(Tok); // (
1156 if (Tok.isAnyIdentifier()) {
1157 StringRef PushPop = Tok.getIdentifierInfo()->getName();
1169 PP.Lex(Tok); // push | pop
1170 if (Tok.is(tok::comma)) {
1171 PP.Lex(Tok); // ,
1173 if (Tok.isAnyIdentifier()) {
1174 SlotLabel = Tok.getIdentifierInfo()->getName();
1175 PP.Lex(Tok); // identifier
1176 if (Tok.is(tok::comma))
1177 PP.Lex(Tok);
1178 else if (Tok.isNot(tok::r_paren)) {
1184 } else if (Tok.isNot(tok::r_paren)) {
1192 if (Tok.isNot(tok::r_paren)) {
1193 if (Tok.isNot(tok::string_literal)) {
1214 if (Tok.isNot(tok::r_paren)) {
1218 PP.Lex(Tok); // )
1219 if (Tok.isNot(tok::eof)) {
1224 PP.Lex(Tok); // eof
1244 if (Tok.isAnyIdentifier()) {
1245 auto *II = Tok.getIdentifierInfo();
1257 Toks[0].setLocation(Tok.getLocation());
1262 PP.Lex(Tok);
1264 } else if (Tok.is(tok::string_literal)) {
1302 if (Tok.is(tok::identifier)) {
1303 StringRef PushPop = Tok.getIdentifierInfo()->getName();
1305 PP.Lex(Tok);
1311 PP.Lex(Tok);
1318 const IdentifierInfo *II = Tok.getIdentifierInfo();
1320 PP.Lex(Tok);
1323 PP.Lex(Tok);
1326 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action)
1347 Token FirstTok = Tok;
1353 if (Tok.is(tok::string_literal)) {
1364 } else if (Tok.is(tok::identifier)) {
1365 Section = Tok.getIdentifierInfo()->getName();
1366 PP.Lex(Tok);
1379 if (Tok.isNot(tok::identifier)) {
1380 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
1385 IdentifierInfo *II = Tok.getIdentifierInfo();
1386 Functions.emplace_back(II, Tok.getLocation());
1388 PP.Lex(Tok);
1389 if (Tok.isNot(tok::comma))
1391 PP.Lex(Tok);
1417 assert(Tok.is(tok::annot_pragma_loop_hint));
1419 static_cast<PragmaLoopHintInfo *>(Tok.getAnnotationValue());
1509 Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1523 PP.Lex(Tok); // Identifier
1526 Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1528 while (Tok.isNot(tok::eof))
1540 if (R.isInvalid() && !Tok.is(tok::comma))
1545 if (Tok.is(tok::comma)) {
1546 PP.Lex(Tok); // ,
1548 StateInfo = Tok.getIdentifierInfo();
1552 Diag(Tok.getLocation(),
1559 PP.Lex(Tok); // Identifier
1564 if (Tok.isNot(tok::eof)) {
1565 Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1567 while (Tok.isNot(tok::eof))
1590 if (Tok.isNot(tok::eof)) {
1591 Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1593 while (Tok.isNot(tok::eof))
1628 static StringRef getIdentifier(const Token &Tok) {
1629 if (Tok.is(tok::identifier))
1630 return Tok.getIdentifierInfo()->getName();
1631 const char *S = tok::getKeywordSpelling(Tok.getKind());
1680 if (getIdentifier(Tok) == "any") {
1689 StringRef Name = getIdentifier(Tok);
1691 Diag(Tok, diag::err_pragma_attribute_expected_subject_identifier);
1698 Diag(Tok, diag::err_pragma_attribute_unknown_subject_rule) << Name;
1716 RuleLoc, Tok.is(tok::comma) ? Tok.getLocation() : RuleLoc));
1722 StringRef SubRuleName = getIdentifier(Tok);
1725 Tok.getLocation());
1734 SubRuleName = getIdentifier(Tok);
1755 SubRuleName, Tok.getLocation());
1761 SourceLocation RuleEndLoc = Tok.getLocation();
1771 RuleLoc, Tok.is(tok::comma) ? Tok.getLocation() : RuleEndLoc));
1795 getAttributeSubjectRulesRecoveryPointForToken(const Token &Tok) {
1796 if (const auto *II = Tok.getIdentifierInfo()) {
1802 if (Tok.is(tok::equal))
1880 assert(Tok.is(tok::annot_pragma_attribute) &&
1882 SourceLocation PragmaLoc = Tok.getLocation();
1883 auto *Info = static_cast<PragmaAttributeInfo *>(Tok.getAnnotationValue());
1912 if ((Tok.is(tok::l_square) && NextToken().is(tok::l_square)) ||
1913 Tok.isRegularKeywordAttribute()) {
1916 } else if (Tok.is(tok::kw___attribute)) {
1926 if (Tok.is(tok::code_completion)) {
1936 if (Tok.isNot(tok::identifier)) {
1937 Diag(Tok, diag::err_pragma_attribute_expected_attribute_name);
1941 IdentifierInfo *AttrName = Tok.getIdentifierInfo();
1944 if (Tok.isNot(tok::l_paren))
1959 } else if (Tok.is(tok::kw___declspec)) {
1962 Diag(Tok, diag::err_pragma_attribute_expected_attribute_syntax);
1963 if (Tok.getIdentifierInfo()) {
1967 Tok.getIdentifierInfo(), /*ScopeName=*/nullptr,
1969 SourceLocation InsertStartLoc = Tok.getLocation();
1971 if (Tok.is(tok::l_paren)) {
1974 if (Tok.isNot(tok::r_paren))
1977 Diag(Tok, diag::note_pragma_attribute_use_attribute_kw)
1979 << FixItHint::CreateInsertion(Tok.getEndLoc(), "))");
2010 if (Tok.isNot(tok::identifier)) {
2017 const IdentifierInfo *II = Tok.getIdentifierInfo();
2046 if (Tok.isNot(tok::eof)) {
2047 Diag(Tok, diag::err_pragma_attribute_extra_tokens_after_attribute);
2073 Token Tok;
2074 PP.LexUnexpandedToken(Tok);
2076 const IdentifierInfo *PushPop = Tok.getIdentifierInfo();
2082 PP.LexUnexpandedToken(Tok);
2083 if (Tok.isNot(tok::l_paren)) {
2084 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
2088 PP.LexUnexpandedToken(Tok);
2089 VisType = Tok.getIdentifierInfo();
2091 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2095 PP.LexUnexpandedToken(Tok);
2096 if (Tok.isNot(tok::r_paren)) {
2097 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
2102 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2106 SourceLocation EndLoc = Tok.getLocation();
2107 PP.LexUnexpandedToken(Tok);
2108 if (Tok.isNot(tok::eod)) {
2109 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2134 Token Tok;
2135 PP.Lex(Tok);
2136 if (Tok.isNot(tok::l_paren)) {
2137 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "pack";
2145 PP.Lex(Tok);
2146 if (Tok.is(tok::numeric_constant)) {
2147 Alignment = Tok;
2149 PP.Lex(Tok);
2157 } else if (Tok.is(tok::identifier)) {
2158 const IdentifierInfo *II = Tok.getIdentifierInfo();
2161 PP.Lex(Tok);
2168 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << "pack";
2171 PP.Lex(Tok);
2173 if (Tok.is(tok::comma)) {
2174 PP.Lex(Tok);
2176 if (Tok.is(tok::numeric_constant)) {
2178 Alignment = Tok;
2180 PP.Lex(Tok);
2181 } else if (Tok.is(tok::identifier)) {
2182 SlotLabel = Tok.getIdentifierInfo()->getName();
2183 PP.Lex(Tok);
2185 if (Tok.is(tok::comma)) {
2186 PP.Lex(Tok);
2188 if (Tok.isNot(tok::numeric_constant)) {
2189 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
2194 Alignment = Tok;
2196 PP.Lex(Tok);
2199 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
2213 if (Tok.isNot(tok::r_paren)) {
2214 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "pack";
2218 SourceLocation RParenLoc = Tok.getLocation();
2219 PP.Lex(Tok);
2220 if (Tok.isNot(tok::eod)) {
2221 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "pack";
2249 Token Tok;
2250 PP.Lex(Tok);
2251 if (Tok.isNot(tok::identifier)) {
2252 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
2255 SourceLocation EndLoc = Tok.getLocation();
2256 const IdentifierInfo *II = Tok.getIdentifierInfo();
2259 PP.Lex(Tok);
2262 PP.Lex(Tok);
2264 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
2268 if (Tok.isNot(tok::eod)) {
2269 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2291 Token Tok;
2294 PP.Lex(Tok); // eat 'section'
2295 while (Tok.isNot(tok::eod)) {
2296 if (Tok.isNot(tok::identifier)) {
2297 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
2301 const IdentifierInfo *SecType = Tok.getIdentifierInfo();
2313 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
2317 SourceLocation PragmaLocation = Tok.getLocation();
2318 PP.Lex(Tok); // eat ['bss'|'data'|'rodata'|'text']
2319 if (Tok.isNot(tok::equal)) {
2320 PP.Diag(Tok.getLocation(), diag::err_pragma_clang_section_expected_equal) << SecKind;
2325 if (!PP.LexStringLiteral(Tok, SecName, "pragma clang section", false))
2341 Token Tok;
2344 PP.Lex(Tok);
2345 if (Tok.isNot(tok::identifier) ||
2346 !Tok.getIdentifierInfo()->isStr("align")) {
2347 PP.Diag(Tok.getLocation(), diag::warn_pragma_options_expected_align);
2352 PP.Lex(Tok);
2354 if (Tok.isNot(tok::l_paren)) {
2355 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "align";
2358 } else if (Tok.isNot(tok::equal)) {
2359 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_expected_equal)
2364 PP.Lex(Tok);
2365 if (Tok.isNot(tok::identifier)) {
2366 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2372 const IdentifierInfo *II = Tok.getIdentifierInfo();
2386 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_invalid_option)
2392 PP.Lex(Tok);
2393 if (Tok.isNot(tok::r_paren)) {
2394 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "align";
2399 SourceLocation EndLoc = Tok.getLocation();
2400 PP.Lex(Tok);
2401 if (Tok.isNot(tok::eod)) {
2402 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2439 Token Tok;
2440 PP.Lex(Tok);
2441 if (Tok.isNot(tok::l_paren)) {
2442 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "unused";
2452 PP.Lex(Tok);
2455 if (Tok.is(tok::identifier)) {
2456 Identifiers.push_back(Tok);
2462 PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var);
2467 if (Tok.is(tok::comma)) {
2472 if (Tok.is(tok::r_paren)) {
2473 RParenLoc = Tok.getLocation();
2478 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_punc) << "unused";
2482 PP.Lex(Tok);
2483 if (Tok.isNot(tok::eod)) {
2484 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2519 Token Tok;
2520 PP.Lex(Tok);
2521 if (Tok.isNot(tok::identifier)) {
2522 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << "weak";
2526 Token WeakName = Tok;
2530 PP.Lex(Tok);
2531 if (Tok.is(tok::equal)) {
2533 PP.Lex(Tok);
2534 if (Tok.isNot(tok::identifier)) {
2535 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2539 AliasName = Tok;
2540 PP.Lex(Tok);
2543 if (Tok.isNot(tok::eod)) {
2544 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "weak";
2580 Token Tok;
2581 PP.Lex(Tok);
2582 if (Tok.isNot(tok::identifier)) {
2583 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2588 Token RedefName = Tok;
2589 PP.Lex(Tok);
2591 if (Tok.isNot(tok::identifier)) {
2592 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2597 Token AliasName = Tok;
2598 PP.Lex(Tok);
2600 if (Tok.isNot(tok::eod)) {
2601 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2621 Token &Tok) {
2630 Toks[0].setLocation(Tok.getLocation());
2631 Toks[0].setAnnotationEndLoc(Tok.getLocation());
2640 Token &Tok) {
2641 PP.LexUnexpandedToken(Tok);
2642 if (Tok.isNot(tok::identifier)) {
2643 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2647 IdentifierInfo *Ext = Tok.getIdentifierInfo();
2648 SourceLocation NameLoc = Tok.getLocation();
2650 PP.Lex(Tok);
2651 if (Tok.isNot(tok::colon)) {
2652 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_colon) << Ext;
2656 PP.Lex(Tok);
2657 if (Tok.isNot(tok::identifier)) {
2658 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << 0;
2661 IdentifierInfo *Pred = Tok.getIdentifierInfo();
2673 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate)
2677 SourceLocation StateLoc = Tok.getLocation();
2679 PP.Lex(Tok);
2680 if (Tok.isNot(tok::eod)) {
2681 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2724 Token Tok;
2725 Tok.startToken();
2726 Tok.setKind(StartTok);
2727 Tok.setLocation(Introducer.Loc);
2729 while (Tok.isNot(tok::eod) && Tok.isNot(tok::eof)) {
2730 Pragma.push_back(Tok);
2731 PP.Lex(Tok);
2732 if (Tok.is(StartTok)) {
2733 PP.Diag(Tok, UnexpectedDiag) << 0;
2736 PP.Lex(Tok);
2737 if (Tok.is(StartTok))
2739 else if (Tok.is(EndTok))
2742 PP.Lex(Tok);
2745 SourceLocation EodLoc = Tok.getLocation();
2746 Tok.startToken();
2747 Tok.setKind(EndTok);
2748 Tok.setLocation(EodLoc);
2749 Pragma.push_back(Tok);
2767 Token &Tok) {
2768 SourceLocation PointersToMembersLoc = Tok.getLocation();
2769 PP.Lex(Tok);
2770 if (Tok.isNot(tok::l_paren)) {
2775 PP.Lex(Tok);
2776 const IdentifierInfo *Arg = Tok.getIdentifierInfo();
2778 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2782 PP.Lex(Tok);
2789 if (Tok.is(tok::comma)) {
2790 PP.Lex(Tok);
2792 Arg = Tok.getIdentifierInfo();
2794 PP.Diag(Tok.getLocation(),
2796 << Tok.getKind() << /*OnlyInheritanceModels*/ 0;
2799 PP.Lex(Tok);
2800 } else if (Tok.is(tok::r_paren)) {
2806 PP.Diag(Tok.getLocation(), diag::err_expected_punc)
2823 PP.Diag(Tok.getLocation(),
2831 if (Tok.isNot(tok::r_paren)) {
2832 PP.Diag(Tok.getLocation(), diag::err_expected_rparen_after)
2837 SourceLocation EndLoc = Tok.getLocation();
2838 PP.Lex(Tok);
2839 if (Tok.isNot(tok::eod)) {
2840 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2864 PragmaIntroducer Introducer, Token &Tok) {
2865 SourceLocation VtorDispLoc = Tok.getLocation();
2866 PP.Lex(Tok);
2867 if (Tok.isNot(tok::l_paren)) {
2871 PP.Lex(Tok);
2874 const IdentifierInfo *II = Tok.getIdentifierInfo();
2878 PP.Lex(Tok);
2879 if (Tok.isNot(tok::comma)) {
2883 PP.Lex(Tok);
2888 PP.Lex(Tok);
2893 if (Tok.is(tok::r_paren)) {
2902 const IdentifierInfo *II = Tok.getIdentifierInfo();
2904 PP.Lex(Tok);
2907 PP.Lex(Tok);
2909 } else if (Tok.is(tok::numeric_constant) &&
2910 PP.parseSimpleIntegerLiteral(Tok, Value)) {
2912 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_integer)
2917 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action)
2924 if (Tok.isNot(tok::r_paren)) {
2928 SourceLocation EndLoc = Tok.getLocation();
2929 PP.Lex(Tok);
2930 if (Tok.isNot(tok::eod)) {
2931 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2950 PragmaIntroducer Introducer, Token &Tok) {
2956 AnnotTok.setLocation(Tok.getLocation());
2957 AnnotTok.setAnnotationEndLoc(Tok.getLocation());
2960 for (; Tok.isNot(tok::eod); PP.Lex(Tok)) {
2961 TokenVector.push_back(Tok);
2962 AnnotTok.setAnnotationEndLoc(Tok.getLocation());
2991 Token &Tok) {
2993 SourceLocation FloatControlLoc = Tok.getLocation();
2994 Token PragmaName = Tok;
2996 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
3000 PP.Lex(Tok);
3001 if (Tok.isNot(tok::l_paren)) {
3007 PP.Lex(Tok);
3008 if (Tok.isNot(tok::identifier)) {
3009 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3014 IdentifierInfo *II = Tok.getIdentifierInfo();
3022 PP.Lex(Tok); // the identifier
3024 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3027 if (Tok.isNot(tok::r_paren)) {
3028 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3031 PP.Lex(Tok); // Eat the r_paren
3034 if (Tok.is(tok::r_paren))
3036 PP.Lex(Tok); // the r_paren
3037 else if (Tok.isNot(tok::comma)) {
3038 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3041 PP.Lex(Tok); // ,
3042 if (!Tok.isAnyIdentifier()) {
3043 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3046 StringRef PushOnOff = Tok.getIdentifierInfo()->getName();
3058 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3061 PP.Lex(Tok); // the identifier
3062 if (Tok.is(tok::comma)) {
3063 PP.Lex(Tok); // ,
3064 if (!Tok.isAnyIdentifier()) {
3065 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3068 StringRef ExpectedPush = Tok.getIdentifierInfo()->getName();
3072 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3075 PP.Lex(Tok); // the push identifier
3077 if (Tok.isNot(tok::r_paren)) {
3078 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3081 PP.Lex(Tok); // the r_paren
3084 SourceLocation EndLoc = Tok.getLocation();
3085 if (Tok.isNot(tok::eod)) {
3086 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3119 Token &Tok) {
3120 SourceLocation DetectMismatchLoc = Tok.getLocation();
3121 PP.Lex(Tok);
3122 if (Tok.isNot(tok::l_paren)) {
3129 if (!PP.LexStringLiteral(Tok, NameString,
3136 if (Tok.isNot(tok::comma)) {
3137 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
3141 if (!PP.LexStringLiteral(Tok, ValueString, "pragma detect_mismatch",
3145 if (Tok.isNot(tok::r_paren)) {
3146 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3149 PP.Lex(Tok); // Eat the r_paren.
3151 if (Tok.isNot(tok::eod)) {
3152 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
3175 Token &Tok) {
3176 SourceLocation CommentLoc = Tok.getLocation();
3177 PP.Lex(Tok);
3178 if (Tok.isNot(tok::l_paren)) {
3184 PP.Lex(Tok);
3185 if (Tok.isNot(tok::identifier)) {
3191 IdentifierInfo *II = Tok.getIdentifierInfo();
3201 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_unknown_kind);
3206 PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored)
3212 PP.Lex(Tok);
3214 if (Tok.is(tok::comma) && !PP.LexStringLiteral(Tok, ArgumentString,
3226 if (Tok.isNot(tok::r_paren)) {
3227 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
3230 PP.Lex(Tok); // eat the r_paren.
3232 if (Tok.isNot(tok::eod)) {
3233 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
3249 Token Tok;
3250 PP.Lex(Tok);
3251 if (Tok.is(tok::eod)) {
3252 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
3256 if (Tok.isNot(tok::identifier)) {
3257 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
3258 << PP.getSpelling(Tok);
3261 const IdentifierInfo *II = Tok.getIdentifierInfo();
3267 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
3268 << PP.getSpelling(Tok);
3271 PP.Lex(Tok);
3273 if (Tok.isNot(tok::eod)) {
3274 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_extra_argument)
3275 << PP.getSpelling(Tok);
3296 PragmaIntroducer Introducer, Token &Tok) {
3298 Token PragmaName = Tok;
3301 PP.Lex(Tok);
3302 if (Tok.isNot(tok::identifier)) {
3303 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
3309 while (Tok.is(tok::identifier)) {
3310 IdentifierInfo *OptionInfo = Tok.getIdentifierInfo();
3321 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
3325 PP.Lex(Tok);
3328 if (Tok.isNot(tok::l_paren)) {
3329 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3332 PP.Lex(Tok);
3334 Tok.is(tok::kw_double) && FlagKind == PFK_EvalMethod;
3337 if (Tok.isNot(tok::identifier) && !isEvalMethodDouble) {
3338 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3339 << PP.getSpelling(Tok) << OptionInfo->getName()
3343 const IdentifierInfo *II = Tok.getIdentifierInfo();
3354 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3355 << PP.getSpelling(Tok) << OptionInfo->getName() << *FlagKind;
3367 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3368 << PP.getSpelling(Tok) << OptionInfo->getName() << *FlagKind;
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;
3398 PP.Lex(Tok);
3401 if (Tok.isNot(tok::r_paren)) {
3402 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3405 PP.Lex(Tok);
3408 if (Tok.isNot(tok::eod)) {
3409 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3431 Token &Tok) {
3432 Token PragmaName = Tok;
3435 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
3440 PP.Lex(Tok);
3441 if (Tok.isNot(tok::identifier)) {
3442 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
3446 IdentifierInfo *II = Tok.getIdentifierInfo();
3458 PP.Diag(Tok.getLocation(), diag::warn_stdc_unknown_rounding_mode);
3461 PP.Lex(Tok);
3463 if (Tok.isNot(tok::eod)) {
3464 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3470 PP.Diag(Tok.getLocation(), diag::warn_stdc_fenv_round_not_supported);
3476 Toks[0].setLocation(Tok.getLocation());
3477 Toks[0].setAnnotationEndLoc(Tok.getLocation());
3485 assert(Tok.is(tok::annot_pragma_fp));
3487 reinterpret_cast<TokFPAnnotValue *>(Tok.getAnnotationValue());
3491 Tok.getLocation(), PFK_Reassociate,
3496 Tok.getLocation(), PFK_Reciprocal,
3500 Actions.ActOnPragmaFPContract(Tok.getLocation(),
3503 Actions.ActOnPragmaFPExceptions(Tok.getLocation(),
3506 Actions.ActOnPragmaFPEvalMethod(Tok.getLocation(),
3512 static bool ParseLoopHintValue(Preprocessor &PP, Token &Tok, Token PragmaName,
3518 while (Tok.isNot(tok::eod)) {
3519 if (Tok.is(tok::l_paren))
3521 else if (Tok.is(tok::r_paren)) {
3527 ValueList.push_back(Tok);
3528 PP.Lex(Tok);
3533 if (Tok.isNot(tok::r_paren)) {
3534 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3537 PP.Lex(Tok);
3543 EOFTok.setLocation(Tok.getLocation());
3604 Token &Tok) {
3606 Token PragmaName = Tok;
3610 PP.Lex(Tok);
3611 if (Tok.isNot(tok::identifier)) {
3612 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3617 while (Tok.is(tok::identifier)) {
3618 Token Option = Tok;
3619 IdentifierInfo *OptionInfo = Tok.getIdentifierInfo();
3634 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3638 PP.Lex(Tok);
3641 if (Tok.isNot(tok::l_paren)) {
3642 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3645 PP.Lex(Tok);
3648 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, /*ValueInParens=*/true,
3662 if (Tok.isNot(tok::eod)) {
3663 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3698 Token &Tok) {
3701 Token PragmaName = Tok;
3702 PP.Lex(Tok);
3704 if (Tok.is(tok::eod)) {
3710 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3717 bool ValueInParens = Tok.is(tok::l_paren);
3719 PP.Lex(Tok);
3723 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, ValueInParens, *Info))
3732 if (Tok.isNot(tok::eod)) {
3733 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3764 Token &Tok) {
3765 PP.Lex(Tok);
3767 if (Tok.isNot(tok::l_paren)) {
3768 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
3772 PP.Lex(Tok);
3776 while (Tok.is(tok::identifier)) {
3777 IdentifierInfo *II = Tok.getIdentifierInfo();
3779 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3782 PP.Lex(Tok);
3783 if (Tok.isNot(tok::comma))
3785 PP.Lex(Tok);
3788 if (Tok.isNot(tok::r_paren)) {
3789 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
3793 PP.Lex(Tok);
3795 if (Tok.isNot(tok::eod))
3796 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3802 Token FirstTok = Tok;
3811 while (Tok.is(tok::identifier)) {
3812 IdentifierInfo *II = Tok.getIdentifierInfo();
3814 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3819 PP.Lex(Tok);
3820 if (Tok.isNot(tok::comma))
3822 PP.Lex(Tok); // ,
3838 Token FirstTok = Tok;
3843 if (Tok.isNot(tok::string_literal)) {
3861 if (Tok.is(tok::eof) || Tok.is(tok::r_paren)) {
3866 IdentifierInfo *II = Tok.getIdentifierInfo();
3869 << PP.getSpelling(Tok) << PragmaName << /*Expected=*/true
3874 PP.Lex(Tok);
3897 Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {
3898 Token FirstTok = Tok;
3900 PP.Lex(Tok);
3901 IdentifierInfo *Info = Tok.getIdentifierInfo();
3914 PP.Lex(Tok);
3915 if (!Tok.is(tok::eod))
3950 Token Tok;
3951 PP.Lex(Tok);
3956 if (Tok.is(tok::identifier)) {
3957 IdentifierInfo *II = Tok.getIdentifierInfo();
3960 PP.Lex(Tok);
3962 if (!Tok.is(tok::period)) {
3963 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_period)
3967 PP.Lex(Tok);
3971 if (!Tok.isOneOf(tok::identifier, tok::l_paren)) {
3972 PP.Diag(Tok.getLocation(),
3978 if (Tok.is(tok::l_paren)) {
3980 PP.Diag(Tok.getLocation(),
3982 PP.Diag(Tok.getLocation(),
3988 const IdentifierInfo *II = Tok.getIdentifierInfo();
3994 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_invalid_argument)
3995 << PP.getSpelling(Tok);
3999 PP.Lex(Tok);
4003 if ((Info->Action == PragmaAttributeInfo::Push && Tok.isNot(tok::eod)) ||
4005 if (Tok.isNot(tok::l_paren)) {
4006 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
4009 PP.Lex(Tok);
4014 while (Tok.isNot(tok::eod)) {
4015 if (Tok.is(tok::l_paren))
4017 else if (Tok.is(tok::r_paren)) {
4023 AttributeTokens.push_back(Tok);
4024 PP.Lex(Tok);
4028 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_attribute);
4031 if (Tok.isNot(tok::r_paren)) {
4032 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
4035 SourceLocation EndLoc = Tok.getLocation();
4036 PP.Lex(Tok);
4050 if (Tok.isNot(tok::eod))
4051 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4068 Token &Tok) {
4069 PP.Lex(Tok);
4070 if (Tok.is(tok::eod)) {
4071 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
4076 SourceLocation Loc = Tok.getLocation();
4078 if (Tok.isNot(tok::numeric_constant) ||
4079 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
4080 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
4085 if (Tok.isNot(tok::eod)) {
4086 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4100 Token &Tok) {
4101 PP.Lex(Tok);
4102 if (Tok.is(tok::eod)) {
4103 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
4108 SourceLocation Loc = Tok.getLocation();
4110 if (Tok.isNot(tok::numeric_constant) ||
4111 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
4112 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
4117 if (Tok.isNot(tok::eod)) {
4118 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4131 Token Tok;
4132 PP.Lex(Tok);
4133 IdentifierInfo *II = Tok.getIdentifierInfo();
4136 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
4137 << PP.getSpelling(Tok) << "riscv" << /*Expected=*/true << "'intrinsic'";
4141 PP.Lex(Tok);
4142 II = Tok.getIdentifierInfo();
4144 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
4145 << PP.getSpelling(Tok) << "riscv" << /*Expected=*/true
4150 PP.Lex(Tok);
4151 if (Tok.isNot(tok::eod)) {
4152 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)