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)
2135 Token Tok;
2136 PP.Lex(Tok);
2137 if (Tok.isNot(tok::l_paren)) {
2138 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "pack";
2146 PP.Lex(Tok);
2147 if (Tok.is(tok::numeric_constant)) {
2148 Alignment = Tok;
2150 PP.Lex(Tok);
2158 } else if (Tok.is(tok::identifier)) {
2162 Alignment = Tok;
2168 const IdentifierInfo *II = Tok.getIdentifierInfo();
2171 PP.Lex(Tok);
2175 PP.Lex(Tok);
2179 PP.Lex(Tok);
2183 PP.Lex(Tok);
2187 PP.Lex(Tok);
2194 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << "pack";
2197 PP.Lex(Tok);
2199 if (Tok.is(tok::comma)) {
2200 PP.Lex(Tok);
2202 if (Tok.is(tok::numeric_constant)) {
2204 Alignment = Tok;
2206 PP.Lex(Tok);
2207 } else if (Tok.is(tok::identifier)) {
2208 SlotLabel = Tok.getIdentifierInfo()->getName();
2209 PP.Lex(Tok);
2211 if (Tok.is(tok::comma)) {
2212 PP.Lex(Tok);
2214 if (Tok.isNot(tok::numeric_constant)) {
2215 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
2220 Alignment = Tok;
2222 PP.Lex(Tok);
2225 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
2239 if (Tok.isNot(tok::r_paren)) {
2240 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "pack";
2244 SourceLocation RParenLoc = Tok.getLocation();
2245 PP.Lex(Tok);
2246 if (Tok.isNot(tok::eod)) {
2247 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "pack";
2275 Token Tok;
2276 PP.Lex(Tok);
2277 if (Tok.isNot(tok::identifier)) {
2278 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
2281 SourceLocation EndLoc = Tok.getLocation();
2282 const IdentifierInfo *II = Tok.getIdentifierInfo();
2285 PP.Lex(Tok);
2288 PP.Lex(Tok);
2290 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
2294 if (Tok.isNot(tok::eod)) {
2295 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2317 Token Tok;
2320 PP.Lex(Tok); // eat 'section'
2321 while (Tok.isNot(tok::eod)) {
2322 if (Tok.isNot(tok::identifier)) {
2323 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
2327 const IdentifierInfo *SecType = Tok.getIdentifierInfo();
2339 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
2343 SourceLocation PragmaLocation = Tok.getLocation();
2344 PP.Lex(Tok); // eat ['bss'|'data'|'rodata'|'text']
2345 if (Tok.isNot(tok::equal)) {
2346 PP.Diag(Tok.getLocation(), diag::err_pragma_clang_section_expected_equal) << SecKind;
2351 if (!PP.LexStringLiteral(Tok, SecName, "pragma clang section", false))
2367 Token Tok;
2370 PP.Lex(Tok);
2371 if (Tok.isNot(tok::identifier) ||
2372 !Tok.getIdentifierInfo()->isStr("align")) {
2373 PP.Diag(Tok.getLocation(), diag::warn_pragma_options_expected_align);
2378 PP.Lex(Tok);
2380 if (Tok.isNot(tok::l_paren)) {
2381 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "align";
2384 } else if (Tok.isNot(tok::equal)) {
2385 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_expected_equal)
2390 PP.Lex(Tok);
2391 if (Tok.isNot(tok::identifier)) {
2392 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2398 const IdentifierInfo *II = Tok.getIdentifierInfo();
2412 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_invalid_option)
2418 PP.Lex(Tok);
2419 if (Tok.isNot(tok::r_paren)) {
2420 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "align";
2425 SourceLocation EndLoc = Tok.getLocation();
2426 PP.Lex(Tok);
2427 if (Tok.isNot(tok::eod)) {
2428 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2465 Token Tok;
2466 PP.Lex(Tok);
2467 if (Tok.isNot(tok::l_paren)) {
2468 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "unused";
2478 PP.Lex(Tok);
2481 if (Tok.is(tok::identifier)) {
2482 Identifiers.push_back(Tok);
2488 PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var);
2493 if (Tok.is(tok::comma)) {
2498 if (Tok.is(tok::r_paren)) {
2499 RParenLoc = Tok.getLocation();
2504 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_punc) << "unused";
2508 PP.Lex(Tok);
2509 if (Tok.isNot(tok::eod)) {
2510 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2545 Token Tok;
2546 PP.Lex(Tok);
2547 if (Tok.isNot(tok::identifier)) {
2548 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << "weak";
2552 Token WeakName = Tok;
2556 PP.Lex(Tok);
2557 if (Tok.is(tok::equal)) {
2559 PP.Lex(Tok);
2560 if (Tok.isNot(tok::identifier)) {
2561 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2565 AliasName = Tok;
2566 PP.Lex(Tok);
2569 if (Tok.isNot(tok::eod)) {
2570 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "weak";
2606 Token Tok;
2607 PP.Lex(Tok);
2608 if (Tok.isNot(tok::identifier)) {
2609 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2614 Token RedefName = Tok;
2615 PP.Lex(Tok);
2617 if (Tok.isNot(tok::identifier)) {
2618 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2623 Token AliasName = Tok;
2624 PP.Lex(Tok);
2626 if (Tok.isNot(tok::eod)) {
2627 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2647 Token &Tok) {
2656 Toks[0].setLocation(Tok.getLocation());
2657 Toks[0].setAnnotationEndLoc(Tok.getLocation());
2666 Token &Tok) {
2667 PP.LexUnexpandedToken(Tok);
2668 if (Tok.isNot(tok::identifier)) {
2669 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2673 IdentifierInfo *Ext = Tok.getIdentifierInfo();
2674 SourceLocation NameLoc = Tok.getLocation();
2676 PP.Lex(Tok);
2677 if (Tok.isNot(tok::colon)) {
2678 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_colon) << Ext;
2682 PP.Lex(Tok);
2683 if (Tok.isNot(tok::identifier)) {
2684 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << 0;
2687 IdentifierInfo *Pred = Tok.getIdentifierInfo();
2699 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate)
2703 SourceLocation StateLoc = Tok.getLocation();
2705 PP.Lex(Tok);
2706 if (Tok.isNot(tok::eod)) {
2707 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2750 Token Tok;
2751 Tok.startToken();
2752 Tok.setKind(StartTok);
2753 Tok.setLocation(Introducer.Loc);
2755 while (Tok.isNot(tok::eod) && Tok.isNot(tok::eof)) {
2756 Pragma.push_back(Tok);
2757 PP.Lex(Tok);
2758 if (Tok.is(StartTok)) {
2759 PP.Diag(Tok, UnexpectedDiag) << 0;
2762 PP.Lex(Tok);
2763 if (Tok.is(StartTok))
2765 else if (Tok.is(EndTok))
2768 PP.Lex(Tok);
2771 SourceLocation EodLoc = Tok.getLocation();
2772 Tok.startToken();
2773 Tok.setKind(EndTok);
2774 Tok.setLocation(EodLoc);
2775 Pragma.push_back(Tok);
2793 Token &Tok) {
2794 SourceLocation PointersToMembersLoc = Tok.getLocation();
2795 PP.Lex(Tok);
2796 if (Tok.isNot(tok::l_paren)) {
2801 PP.Lex(Tok);
2802 const IdentifierInfo *Arg = Tok.getIdentifierInfo();
2804 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2808 PP.Lex(Tok);
2815 if (Tok.is(tok::comma)) {
2816 PP.Lex(Tok);
2818 Arg = Tok.getIdentifierInfo();
2820 PP.Diag(Tok.getLocation(),
2822 << Tok.getKind() << /*OnlyInheritanceModels*/ 0;
2825 PP.Lex(Tok);
2826 } else if (Tok.is(tok::r_paren)) {
2832 PP.Diag(Tok.getLocation(), diag::err_expected_punc)
2849 PP.Diag(Tok.getLocation(),
2857 if (Tok.isNot(tok::r_paren)) {
2858 PP.Diag(Tok.getLocation(), diag::err_expected_rparen_after)
2863 SourceLocation EndLoc = Tok.getLocation();
2864 PP.Lex(Tok);
2865 if (Tok.isNot(tok::eod)) {
2866 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2890 PragmaIntroducer Introducer, Token &Tok) {
2891 SourceLocation VtorDispLoc = Tok.getLocation();
2892 PP.Lex(Tok);
2893 if (Tok.isNot(tok::l_paren)) {
2897 PP.Lex(Tok);
2900 const IdentifierInfo *II = Tok.getIdentifierInfo();
2904 PP.Lex(Tok);
2905 if (Tok.isNot(tok::comma)) {
2909 PP.Lex(Tok);
2914 PP.Lex(Tok);
2919 if (Tok.is(tok::r_paren)) {
2928 const IdentifierInfo *II = Tok.getIdentifierInfo();
2930 PP.Lex(Tok);
2933 PP.Lex(Tok);
2935 } else if (Tok.is(tok::numeric_constant) &&
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)
2950 if (Tok.isNot(tok::r_paren)) {
2954 SourceLocation EndLoc = Tok.getLocation();
2955 PP.Lex(Tok);
2956 if (Tok.isNot(tok::eod)) {
2957 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2976 PragmaIntroducer Introducer, Token &Tok) {
2982 AnnotTok.setLocation(Tok.getLocation());
2983 AnnotTok.setAnnotationEndLoc(Tok.getLocation());
2986 for (; Tok.isNot(tok::eod); PP.Lex(Tok)) {
2987 TokenVector.push_back(Tok);
2988 AnnotTok.setAnnotationEndLoc(Tok.getLocation());
3017 Token &Tok) {
3019 SourceLocation FloatControlLoc = Tok.getLocation();
3020 Token PragmaName = Tok;
3022 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
3026 PP.Lex(Tok);
3027 if (Tok.isNot(tok::l_paren)) {
3033 PP.Lex(Tok);
3034 if (Tok.isNot(tok::identifier)) {
3035 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3040 IdentifierInfo *II = Tok.getIdentifierInfo();
3048 PP.Lex(Tok); // the identifier
3050 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3053 if (Tok.isNot(tok::r_paren)) {
3054 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3057 PP.Lex(Tok); // Eat the r_paren
3060 if (Tok.is(tok::r_paren))
3062 PP.Lex(Tok); // the r_paren
3063 else if (Tok.isNot(tok::comma)) {
3064 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3067 PP.Lex(Tok); // ,
3068 if (!Tok.isAnyIdentifier()) {
3069 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3072 StringRef PushOnOff = Tok.getIdentifierInfo()->getName();
3084 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3087 PP.Lex(Tok); // the identifier
3088 if (Tok.is(tok::comma)) {
3089 PP.Lex(Tok); // ,
3090 if (!Tok.isAnyIdentifier()) {
3091 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3094 StringRef ExpectedPush = Tok.getIdentifierInfo()->getName();
3098 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3101 PP.Lex(Tok); // the push identifier
3103 if (Tok.isNot(tok::r_paren)) {
3104 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
3107 PP.Lex(Tok); // the r_paren
3110 SourceLocation EndLoc = Tok.getLocation();
3111 if (Tok.isNot(tok::eod)) {
3112 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3145 Token &Tok) {
3146 SourceLocation DetectMismatchLoc = Tok.getLocation();
3147 PP.Lex(Tok);
3148 if (Tok.isNot(tok::l_paren)) {
3155 if (!PP.LexStringLiteral(Tok, NameString,
3162 if (Tok.isNot(tok::comma)) {
3163 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
3167 if (!PP.LexStringLiteral(Tok, ValueString, "pragma detect_mismatch",
3171 if (Tok.isNot(tok::r_paren)) {
3172 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3175 PP.Lex(Tok); // Eat the r_paren.
3177 if (Tok.isNot(tok::eod)) {
3178 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
3201 Token &Tok) {
3202 SourceLocation CommentLoc = Tok.getLocation();
3203 PP.Lex(Tok);
3204 if (Tok.isNot(tok::l_paren)) {
3210 PP.Lex(Tok);
3211 if (Tok.isNot(tok::identifier)) {
3217 IdentifierInfo *II = Tok.getIdentifierInfo();
3227 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_unknown_kind);
3232 PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored)
3238 PP.Lex(Tok);
3240 if (Tok.is(tok::comma) && !PP.LexStringLiteral(Tok, ArgumentString,
3252 if (Tok.isNot(tok::r_paren)) {
3253 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
3256 PP.Lex(Tok); // eat the r_paren.
3258 if (Tok.isNot(tok::eod)) {
3259 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
3275 Token Tok;
3276 PP.Lex(Tok);
3277 if (Tok.is(tok::eod)) {
3278 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
3282 if (Tok.isNot(tok::identifier)) {
3283 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
3284 << PP.getSpelling(Tok);
3287 const IdentifierInfo *II = Tok.getIdentifierInfo();
3293 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
3294 << PP.getSpelling(Tok);
3297 PP.Lex(Tok);
3299 if (Tok.isNot(tok::eod)) {
3300 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_extra_argument)
3301 << PP.getSpelling(Tok);
3322 PragmaIntroducer Introducer, Token &Tok) {
3324 Token PragmaName = Tok;
3327 PP.Lex(Tok);
3328 if (Tok.isNot(tok::identifier)) {
3329 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
3335 while (Tok.is(tok::identifier)) {
3336 IdentifierInfo *OptionInfo = Tok.getIdentifierInfo();
3347 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
3351 PP.Lex(Tok);
3354 if (Tok.isNot(tok::l_paren)) {
3355 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3358 PP.Lex(Tok);
3360 Tok.is(tok::kw_double) && FlagKind == PFK_EvalMethod;
3363 if (Tok.isNot(tok::identifier) && !isEvalMethodDouble) {
3364 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
3365 << PP.getSpelling(Tok) << OptionInfo->getName()
3369 const IdentifierInfo *II = Tok.getIdentifierInfo();
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);
3427 if (Tok.isNot(tok::r_paren)) {
3428 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3431 PP.Lex(Tok);
3434 if (Tok.isNot(tok::eod)) {
3435 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3457 Token &Tok) {
3458 Token PragmaName = Tok;
3461 PP.Diag(Tok.getLocation(), diag::warn_pragma_fp_ignored)
3466 PP.Lex(Tok);
3467 if (Tok.isNot(tok::identifier)) {
3468 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
3472 IdentifierInfo *II = Tok.getIdentifierInfo();
3484 PP.Diag(Tok.getLocation(), diag::warn_stdc_unknown_rounding_mode);
3487 PP.Lex(Tok);
3489 if (Tok.isNot(tok::eod)) {
3490 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3496 PP.Diag(Tok.getLocation(), diag::warn_stdc_fenv_round_not_supported);
3502 Toks[0].setLocation(Tok.getLocation());
3503 Toks[0].setAnnotationEndLoc(Tok.getLocation());
3511 assert(Tok.is(tok::annot_pragma_fp));
3513 reinterpret_cast<TokFPAnnotValue *>(Tok.getAnnotationValue());
3517 Tok.getLocation(), PFK_Reassociate,
3522 Tok.getLocation(), PFK_Reciprocal,
3526 Actions.ActOnPragmaFPContract(Tok.getLocation(),
3529 Actions.ActOnPragmaFPExceptions(Tok.getLocation(),
3532 Actions.ActOnPragmaFPEvalMethod(Tok.getLocation(),
3538 static bool ParseLoopHintValue(Preprocessor &PP, Token &Tok, Token PragmaName,
3544 while (Tok.isNot(tok::eod)) {
3545 if (Tok.is(tok::l_paren))
3547 else if (Tok.is(tok::r_paren)) {
3553 ValueList.push_back(Tok);
3554 PP.Lex(Tok);
3559 if (Tok.isNot(tok::r_paren)) {
3560 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3563 PP.Lex(Tok);
3569 EOFTok.setLocation(Tok.getLocation());
3630 Token &Tok) {
3632 Token PragmaName = Tok;
3636 PP.Lex(Tok);
3637 if (Tok.isNot(tok::identifier)) {
3638 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3643 while (Tok.is(tok::identifier)) {
3644 Token Option = Tok;
3645 IdentifierInfo *OptionInfo = Tok.getIdentifierInfo();
3660 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3664 PP.Lex(Tok);
3667 if (Tok.isNot(tok::l_paren)) {
3668 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3671 PP.Lex(Tok);
3674 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, /*ValueInParens=*/true,
3688 if (Tok.isNot(tok::eod)) {
3689 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3724 Token &Tok) {
3727 Token PragmaName = Tok;
3728 PP.Lex(Tok);
3730 if (Tok.is(tok::eod)) {
3736 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3743 bool ValueInParens = Tok.is(tok::l_paren);
3745 PP.Lex(Tok);
3749 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, ValueInParens, *Info))
3758 if (Tok.isNot(tok::eod)) {
3759 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3790 Token &Tok) {
3791 PP.Lex(Tok);
3793 if (Tok.isNot(tok::l_paren)) {
3794 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
3798 PP.Lex(Tok);
3802 while (Tok.is(tok::identifier)) {
3803 IdentifierInfo *II = Tok.getIdentifierInfo();
3805 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3808 PP.Lex(Tok);
3809 if (Tok.isNot(tok::comma))
3811 PP.Lex(Tok);
3814 if (Tok.isNot(tok::r_paren)) {
3815 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
3819 PP.Lex(Tok);
3821 if (Tok.isNot(tok::eod))
3822 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3828 Token FirstTok = Tok;
3837 while (Tok.is(tok::identifier)) {
3838 IdentifierInfo *II = Tok.getIdentifierInfo();
3840 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3845 PP.Lex(Tok);
3846 if (Tok.isNot(tok::comma))
3848 PP.Lex(Tok); // ,
3864 Token FirstTok = Tok;
3869 if (Tok.isNot(tok::string_literal)) {
3887 if (Tok.is(tok::eof) || Tok.is(tok::r_paren)) {
3892 IdentifierInfo *II = Tok.getIdentifierInfo();
3895 << PP.getSpelling(Tok) << PragmaName << /*Expected=*/true
3900 PP.Lex(Tok);
3923 Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {
3924 Token FirstTok = Tok;
3926 PP.Lex(Tok);
3927 IdentifierInfo *Info = Tok.getIdentifierInfo();
3940 PP.Lex(Tok);
3941 if (!Tok.is(tok::eod))
3976 Token Tok;
3977 PP.Lex(Tok);
3982 if (Tok.is(tok::identifier)) {
3983 IdentifierInfo *II = Tok.getIdentifierInfo();
3986 PP.Lex(Tok);
3988 if (!Tok.is(tok::period)) {
3989 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_period)
3993 PP.Lex(Tok);
3997 if (!Tok.isOneOf(tok::identifier, tok::l_paren)) {
3998 PP.Diag(Tok.getLocation(),
4004 if (Tok.is(tok::l_paren)) {
4006 PP.Diag(Tok.getLocation(),
4008 PP.Diag(Tok.getLocation(),
4014 const IdentifierInfo *II = Tok.getIdentifierInfo();
4020 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_invalid_argument)
4021 << PP.getSpelling(Tok);
4025 PP.Lex(Tok);
4029 if ((Info->Action == PragmaAttributeInfo::Push && Tok.isNot(tok::eod)) ||
4031 if (Tok.isNot(tok::l_paren)) {
4032 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
4035 PP.Lex(Tok);
4040 while (Tok.isNot(tok::eod)) {
4041 if (Tok.is(tok::l_paren))
4043 else if (Tok.is(tok::r_paren)) {
4049 AttributeTokens.push_back(Tok);
4050 PP.Lex(Tok);
4054 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_attribute);
4057 if (Tok.isNot(tok::r_paren)) {
4058 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
4061 SourceLocation EndLoc = Tok.getLocation();
4062 PP.Lex(Tok);
4076 if (Tok.isNot(tok::eod))
4077 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4094 Token &Tok) {
4095 PP.Lex(Tok);
4096 if (Tok.is(tok::eod)) {
4097 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
4102 SourceLocation Loc = Tok.getLocation();
4104 if (Tok.isNot(tok::numeric_constant) ||
4105 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
4106 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
4111 if (Tok.isNot(tok::eod)) {
4112 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4126 Token &Tok) {
4127 PP.Lex(Tok);
4128 if (Tok.is(tok::eod)) {
4129 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
4134 SourceLocation Loc = Tok.getLocation();
4136 if (Tok.isNot(tok::numeric_constant) ||
4137 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
4138 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
4143 if (Tok.isNot(tok::eod)) {
4144 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
4157 Token Tok;
4158 PP.Lex(Tok);
4159 IdentifierInfo *II = Tok.getIdentifierInfo();
4162 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
4163 << PP.getSpelling(Tok) << "riscv" << /*Expected=*/true << "'intrinsic'";
4167 PP.Lex(Tok);
4168 II = Tok.getIdentifierInfo();
4170 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
4171 << PP.getSpelling(Tok) << "riscv" << /*Expected=*/true
4176 PP.Lex(Tok);
4177 if (Tok.isNot(tok::eod)) {
4178 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)