• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/clang/lib/Parse/

Lines Matching defs:Tok

105                     Token &Tok) override {
110 PP.Diag(Tok, diag::warn_stdc_fenv_access_not_supported);
118 Toks[0].setLocation(Tok.getLocation());
119 Toks[0].setAnnotationEndLoc(Tok.getLocation());
132 Token &Tok) override {
534 assert(Tok.is(tok::annot_pragma_unused));
536 Actions.ActOnPragmaUnused(Tok, getCurScope(), UnusedLoc);
541 assert(Tok.is(tok::annot_pragma_vis));
543 static_cast<IdentifierInfo *>(Tok.getAnnotationValue());
557 assert(Tok.is(tok::annot_pragma_pack));
559 static_cast<PragmaPackInfo *>(Tok.getAnnotationValue());
560 SourceLocation PragmaLoc = Tok.getLocation();
577 assert(Tok.is(tok::annot_pragma_msstruct));
579 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
585 assert(Tok.is(tok::annot_pragma_align));
588 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
589 Actions.ActOnPragmaOptionsAlign(Kind, Tok.getLocation());
596 assert(Tok.is(tok::annot_pragma_dump));
598 reinterpret_cast<IdentifierInfo *>(Tok.getAnnotationValue());
599 Actions.ActOnPragmaDump(getCurScope(), Tok.getLocation(), II);
604 assert(Tok.is(tok::annot_pragma_weak));
606 Actions.ActOnPragmaWeakID(Tok.getIdentifierInfo(), PragmaLoc,
607 Tok.getLocation());
612 assert(Tok.is(tok::annot_pragma_weakalias));
614 IdentifierInfo *WeakName = Tok.getIdentifierInfo();
615 SourceLocation WeakNameLoc = Tok.getLocation();
617 IdentifierInfo *AliasName = Tok.getIdentifierInfo();
618 SourceLocation AliasNameLoc = Tok.getLocation();
626 assert(Tok.is(tok::annot_pragma_redefine_extname));
628 IdentifierInfo *RedefName = Tok.getIdentifierInfo();
629 SourceLocation RedefNameLoc = Tok.getLocation();
631 IdentifierInfo *AliasName = Tok.getIdentifierInfo();
632 SourceLocation AliasNameLoc = Tok.getLocation();
639 assert(Tok.is(tok::annot_pragma_fp_contract));
642 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
662 assert(Tok.is(tok::annot_pragma_float_control));
669 uintptr_t Value = reinterpret_cast<uintptr_t>(Tok.getAnnotationValue());
678 assert(Tok.is(tok::annot_pragma_fenv_access));
681 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
703 assert(Tok.is(tok::annot_pragma_captured));
706 if (Tok.isNot(tok::l_brace)) {
707 PP.Diag(Tok, diag::err_expected) << tok::l_brace;
711 SourceLocation Loc = Tok.getLocation();
737 assert(Tok.is(tok::annot_pragma_opencl_extension));
738 OpenCLExtData *Data = static_cast<OpenCLExtData*>(Tok.getAnnotationValue());
741 SourceLocation NameLoc = Tok.getLocation();
776 assert(Tok.is(tok::annot_pragma_ms_pointers_to_members));
779 reinterpret_cast<uintptr_t>(Tok.getAnnotationValue()));
785 assert(Tok.is(tok::annot_pragma_ms_vtordisp));
786 uintptr_t Value = reinterpret_cast<uintptr_t>(Tok.getAnnotationValue());
795 assert(Tok.is(tok::annot_pragma_ms_pragma));
798 (std::pair<std::unique_ptr<Token[]>, size_t> *)Tok.getAnnotationValue();
802 assert(Tok.isAnyIdentifier());
803 StringRef PragmaName = Tok.getIdentifierInfo()->getName();
804 PP.Lex(Tok); // pragma kind
820 while (Tok.isNot(tok::eof))
821 PP.Lex(Tok);
822 PP.Lex(Tok);
828 if (Tok.isNot(tok::l_paren)) {
832 PP.Lex(Tok); // (
834 if (Tok.isNot(tok::string_literal)) {
850 while (Tok.is(tok::comma)) {
851 PP.Lex(Tok); // ,
855 if (Tok.is(tok::kw_long) || Tok.is(tok::kw_short)) {
856 PP.Lex(Tok); // long/short
860 if (!Tok.isAnyIdentifier()) {
867 Tok.getIdentifierInfo()->getName())
881 << PragmaName << Tok.getIdentifierInfo()->getName();
886 PP.Lex(Tok); // Identifier
892 if (Tok.isNot(tok::r_paren)) {
896 PP.Lex(Tok); // )
897 if (Tok.isNot(tok::eof)) {
902 PP.Lex(Tok); // eof
909 if (Tok.isNot(tok::l_paren)) {
913 PP.Lex(Tok); // (
916 if (Tok.isAnyIdentifier()) {
917 StringRef PushPop = Tok.getIdentifierInfo()->getName();
929 PP.Lex(Tok); // push | pop
930 if (Tok.is(tok::comma)) {
931 PP.Lex(Tok); // ,
933 if (Tok.isAnyIdentifier()) {
934 SlotLabel = Tok.getIdentifierInfo()->getName();
935 PP.Lex(Tok); // identifier
936 if (Tok.is(tok::comma))
937 PP.Lex(Tok);
938 else if (Tok.isNot(tok::r_paren)) {
944 } else if (Tok.isNot(tok::r_paren)) {
952 if (Tok.isNot(tok::r_paren)) {
953 if (Tok.isNot(tok::string_literal)) {
974 if (Tok.isNot(tok::r_paren)) {
978 PP.Lex(Tok); // )
979 if (Tok.isNot(tok::eof)) {
984 PP.Lex(Tok); // eof
1004 if (Tok.isAnyIdentifier()) {
1005 auto *II = Tok.getIdentifierInfo();
1017 Toks[0].setLocation(Tok.getLocation());
1022 PP.Lex(Tok);
1024 } else if (Tok.is(tok::string_literal)) {
1071 assert(Tok.is(tok::annot_pragma_loop_hint));
1073 static_cast<PragmaLoopHintInfo *>(Tok.getAnnotationValue());
1163 Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1176 if (Tok.isNot(tok::eof)) {
1177 Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1179 while (Tok.isNot(tok::eof))
1213 static StringRef getIdentifier(const Token &Tok) {
1214 if (Tok.is(tok::identifier))
1215 return Tok.getIdentifierInfo()->getName();
1216 const char *S = tok::getKeywordSpelling(Tok.getKind());
1265 if (getIdentifier(Tok) == "any") {
1274 StringRef Name = getIdentifier(Tok);
1276 Diag(Tok, diag::err_pragma_attribute_expected_subject_identifier);
1283 Diag(Tok, diag::err_pragma_attribute_unknown_subject_rule) << Name;
1301 RuleLoc, Tok.is(tok::comma) ? Tok.getLocation() : RuleLoc));
1307 StringRef SubRuleName = getIdentifier(Tok);
1310 Tok.getLocation());
1319 SubRuleName = getIdentifier(Tok);
1340 SubRuleName, Tok.getLocation());
1346 SourceLocation RuleEndLoc = Tok.getLocation();
1356 RuleLoc, Tok.is(tok::comma) ? Tok.getLocation() : RuleEndLoc));
1380 getAttributeSubjectRulesRecoveryPointForToken(const Token &Tok) {
1381 if (const auto *II = Tok.getIdentifierInfo()) {
1387 if (Tok.is(tok::equal))
1452 assert(Tok.is(tok::annot_pragma_attribute) &&
1454 SourceLocation PragmaLoc = Tok.getLocation();
1455 auto *Info = static_cast<PragmaAttributeInfo *>(Tok.getAnnotationValue());
1484 if (Tok.is(tok::l_square) && NextToken().is(tok::l_square)) {
1487 } else if (Tok.is(tok::kw___attribute)) {
1495 if (Tok.isNot(tok::identifier)) {
1496 Diag(Tok, diag::err_pragma_attribute_expected_attribute_name);
1500 IdentifierInfo *AttrName = Tok.getIdentifierInfo();
1503 if (Tok.isNot(tok::l_paren))
1516 } else if (Tok.is(tok::kw___declspec)) {
1519 Diag(Tok, diag::err_pragma_attribute_expected_attribute_syntax);
1520 if (Tok.getIdentifierInfo()) {
1524 Tok.getIdentifierInfo(), /*ScopeName=*/nullptr,
1526 SourceLocation InsertStartLoc = Tok.getLocation();
1528 if (Tok.is(tok::l_paren)) {
1531 if (Tok.isNot(tok::r_paren))
1534 Diag(Tok, diag::note_pragma_attribute_use_attribute_kw)
1536 << FixItHint::CreateInsertion(Tok.getEndLoc(), "))");
1574 if (Tok.isNot(tok::identifier)) {
1581 const IdentifierInfo *II = Tok.getIdentifierInfo();
1610 if (Tok.isNot(tok::eof)) {
1611 Diag(Tok, diag::err_pragma_attribute_extra_tokens_after_attribute);
1635 Token Tok;
1636 PP.LexUnexpandedToken(Tok);
1638 const IdentifierInfo *PushPop = Tok.getIdentifierInfo();
1644 PP.LexUnexpandedToken(Tok);
1645 if (Tok.isNot(tok::l_paren)) {
1646 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
1650 PP.LexUnexpandedToken(Tok);
1651 VisType = Tok.getIdentifierInfo();
1653 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
1657 PP.LexUnexpandedToken(Tok);
1658 if (Tok.isNot(tok::r_paren)) {
1659 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
1664 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
1668 SourceLocation EndLoc = Tok.getLocation();
1669 PP.LexUnexpandedToken(Tok);
1670 if (Tok.isNot(tok::eod)) {
1671 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1696 Token Tok;
1697 PP.Lex(Tok);
1698 if (Tok.isNot(tok::l_paren)) {
1699 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "pack";
1707 PP.Lex(Tok);
1708 if (Tok.is(tok::numeric_constant)) {
1709 Alignment = Tok;
1711 PP.Lex(Tok);
1718 } else if (Tok.is(tok::identifier)) {
1719 const IdentifierInfo *II = Tok.getIdentifierInfo();
1722 PP.Lex(Tok);
1729 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action) << "pack";
1732 PP.Lex(Tok);
1734 if (Tok.is(tok::comma)) {
1735 PP.Lex(Tok);
1737 if (Tok.is(tok::numeric_constant)) {
1739 Alignment = Tok;
1741 PP.Lex(Tok);
1742 } else if (Tok.is(tok::identifier)) {
1743 SlotLabel = Tok.getIdentifierInfo()->getName();
1744 PP.Lex(Tok);
1746 if (Tok.is(tok::comma)) {
1747 PP.Lex(Tok);
1749 if (Tok.isNot(tok::numeric_constant)) {
1750 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
1755 Alignment = Tok;
1757 PP.Lex(Tok);
1760 PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_malformed);
1772 if (Tok.isNot(tok::r_paren)) {
1773 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "pack";
1777 SourceLocation RParenLoc = Tok.getLocation();
1778 PP.Lex(Tok);
1779 if (Tok.isNot(tok::eod)) {
1780 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "pack";
1808 Token Tok;
1809 PP.Lex(Tok);
1810 if (Tok.isNot(tok::identifier)) {
1811 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
1814 SourceLocation EndLoc = Tok.getLocation();
1815 const IdentifierInfo *II = Tok.getIdentifierInfo();
1818 PP.Lex(Tok);
1821 PP.Lex(Tok);
1823 PP.Diag(Tok.getLocation(), diag::warn_pragma_ms_struct);
1827 if (Tok.isNot(tok::eod)) {
1828 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1850 Token Tok;
1853 PP.Lex(Tok); // eat 'section'
1854 while (Tok.isNot(tok::eod)) {
1855 if (Tok.isNot(tok::identifier)) {
1856 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
1860 const IdentifierInfo *SecType = Tok.getIdentifierInfo();
1872 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_clang_section_name) << "clang section";
1876 SourceLocation PragmaLocation = Tok.getLocation();
1877 PP.Lex(Tok); // eat ['bss'|'data'|'rodata'|'text']
1878 if (Tok.isNot(tok::equal)) {
1879 PP.Diag(Tok.getLocation(), diag::err_pragma_clang_section_expected_equal) << SecKind;
1884 if (!PP.LexStringLiteral(Tok, SecName, "pragma clang section", false))
1899 Token Tok;
1902 PP.Lex(Tok);
1903 if (Tok.isNot(tok::identifier) ||
1904 !Tok.getIdentifierInfo()->isStr("align")) {
1905 PP.Diag(Tok.getLocation(), diag::warn_pragma_options_expected_align);
1910 PP.Lex(Tok);
1911 if (Tok.isNot(tok::equal)) {
1912 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_expected_equal)
1917 PP.Lex(Tok);
1918 if (Tok.isNot(tok::identifier)) {
1919 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
1925 const IdentifierInfo *II = Tok.getIdentifierInfo();
1939 PP.Diag(Tok.getLocation(), diag::warn_pragma_align_invalid_option)
1944 SourceLocation EndLoc = Tok.getLocation();
1945 PP.Lex(Tok);
1946 if (Tok.isNot(tok::eod)) {
1947 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
1984 Token Tok;
1985 PP.Lex(Tok);
1986 if (Tok.isNot(tok::l_paren)) {
1987 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "unused";
1997 PP.Lex(Tok);
2000 if (Tok.is(tok::identifier)) {
2001 Identifiers.push_back(Tok);
2007 PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var);
2012 if (Tok.is(tok::comma)) {
2017 if (Tok.is(tok::r_paren)) {
2018 RParenLoc = Tok.getLocation();
2023 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_punc) << "unused";
2027 PP.Lex(Tok);
2028 if (Tok.isNot(tok::eod)) {
2029 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2064 Token Tok;
2065 PP.Lex(Tok);
2066 if (Tok.isNot(tok::identifier)) {
2067 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) << "weak";
2071 Token WeakName = Tok;
2075 PP.Lex(Tok);
2076 if (Tok.is(tok::equal)) {
2078 PP.Lex(Tok);
2079 if (Tok.isNot(tok::identifier)) {
2080 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2084 AliasName = Tok;
2085 PP.Lex(Tok);
2088 if (Tok.isNot(tok::eod)) {
2089 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) << "weak";
2125 Token Tok;
2126 PP.Lex(Tok);
2127 if (Tok.isNot(tok::identifier)) {
2128 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2133 Token RedefName = Tok;
2134 PP.Lex(Tok);
2136 if (Tok.isNot(tok::identifier)) {
2137 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2142 Token AliasName = Tok;
2143 PP.Lex(Tok);
2145 if (Tok.isNot(tok::eod)) {
2146 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2166 Token &Tok) {
2175 Toks[0].setLocation(Tok.getLocation());
2176 Toks[0].setAnnotationEndLoc(Tok.getLocation());
2185 Token &Tok) {
2186 PP.LexUnexpandedToken(Tok);
2187 if (Tok.isNot(tok::identifier)) {
2188 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier) <<
2192 IdentifierInfo *Ext = Tok.getIdentifierInfo();
2193 SourceLocation NameLoc = Tok.getLocation();
2195 PP.Lex(Tok);
2196 if (Tok.isNot(tok::colon)) {
2197 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_colon) << Ext;
2201 PP.Lex(Tok);
2202 if (Tok.isNot(tok::identifier)) {
2203 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate) << 0;
2206 IdentifierInfo *Pred = Tok.getIdentifierInfo();
2218 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_predicate)
2222 SourceLocation StateLoc = Tok.getLocation();
2224 PP.Lex(Tok);
2225 if (Tok.isNot(tok::eod)) {
2226 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol) <<
2269 Token Tok;
2270 Tok.startToken();
2271 Tok.setKind(tok::annot_pragma_openmp);
2272 Tok.setLocation(Introducer.Loc);
2274 while (Tok.isNot(tok::eod) && Tok.isNot(tok::eof)) {
2275 Pragma.push_back(Tok);
2276 PP.Lex(Tok);
2277 if (Tok.is(tok::annot_pragma_openmp)) {
2278 PP.Diag(Tok, diag::err_omp_unexpected_directive) << 0;
2281 PP.Lex(Tok);
2282 if (Tok.is(tok::annot_pragma_openmp))
2284 else if (Tok.is(tok::annot_pragma_openmp_end))
2287 PP.Lex(Tok);
2290 SourceLocation EodLoc = Tok.getLocation();
2291 Tok.startToken();
2292 Tok.setKind(tok::annot_pragma_openmp_end);
2293 Tok.setLocation(EodLoc);
2294 Pragma.push_back(Tok);
2312 Token &Tok) {
2313 SourceLocation PointersToMembersLoc = Tok.getLocation();
2314 PP.Lex(Tok);
2315 if (Tok.isNot(tok::l_paren)) {
2320 PP.Lex(Tok);
2321 const IdentifierInfo *Arg = Tok.getIdentifierInfo();
2323 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_identifier)
2327 PP.Lex(Tok);
2334 if (Tok.is(tok::comma)) {
2335 PP.Lex(Tok);
2337 Arg = Tok.getIdentifierInfo();
2339 PP.Diag(Tok.getLocation(),
2341 << Tok.getKind() << /*OnlyInheritanceModels*/ 0;
2344 PP.Lex(Tok);
2345 } else if (Tok.is(tok::r_paren)) {
2351 PP.Diag(Tok.getLocation(), diag::err_expected_punc)
2368 PP.Diag(Tok.getLocation(),
2376 if (Tok.isNot(tok::r_paren)) {
2377 PP.Diag(Tok.getLocation(), diag::err_expected_rparen_after)
2382 SourceLocation EndLoc = Tok.getLocation();
2383 PP.Lex(Tok);
2384 if (Tok.isNot(tok::eod)) {
2385 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2409 PragmaIntroducer Introducer, Token &Tok) {
2410 SourceLocation VtorDispLoc = Tok.getLocation();
2411 PP.Lex(Tok);
2412 if (Tok.isNot(tok::l_paren)) {
2416 PP.Lex(Tok);
2419 const IdentifierInfo *II = Tok.getIdentifierInfo();
2423 PP.Lex(Tok);
2424 if (Tok.isNot(tok::comma)) {
2428 PP.Lex(Tok);
2433 PP.Lex(Tok);
2438 if (Tok.is(tok::r_paren)) {
2447 const IdentifierInfo *II = Tok.getIdentifierInfo();
2449 PP.Lex(Tok);
2452 PP.Lex(Tok);
2454 } else if (Tok.is(tok::numeric_constant) &&
2455 PP.parseSimpleIntegerLiteral(Tok, Value)) {
2457 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_integer)
2462 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_action)
2469 if (Tok.isNot(tok::r_paren)) {
2473 SourceLocation EndLoc = Tok.getLocation();
2474 PP.Lex(Tok);
2475 if (Tok.isNot(tok::eod)) {
2476 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2495 PragmaIntroducer Introducer, Token &Tok) {
2501 AnnotTok.setLocation(Tok.getLocation());
2502 AnnotTok.setAnnotationEndLoc(Tok.getLocation());
2505 for (; Tok.isNot(tok::eod); PP.Lex(Tok)) {
2506 TokenVector.push_back(Tok);
2507 AnnotTok.setAnnotationEndLoc(Tok.getLocation());
2535 Token &Tok) {
2537 SourceLocation FloatControlLoc = Tok.getLocation();
2538 PP.Lex(Tok);
2539 if (Tok.isNot(tok::l_paren)) {
2545 PP.Lex(Tok);
2546 if (Tok.isNot(tok::identifier)) {
2547 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2552 IdentifierInfo *II = Tok.getIdentifierInfo();
2560 PP.Lex(Tok); // the identifier
2562 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2565 if (Tok.isNot(tok::r_paren)) {
2566 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2569 PP.Lex(Tok); // Eat the r_paren
2572 if (Tok.is(tok::r_paren))
2574 PP.Lex(Tok); // the r_paren
2575 else if (Tok.isNot(tok::comma)) {
2576 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2579 PP.Lex(Tok); // ,
2580 if (!Tok.isAnyIdentifier()) {
2581 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2584 StringRef PushOnOff = Tok.getIdentifierInfo()->getName();
2596 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2599 PP.Lex(Tok); // the identifier
2600 if (Tok.is(tok::comma)) {
2601 PP.Lex(Tok); // ,
2602 if (!Tok.isAnyIdentifier()) {
2603 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2606 StringRef ExpectedPush = Tok.getIdentifierInfo()->getName();
2610 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2613 PP.Lex(Tok); // the push identifier
2615 if (Tok.isNot(tok::r_paren)) {
2616 PP.Diag(Tok.getLocation(), diag::err_pragma_float_control_malformed);
2619 PP.Lex(Tok); // the r_paren
2622 SourceLocation EndLoc = Tok.getLocation();
2623 if (Tok.isNot(tok::eod)) {
2624 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2657 Token &Tok) {
2658 SourceLocation DetectMismatchLoc = Tok.getLocation();
2659 PP.Lex(Tok);
2660 if (Tok.isNot(tok::l_paren)) {
2667 if (!PP.LexStringLiteral(Tok, NameString,
2674 if (Tok.isNot(tok::comma)) {
2675 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
2679 if (!PP.LexStringLiteral(Tok, ValueString, "pragma detect_mismatch",
2683 if (Tok.isNot(tok::r_paren)) {
2684 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
2687 PP.Lex(Tok); // Eat the r_paren.
2689 if (Tok.isNot(tok::eod)) {
2690 PP.Diag(Tok.getLocation(), diag::err_pragma_detect_mismatch_malformed);
2713 Token &Tok) {
2714 SourceLocation CommentLoc = Tok.getLocation();
2715 PP.Lex(Tok);
2716 if (Tok.isNot(tok::l_paren)) {
2722 PP.Lex(Tok);
2723 if (Tok.isNot(tok::identifier)) {
2729 IdentifierInfo *II = Tok.getIdentifierInfo();
2739 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_unknown_kind);
2744 PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored)
2752 PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored)
2758 PP.Lex(Tok);
2760 if (Tok.is(tok::comma) && !PP.LexStringLiteral(Tok, ArgumentString,
2772 if (Tok.isNot(tok::r_paren)) {
2773 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
2776 PP.Lex(Tok); // eat the r_paren.
2778 if (Tok.isNot(tok::eod)) {
2779 PP.Diag(Tok.getLocation(), diag::err_pragma_comment_malformed);
2795 Token Tok;
2796 PP.Lex(Tok);
2797 if (Tok.is(tok::eod)) {
2798 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
2802 if (Tok.isNot(tok::identifier)) {
2803 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
2804 << PP.getSpelling(Tok);
2807 const IdentifierInfo *II = Tok.getIdentifierInfo();
2813 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_invalid_argument)
2814 << PP.getSpelling(Tok);
2817 PP.Lex(Tok);
2819 if (Tok.isNot(tok::eod)) {
2820 PP.Diag(Tok.getLocation(), diag::err_pragma_optimize_extra_argument)
2821 << PP.getSpelling(Tok);
2840 PragmaIntroducer Introducer, Token &Tok) {
2842 Token PragmaName = Tok;
2845 PP.Lex(Tok);
2846 if (Tok.isNot(tok::identifier)) {
2847 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
2852 while (Tok.is(tok::identifier)) {
2853 IdentifierInfo *OptionInfo = Tok.getIdentifierInfo();
2862 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_option)
2866 PP.Lex(Tok);
2869 if (Tok.isNot(tok::l_paren)) {
2870 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
2873 PP.Lex(Tok);
2875 if (Tok.isNot(tok::identifier)) {
2876 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
2877 << PP.getSpelling(Tok) << OptionInfo->getName()
2881 const IdentifierInfo *II = Tok.getIdentifierInfo();
2893 PP.Diag(Tok.getLocation(), diag::err_pragma_fp_invalid_argument)
2894 << PP.getSpelling(Tok) << OptionInfo->getName()
2898 PP.Lex(Tok);
2901 if (Tok.isNot(tok::r_paren)) {
2902 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
2905 PP.Lex(Tok);
2919 if (Tok.isNot(tok::eod)) {
2920 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
2933 assert(Tok.is(tok::annot_pragma_fp));
2935 reinterpret_cast<TokFPAnnotValue *>(Tok.getAnnotationValue());
2939 Tok.getLocation(), AnnotValue->FlagValue == TokFPAnnotValue::On);
2953 Actions.ActOnPragmaFPContract(Tok.getLocation(), FPC);
2959 static bool ParseLoopHintValue(Preprocessor &PP, Token &Tok, Token PragmaName,
2965 while (Tok.isNot(tok::eod)) {
2966 if (Tok.is(tok::l_paren))
2968 else if (Tok.is(tok::r_paren)) {
2974 ValueList.push_back(Tok);
2975 PP.Lex(Tok);
2980 if (Tok.isNot(tok::r_paren)) {
2981 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
2984 PP.Lex(Tok);
2990 EOFTok.setLocation(Tok.getLocation());
3050 Token &Tok) {
3052 Token PragmaName = Tok;
3056 PP.Lex(Tok);
3057 if (Tok.isNot(tok::identifier)) {
3058 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3063 while (Tok.is(tok::identifier)) {
3064 Token Option = Tok;
3065 IdentifierInfo *OptionInfo = Tok.getIdentifierInfo();
3080 PP.Diag(Tok.getLocation(), diag::err_pragma_loop_invalid_option)
3084 PP.Lex(Tok);
3087 if (Tok.isNot(tok::l_paren)) {
3088 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3091 PP.Lex(Tok);
3094 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, /*ValueInParens=*/true,
3108 if (Tok.isNot(tok::eod)) {
3109 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3144 Token &Tok) {
3147 Token PragmaName = Tok;
3148 PP.Lex(Tok);
3150 if (Tok.is(tok::eod)) {
3156 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3163 bool ValueInParens = Tok.is(tok::l_paren);
3165 PP.Lex(Tok);
3169 if (ParseLoopHintValue(PP, Tok, PragmaName, Option, ValueInParens, *Info))
3178 if (Tok.isNot(tok::eod)) {
3179 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3210 Token &Tok) {
3211 PP.Lex(Tok);
3213 if (Tok.isNot(tok::l_paren)) {
3214 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen)
3218 PP.Lex(Tok);
3222 while (Tok.is(tok::identifier)) {
3223 IdentifierInfo *II = Tok.getIdentifierInfo();
3225 PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin)
3228 PP.Lex(Tok);
3229 if (Tok.isNot(tok::comma))
3231 PP.Lex(Tok);
3234 if (Tok.isNot(tok::r_paren)) {
3235 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen)
3239 PP.Lex(Tok);
3241 if (Tok.isNot(tok::eod))
3242 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3249 Token &Tok) {
3250 SourceLocation StartLoc = Tok.getLocation();
3251 PP.Lex(Tok);
3253 if (Tok.isNot(tok::l_paren)) {
3254 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "optimize";
3257 PP.Lex(Tok);
3259 if (Tok.isNot(tok::string_literal)) {
3260 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_string) << "optimize";
3264 PP.Lex(Tok);
3266 if (Tok.isNot(tok::comma)) {
3267 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_comma) << "optimize";
3270 PP.Lex(Tok);
3272 if (Tok.is(tok::eod) || Tok.is(tok::r_paren)) {
3273 PP.Diag(Tok.getLocation(), diag::warn_pragma_missing_argument)
3277 IdentifierInfo *II = Tok.getIdentifierInfo();
3279 PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
3280 << PP.getSpelling(Tok) << "optimize" << /*Expected=*/true
3284 PP.Lex(Tok);
3286 if (Tok.isNot(tok::r_paren)) {
3287 PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "optimize";
3290 PP.Lex(Tok);
3292 if (Tok.isNot(tok::eod)) {
3293 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3301 Preprocessor &PP, PragmaIntroducer Introducer, Token &Tok) {
3302 Token FirstTok = Tok;
3304 PP.Lex(Tok);
3305 IdentifierInfo *Info = Tok.getIdentifierInfo();
3318 PP.Lex(Tok);
3319 if (!Tok.is(tok::eod))
3354 Token Tok;
3355 PP.Lex(Tok);
3360 if (Tok.is(tok::identifier)) {
3361 IdentifierInfo *II = Tok.getIdentifierInfo();
3364 PP.Lex(Tok);
3366 if (!Tok.is(tok::period)) {
3367 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_period)
3371 PP.Lex(Tok);
3375 if (!Tok.isOneOf(tok::identifier, tok::l_paren)) {
3376 PP.Diag(Tok.getLocation(),
3382 if (Tok.is(tok::l_paren)) {
3384 PP.Diag(Tok.getLocation(),
3386 PP.Diag(Tok.getLocation(),
3392 const IdentifierInfo *II = Tok.getIdentifierInfo();
3398 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_invalid_argument)
3399 << PP.getSpelling(Tok);
3403 PP.Lex(Tok);
3407 if ((Info->Action == PragmaAttributeInfo::Push && Tok.isNot(tok::eod)) ||
3409 if (Tok.isNot(tok::l_paren)) {
3410 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::l_paren;
3413 PP.Lex(Tok);
3418 while (Tok.isNot(tok::eod)) {
3419 if (Tok.is(tok::l_paren))
3421 else if (Tok.is(tok::r_paren)) {
3427 AttributeTokens.push_back(Tok);
3428 PP.Lex(Tok);
3432 PP.Diag(Tok.getLocation(), diag::err_pragma_attribute_expected_attribute);
3435 if (Tok.isNot(tok::r_paren)) {
3436 PP.Diag(Tok.getLocation(), diag::err_expected) << tok::r_paren;
3439 SourceLocation EndLoc = Tok.getLocation();
3440 PP.Lex(Tok);
3453 if (Tok.isNot(tok::eod))
3454 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3471 Token &Tok) {
3472 PP.Lex(Tok);
3473 if (Tok.is(tok::eod)) {
3474 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
3479 SourceLocation Loc = Tok.getLocation();
3481 if (Tok.isNot(tok::numeric_constant) ||
3482 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
3483 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
3488 if (Tok.isNot(tok::eod)) {
3489 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)
3503 Token &Tok) {
3504 PP.Lex(Tok);
3505 if (Tok.is(tok::eod)) {
3506 PP.Diag(Tok.getLocation(), diag::err_pragma_missing_argument)
3511 SourceLocation Loc = Tok.getLocation();
3513 if (Tok.isNot(tok::numeric_constant) ||
3514 !PP.parseSimpleIntegerLiteral(Tok, MaxTokens)) {
3515 PP.Diag(Tok.getLocation(), diag::err_pragma_expected_integer)
3520 if (Tok.isNot(tok::eod)) {
3521 PP.Diag(Tok.getLocation(), diag::warn_pragma_extra_tokens_at_eol)