Lines Matching full:os
36 IfDefScope(StringRef Name, raw_ostream &OS) : Name(Name), OS(OS) { in IfDefScope() argument
37 OS << "#ifdef " << Name << "\n" in IfDefScope()
41 ~IfDefScope() { OS << "\n#endif // " << Name << "\n\n"; } in ~IfDefScope()
45 raw_ostream &OS; member in __anoneee6a4850111::IfDefScope
94 raw_ostream &OS, StringRef Enum, in generateEnumExports() argument
98 OS << "constexpr auto " << N << " = " << Enum << "::" << N << ";\n"; in generateEnumExports()
104 static void generateEnumClass(ArrayRef<const Record *> Records, raw_ostream &OS, in generateEnumClass() argument
107 OS << "\n"; in generateEnumClass()
108 OS << "enum class " << Enum << " {\n"; in generateEnumClass()
110 OS << " " << getIdentifierName(R, Prefix) << ",\n"; in generateEnumClass()
112 OS << "};\n"; in generateEnumClass()
113 OS << "\n"; in generateEnumClass()
114 OS << "static constexpr std::size_t " << Enum in generateEnumClass()
123 OS << "\n"; in generateEnumClass()
124 generateEnumExports(Records, OS, Enum, Prefix); in generateEnumClass()
132 raw_ostream &OS, StringRef Enum, in generateEnumBitmask() argument
138 OS << "\n"; in generateEnumBitmask()
139 OS << "enum class " << Enum << " : " << Type << " {\n"; in generateEnumBitmask()
143 OS << " " << LastName << " = " << (1ull << I) << TypeSuffix << ",\n"; in generateEnumBitmask()
145 OS << " LLVM_MARK_AS_BITMASK_ENUM(/*LargestValue=*/" << LastName << ")\n"; in generateEnumBitmask()
146 OS << "};\n"; in generateEnumBitmask()
147 OS << "\n"; in generateEnumBitmask()
148 OS << "static constexpr std::size_t " << Enum in generateEnumBitmask()
157 OS << "\n"; in generateEnumBitmask()
158 generateEnumExports(Records, OS, Enum, Prefix); in generateEnumBitmask()
165 raw_ostream &OS, in generateClauseEnumVal() argument
181 OS << "\n"; in generateClauseEnumVal()
182 OS << "enum class " << Enum << " {\n"; in generateClauseEnumVal()
184 OS << " " << Val.getRecordName() << "=" << Val.getValue() << ",\n"; in generateClauseEnumVal()
185 OS << "};\n"; in generateClauseEnumVal()
188 OS << "\n"; in generateClauseEnumVal()
190 OS << "constexpr auto " << CV->getName() << " = " << Enum in generateClauseEnumVal()
271 static void emitDirectivesDecl(const RecordKeeper &Records, raw_ostream &OS) { in emitDirectivesDecl() argument
278 OS << "#ifndef LLVM_" << Lang << "_INC\n"; in emitDirectivesDecl()
279 OS << "#define LLVM_" << Lang << "_INC\n"; in emitDirectivesDecl()
280 OS << "\n#include \"llvm/ADT/ArrayRef.h\"\n"; in emitDirectivesDecl()
283 OS << "#include \"llvm/ADT/BitmaskEnum.h\"\n"; in emitDirectivesDecl()
285 OS << "#include \"llvm/ADT/StringRef.h\"\n"; in emitDirectivesDecl()
286 OS << "#include \"llvm/Frontend/Directive/Spelling.h\"\n"; in emitDirectivesDecl()
287 OS << "#include \"llvm/Support/Compiler.h\"\n"; in emitDirectivesDecl()
288 OS << "#include <cstddef>\n"; // for size_t in emitDirectivesDecl()
289 OS << "#include <utility>\n"; // for std::pair in emitDirectivesDecl()
290 OS << "\n"; in emitDirectivesDecl()
291 OS << "namespace llvm {\n"; in emitDirectivesDecl()
297 OS << "namespace " << Ns << " {\n"; in emitDirectivesDecl()
300 OS << "\nLLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();\n"; in emitDirectivesDecl()
307 generateEnumClass(Associations, OS, "Association", in emitDirectivesDecl()
310 generateEnumClass(DirLang.getCategories(), OS, "Category", /*Prefix=*/"", in emitDirectivesDecl()
313 generateEnumBitmask(DirLang.getSourceLanguages(), OS, "SourceLanguage", in emitDirectivesDecl()
317 generateEnumClass(DirLang.getDirectives(), OS, "Directive", in emitDirectivesDecl()
322 generateEnumClass(DirLang.getClauses(), OS, "Clause", in emitDirectivesDecl()
328 generateClauseEnumVal(DirLang.getClauses(), OS, DirLang, EnumHelperFuncs); in emitDirectivesDecl()
331 OS << "\n"; in emitDirectivesDecl()
332 OS << "// Enumeration helper functions\n"; in emitDirectivesDecl()
334 OS << "LLVM_ABI std::pair<Directive, directive::VersionRange> get" << Lang in emitDirectivesDecl()
337 OS << "inline Directive get" << Lang << "DirectiveKind(StringRef Str) {\n"; in emitDirectivesDecl()
338 OS << " return get" << Lang << "DirectiveKindAndVersions(Str).first;\n"; in emitDirectivesDecl()
339 OS << "}\n"; in emitDirectivesDecl()
340 OS << "\n"; in emitDirectivesDecl()
342 OS << "LLVM_ABI StringRef get" << Lang in emitDirectivesDecl()
344 OS << "\n"; in emitDirectivesDecl()
346 OS << "LLVM_ABI std::pair<Clause, directive::VersionRange> get" << Lang in emitDirectivesDecl()
348 OS << "\n"; in emitDirectivesDecl()
350 OS << "inline Clause get" << Lang << "ClauseKind(StringRef Str) {\n"; in emitDirectivesDecl()
351 OS << " return get" << Lang << "ClauseKindAndVersions(Str).first;\n"; in emitDirectivesDecl()
352 OS << "}\n"; in emitDirectivesDecl()
353 OS << "\n"; in emitDirectivesDecl()
355 OS << "LLVM_ABI StringRef get" << Lang in emitDirectivesDecl()
357 OS << "\n"; in emitDirectivesDecl()
359 OS << "/// Return true if \\p C is a valid clause for \\p D in version \\p " in emitDirectivesDecl()
361 OS << "LLVM_ABI bool isAllowedClauseForDirective(Directive D, " in emitDirectivesDecl()
363 OS << "\n"; in emitDirectivesDecl()
364 OS << "constexpr std::size_t getMaxLeafCount() { return " in emitDirectivesDecl()
366 OS << "LLVM_ABI Association getDirectiveAssociation(Directive D);\n"; in emitDirectivesDecl()
367 OS << "LLVM_ABI Category getDirectiveCategory(Directive D);\n"; in emitDirectivesDecl()
368 OS << "LLVM_ABI SourceLanguage getDirectiveLanguages(Directive D);\n"; in emitDirectivesDecl()
370 OS << EnumHelperFuncs; in emitDirectivesDecl()
371 OS << "\n"; in emitDirectivesDecl()
376 OS << "} // namespace " << Ns << "\n"; in emitDirectivesDecl()
378 OS << "} // namespace llvm\n"; in emitDirectivesDecl()
380 OS << "#endif // LLVM_" << Lang << "_INC\n"; in emitDirectivesDecl()
398 static void generateGetName(ArrayRef<const Record *> Records, raw_ostream &OS, in generateGetName() argument
403 OS << "\n"; in generateGetName()
404 OS << "llvm::StringRef " << Qual << "get" << Lang << Enum << "Name(" << Qual in generateGetName()
406 OS << " switch (Kind) {\n"; in generateGetName()
410 OS << " case " << Ident << ":"; in generateGetName()
414 OS << "\n"; in generateGetName()
415 OS << " return \"" << Spellings.front().Name << "\";\n"; in generateGetName()
417 OS << " {\n"; in generateGetName()
419 OS << " static constexpr llvm::directive::Spelling " << SpellingsName in generateGetName()
422 OS << " {\"" << S.Name << "\", {" << S.Versions.Min << ", " in generateGetName()
425 OS << " };\n"; in generateGetName()
426 OS << " return llvm::directive::FindName(" << SpellingsName in generateGetName()
428 OS << " }\n"; in generateGetName()
431 OS << " }\n"; // switch in generateGetName()
432 OS << " llvm_unreachable(\"Invalid " << Lang << " " << Enum << " kind\");\n"; in generateGetName()
433 OS << "}\n"; in generateGetName()
437 static void generateGetKind(ArrayRef<const Record *> Records, raw_ostream &OS, in generateGetKind() argument
455 OS << "\n"; in generateGetKind()
456 OS << "std::pair<" << Qual << Enum << ", llvm::directive::VersionRange> " in generateGetKind()
459 OS << " directive::VersionRange All; // Default-initialized to \"all " in generateGetKind()
461 OS << " return StringSwitch<std::pair<" << Enum << ", " in generateGetKind()
473 OS << " .Case(\"" << Name << "\", {" << Ident << ", "; in generateGetKind()
475 OS << "All})\n"; in generateGetKind()
477 OS << "{" << Versions.Min << ", " << Versions.Max << "}})\n"; in generateGetKind()
480 OS << " .Default({" << DefaultName << ", All});\n"; in generateGetKind()
481 OS << "}\n"; in generateGetKind()
488 raw_ostream &OS) { in generateGetClauseVal() argument
515 OS << "\n"; in generateGetClauseVal()
516 OS << Qual << Enum << " " << Qual << "get" << Enum in generateGetClauseVal()
518 OS << " return StringSwitch<" << Enum << ">(Str)\n"; in generateGetClauseVal()
520 OS << " .Case(\"" << Val.getFormattedName() << "\"," in generateGetClauseVal()
523 OS << " .Default(" << DefaultName << ");\n"; in generateGetClauseVal()
524 OS << "}\n"; in generateGetClauseVal()
526 OS << "\n"; in generateGetClauseVal()
527 OS << "llvm::StringRef " << Qual << "get" << Lang << Enum << "Name(" << Qual in generateGetClauseVal()
529 OS << " switch (x) {\n"; in generateGetClauseVal()
531 OS << " case " << Val.getRecordName() << ":\n"; in generateGetClauseVal()
532 OS << " return \"" << Val.getFormattedName() << "\";\n"; in generateGetClauseVal()
534 OS << " }\n"; // switch in generateGetClauseVal()
535 OS << " llvm_unreachable(\"Invalid " << Lang << " " << Enum in generateGetClauseVal()
537 OS << "}\n"; in generateGetClauseVal()
542 raw_ostream &OS, in generateCaseForVersionedClauses() argument
551 OS << " case " << Name << ":\n"; in generateCaseForVersionedClauses()
552 OS << " return " << VerClause.getMinVersion() in generateCaseForVersionedClauses()
560 raw_ostream &OS) { in generateIsAllowedClause() argument
563 OS << "\n"; in generateIsAllowedClause()
564 OS << "bool " << Qual << "isAllowedClauseForDirective(" << Qual in generateIsAllowedClause()
566 OS << " assert(unsigned(D) <= Directive_enumSize);\n"; in generateIsAllowedClause()
567 OS << " assert(unsigned(C) <= Clause_enumSize);\n"; in generateIsAllowedClause()
569 OS << " switch (D) {\n"; in generateIsAllowedClause()
574 OS << " case " << getIdentifierName(R, Prefix) << ":\n"; in generateIsAllowedClause()
579 OS << " return false;\n"; in generateIsAllowedClause()
581 OS << " switch (C) {\n"; in generateIsAllowedClause()
585 generateCaseForVersionedClauses(Dir.getAllowedClauses(), OS, DirLang, in generateIsAllowedClause()
588 generateCaseForVersionedClauses(Dir.getAllowedOnceClauses(), OS, DirLang, in generateIsAllowedClause()
591 generateCaseForVersionedClauses(Dir.getAllowedExclusiveClauses(), OS, in generateIsAllowedClause()
594 generateCaseForVersionedClauses(Dir.getRequiredClauses(), OS, DirLang, in generateIsAllowedClause()
597 OS << " default:\n"; in generateIsAllowedClause()
598 OS << " return false;\n"; in generateIsAllowedClause()
599 OS << " }\n"; // End of clauses switch in generateIsAllowedClause()
601 OS << " break;\n"; in generateIsAllowedClause()
604 OS << " }\n"; // End of directives switch in generateIsAllowedClause()
605 OS << " llvm_unreachable(\"Invalid " << DirLang.getName() in generateIsAllowedClause()
607 OS << "}\n"; // End of function isAllowedClauseForDirective in generateIsAllowedClause()
610 static void emitLeafTable(const DirectiveLanguage &DirLang, raw_ostream &OS, in emitLeafTable() argument
707 OS << "\nstatic_assert(sizeof(" << DirectiveType << ") == sizeof(int));\n"; in emitLeafTable()
709 OS << "[[maybe_unused]] static const " << DirectiveType << ' ' << TableName in emitLeafTable()
713 OS << " {" << Qual << getIdentifierName(Directives[Leaves[0]], Prefix); in emitLeafTable()
714 OS << ", static_cast<" << DirectiveType << ">(" << Leaves[1] << "),"; in emitLeafTable()
718 OS << ' ' << Qual << getIdentifierName(Directives[Leaves[I]], Prefix) in emitLeafTable()
721 OS << " static_cast<" << DirectiveType << ">(-1),"; in emitLeafTable()
723 OS << "},\n"; in emitLeafTable()
725 OS << "};\n\n"; in emitLeafTable()
731 OS << "[[maybe_unused]] static auto " << TableName in emitLeafTable()
737 OS << "[[maybe_unused]] static const int " << TableName << "Ordering[] = {\n"; in emitLeafTable()
738 OS << " "; in emitLeafTable()
743 OS << ' ' << Idx << ','; in emitLeafTable()
744 OS << "\n};\n"; in emitLeafTable()
748 raw_ostream &OS) { in generateGetDirectiveAssociation() argument
854 OS << '\n'; in generateGetDirectiveAssociation()
859 OS << Qual << "Association " << Qual << "getDirectiveAssociation(" << Qual in generateGetDirectiveAssociation()
861 OS << " switch (Dir) {\n"; in generateGetDirectiveAssociation()
864 OS << " case " << getIdentifierName(R, Prefix) << ":\n"; in generateGetDirectiveAssociation()
865 OS << " return Association::" << GetAssocName(F->second) << ";\n"; in generateGetDirectiveAssociation()
868 OS << " } // switch (Dir)\n"; in generateGetDirectiveAssociation()
869 OS << " llvm_unreachable(\"Unexpected directive\");\n"; in generateGetDirectiveAssociation()
870 OS << "}\n"; in generateGetDirectiveAssociation()
874 raw_ostream &OS) { in generateGetDirectiveCategory() argument
877 OS << '\n'; in generateGetDirectiveCategory()
878 OS << Qual << "Category " << Qual << "getDirectiveCategory(" << Qual in generateGetDirectiveCategory()
880 OS << " switch (Dir) {\n"; in generateGetDirectiveCategory()
886 OS << " case " << getIdentifierName(R, Prefix) << ":\n"; in generateGetDirectiveCategory()
887 OS << " return Category::" << D.getCategory()->getValueAsString("name") in generateGetDirectiveCategory()
890 OS << " } // switch (Dir)\n"; in generateGetDirectiveCategory()
891 OS << " llvm_unreachable(\"Unexpected directive\");\n"; in generateGetDirectiveCategory()
892 OS << "}\n"; in generateGetDirectiveCategory()
896 raw_ostream &OS) { in generateGetDirectiveLanguages() argument
899 OS << '\n'; in generateGetDirectiveLanguages()
900 OS << Qual << "SourceLanguage " << Qual << "getDirectiveLanguages(" << Qual in generateGetDirectiveLanguages()
902 OS << " switch (D) {\n"; in generateGetDirectiveLanguages()
908 OS << " case " << getIdentifierName(R, Prefix) << ":\n"; in generateGetDirectiveLanguages()
909 OS << " return "; in generateGetDirectiveLanguages()
911 D.getSourceLanguages(), OS, in generateGetDirectiveLanguages()
914 OS << "SourceLanguage::" << BaseRecord::getSnakeName(N); in generateGetDirectiveLanguages()
917 OS << ";\n"; in generateGetDirectiveLanguages()
919 OS << " } // switch(D)\n"; in generateGetDirectiveLanguages()
920 OS << " llvm_unreachable(\"Unexpected directive\");\n"; in generateGetDirectiveLanguages()
921 OS << "}\n"; in generateGetDirectiveLanguages()
926 raw_ostream &OS, StringRef ClauseSetPrefix, in generateClauseSet() argument
930 OS << "\n"; in generateClauseSet()
931 OS << "static " << DirLang.getClauseEnumSetClass() << " " << ClauseSetPrefix in generateClauseSet()
939 OS << " Clause::" << getIdentifierName(C.getRecord(), Prefix) << ",\n"; in generateClauseSet()
943 OS << " OpenACCClauseKind::" << C.getClangAccSpelling() << ",\n"; in generateClauseSet()
946 OS << "};\n"; in generateClauseSet()
951 Frontend FE, raw_ostream &OS) { in generateDirectiveClauseSets() argument
956 IfDefScope Scope(IfDefName, OS); in generateDirectiveClauseSets()
960 OS << "\n"; in generateDirectiveClauseSets()
964 OS << "namespace " << Namespace << " {\n"; in generateDirectiveClauseSets()
970 OS << "namespace " << Ns << " {\n"; in generateDirectiveClauseSets()
973 OS << "\n"; in generateDirectiveClauseSets()
974 OS << "// Sets for " << Dir.getSpellingForIdentifier() << "\n"; in generateDirectiveClauseSets()
976 generateClauseSet(Dir.getAllowedClauses(), OS, "allowedClauses_", Dir, in generateDirectiveClauseSets()
978 generateClauseSet(Dir.getAllowedOnceClauses(), OS, "allowedOnceClauses_", in generateDirectiveClauseSets()
980 generateClauseSet(Dir.getAllowedExclusiveClauses(), OS, in generateDirectiveClauseSets()
982 generateClauseSet(Dir.getRequiredClauses(), OS, "requiredClauses_", Dir, in generateDirectiveClauseSets()
988 OS << "} // namespace " << Ns << "\n"; in generateDirectiveClauseSets()
990 OS << "} // namespace " << Namespace << "\n"; in generateDirectiveClauseSets()
997 Frontend FE, raw_ostream &OS) { in generateDirectiveClauseMap() argument
1001 IfDefScope Scope(IfDefName, OS); in generateDirectiveClauseMap()
1003 OS << "\n"; in generateDirectiveClauseMap()
1004 OS << "{\n"; in generateDirectiveClauseMap()
1017 OS << " {"; in generateDirectiveClauseMap()
1019 OS << Qual << "Directive::" << Name << ",\n"; in generateDirectiveClauseMap()
1023 OS << "clang::OpenACCDirectiveKind::" << Dir.getClangAccSpelling() in generateDirectiveClauseMap()
1027 OS << " {\n"; in generateDirectiveClauseMap()
1028 OS << " " << Qual << "allowedClauses_" << Name << ",\n"; in generateDirectiveClauseMap()
1029 OS << " " << Qual << "allowedOnceClauses_" << Name << ",\n"; in generateDirectiveClauseMap()
1030 OS << " " << Qual << "allowedExclusiveClauses_" << Name << ",\n"; in generateDirectiveClauseMap()
1031 OS << " " << Qual << "requiredClauses_" << Name << ",\n"; in generateDirectiveClauseMap()
1032 OS << " }\n"; in generateDirectiveClauseMap()
1033 OS << " },\n"; in generateDirectiveClauseMap()
1036 OS << "}\n"; in generateDirectiveClauseMap()
1045 raw_ostream &OS) { in generateFlangClauseParserClass() argument
1047 IfDefScope Scope("GEN_FLANG_CLAUSE_PARSER_CLASSES", OS); in generateFlangClauseParserClass()
1049 OS << "\n"; in generateFlangClauseParserClass()
1053 OS << "WRAPPER_CLASS(" << Clause.getFormattedParserClassName() << ", "; in generateFlangClauseParserClass()
1055 OS << "std::optional<std::list<" << Clause.getFlangClass() << ">>"; in generateFlangClauseParserClass()
1057 OS << "std::optional<" << Clause.getFlangClass() << ">"; in generateFlangClauseParserClass()
1059 OS << "std::list<" << Clause.getFlangClass() << ">"; in generateFlangClauseParserClass()
1061 OS << Clause.getFlangClass(); in generateFlangClauseParserClass()
1064 OS << "EMPTY_CLASS(" << Clause.getFormattedParserClassName(); in generateFlangClauseParserClass()
1066 OS << ");\n"; in generateFlangClauseParserClass()
1072 raw_ostream &OS) { in generateFlangClauseParserClassList() argument
1074 IfDefScope Scope("GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST", OS); in generateFlangClauseParserClassList()
1076 OS << "\n"; in generateFlangClauseParserClassList()
1077 interleaveComma(DirLang.getClauses(), OS, [&](const Record *C) { in generateFlangClauseParserClassList()
1079 OS << Clause.getFormattedParserClassName() << "\n"; in generateFlangClauseParserClassList()
1085 raw_ostream &OS) { in generateFlangClauseDump() argument
1087 IfDefScope Scope("GEN_FLANG_DUMP_PARSE_TREE_CLAUSES", OS); in generateFlangClauseDump()
1089 OS << "\n"; in generateFlangClauseDump()
1091 OS << "NODE(" << DirLang.getFlangClauseBaseClass() << ", " in generateFlangClauseDump()
1099 raw_ostream &OS) { in generateFlangClauseUnparse() argument
1101 IfDefScope Scope("GEN_FLANG_CLAUSE_UNPARSE", OS); in generateFlangClauseUnparse()
1104 OS << "\n"; in generateFlangClauseUnparse()
1117 OS << "void Unparse(const " << Base << "::" << Parser << " &x) {\n"; in generateFlangClauseUnparse()
1118 OS << " Word(\"" << Upper << "\");\n"; in generateFlangClauseUnparse()
1120 OS << " Walk(\"(\", x.v, \")\");\n"; in generateFlangClauseUnparse()
1121 OS << "}\n"; in generateFlangClauseUnparse()
1123 OS << "void Unparse(const " << Base << "::" << Parser << " &x) {\n"; in generateFlangClauseUnparse()
1124 OS << " Word(\"" << Upper << "\");\n"; in generateFlangClauseUnparse()
1125 OS << " Put(\"(\");\n"; in generateFlangClauseUnparse()
1126 OS << " if (x.v.has_value())\n"; in generateFlangClauseUnparse()
1128 OS << " Walk(x.v, \",\");\n"; in generateFlangClauseUnparse()
1130 OS << " Walk(x.v);\n"; in generateFlangClauseUnparse()
1131 OS << " else\n"; in generateFlangClauseUnparse()
1132 OS << " Put(\"" << Clause.getDefaultValue() << "\");\n"; in generateFlangClauseUnparse()
1133 OS << " Put(\")\");\n"; in generateFlangClauseUnparse()
1134 OS << "}\n"; in generateFlangClauseUnparse()
1136 OS << "void Unparse(const " << Base << "::" << Parser << " &x) {\n"; in generateFlangClauseUnparse()
1137 OS << " Word(\"" << Upper << "\");\n"; in generateFlangClauseUnparse()
1138 OS << " Put(\"(\");\n"; in generateFlangClauseUnparse()
1140 OS << " Walk(x.v, \",\");\n"; in generateFlangClauseUnparse()
1142 OS << " Walk(x.v);\n"; in generateFlangClauseUnparse()
1143 OS << " Put(\")\");\n"; in generateFlangClauseUnparse()
1144 OS << "}\n"; in generateFlangClauseUnparse()
1147 OS << "void Before(const " << Base << "::" << Parser << " &) { Word(\"" in generateFlangClauseUnparse()
1155 raw_ostream &OS) { in generateFlangClauseCheckPrototypes() argument
1157 IfDefScope Scope("GEN_FLANG_CLAUSE_CHECK_ENTER", OS); in generateFlangClauseCheckPrototypes()
1159 OS << "\n"; in generateFlangClauseCheckPrototypes()
1161 OS << "void Enter(const parser::" << DirLang.getFlangClauseBaseClass() in generateFlangClauseCheckPrototypes()
1169 raw_ostream &OS) { in generateFlangClauseParserKindMap() argument
1171 IfDefScope Scope("GEN_FLANG_CLAUSE_PARSER_KIND_MAP", OS); in generateFlangClauseParserKindMap()
1176 OS << "\n"; in generateFlangClauseParserKindMap()
1179 OS << "if constexpr (std::is_same_v<A, parser::" in generateFlangClauseParserKindMap()
1182 OS << ">)\n"; in generateFlangClauseParserKindMap()
1183 OS << " return " << Qual << "Clause::" << getIdentifierName(R, Prefix) in generateFlangClauseParserKindMap()
1187 OS << "llvm_unreachable(\"Invalid " << DirLang.getName() in generateFlangClauseParserKindMap()
1193 raw_ostream &OS) { in generateFlangClausesParser() argument
1201 IfDefScope Scope("GEN_FLANG_CLAUSES_PARSER", OS); in generateFlangClausesParser()
1205 OS << "\n"; in generateFlangClausesParser()
1206 OS << "TYPE_PARSER(\n"; in generateFlangClausesParser()
1212 OS << " \"" << S.Name << "\" >> construct<" << Base << ">(construct<" in generateFlangClausesParser()
1215 OS << "))"; in generateFlangClausesParser()
1217 OS << " ||"; in generateFlangClausesParser()
1218 OS << "\n"; in generateFlangClausesParser()
1223 OS << "maybe("; in generateFlangClausesParser()
1224 OS << "parenthesized("; in generateFlangClausesParser()
1226 OS << "nonemptyList("; in generateFlangClausesParser()
1229 OS << "\"" << C.getPrefix() << ":\" >> "; in generateFlangClausesParser()
1244 OS << Parser; in generateFlangClausesParser()
1246 OS << " || " << Parser; in generateFlangClausesParser()
1248 OS << ")"; in generateFlangClausesParser()
1249 OS << ")"; // close parenthesized(. in generateFlangClausesParser()
1252 OS << ")"; in generateFlangClausesParser()
1253 OS << "))"; in generateFlangClausesParser()
1255 OS << " ||"; in generateFlangClausesParser()
1256 OS << "\n"; in generateFlangClausesParser()
1258 OS << ")\n"; in generateFlangClausesParser()
1264 raw_ostream &OS) { in emitDirectivesClangImpl() argument
1269 generateDirectiveClauseSets(DirLang, Frontend::Clang, OS); in emitDirectivesClangImpl()
1270 generateDirectiveClauseMap(DirLang, Frontend::Clang, OS); in emitDirectivesClangImpl()
1275 raw_ostream &OS) { in emitDirectivesFlangImpl() argument
1276 generateDirectiveClauseSets(DirLang, Frontend::Flang, OS); in emitDirectivesFlangImpl()
1278 generateDirectiveClauseMap(DirLang, Frontend::Flang, OS); in emitDirectivesFlangImpl()
1280 generateFlangClauseParserClass(DirLang, OS); in emitDirectivesFlangImpl()
1282 generateFlangClauseParserClassList(DirLang, OS); in emitDirectivesFlangImpl()
1284 generateFlangClauseDump(DirLang, OS); in emitDirectivesFlangImpl()
1286 generateFlangClauseUnparse(DirLang, OS); in emitDirectivesFlangImpl()
1288 generateFlangClauseCheckPrototypes(DirLang, OS); in emitDirectivesFlangImpl()
1290 generateFlangClauseParserKindMap(DirLang, OS); in emitDirectivesFlangImpl()
1292 generateFlangClausesParser(DirLang, OS); in emitDirectivesFlangImpl()
1296 raw_ostream &OS) { in generateClauseClassMacro() argument
1298 IfDefScope Scope("GEN_CLANG_CLAUSE_CLASS", OS); in generateClauseClassMacro()
1301 OS << "\n"; in generateClauseClassMacro()
1303 OS << "#ifndef CLAUSE\n"; in generateClauseClassMacro()
1304 OS << "#define CLAUSE(Enum, Str, Implicit)\n"; in generateClauseClassMacro()
1305 OS << "#endif\n"; in generateClauseClassMacro()
1306 OS << "#ifndef CLAUSE_CLASS\n"; in generateClauseClassMacro()
1307 OS << "#define CLAUSE_CLASS(Enum, Str, Class)\n"; in generateClauseClassMacro()
1308 OS << "#endif\n"; in generateClauseClassMacro()
1309 OS << "#ifndef CLAUSE_NO_CLASS\n"; in generateClauseClassMacro()
1310 OS << "#define CLAUSE_NO_CLASS(Enum, Str)\n"; in generateClauseClassMacro()
1311 OS << "#endif\n"; in generateClauseClassMacro()
1312 OS << "\n"; in generateClauseClassMacro()
1313 OS << "#define __CLAUSE(Name, Class) \\\n"; in generateClauseClassMacro()
1314 OS << " CLAUSE(" << Prefix << "##Name, #Name, /* Implicit */ false) \\\n"; in generateClauseClassMacro()
1315 OS << " CLAUSE_CLASS(" << Prefix << "##Name, #Name, Class)\n"; in generateClauseClassMacro()
1316 OS << "#define __CLAUSE_NO_CLASS(Name) \\\n"; in generateClauseClassMacro()
1317 OS << " CLAUSE(" << Prefix << "##Name, #Name, /* Implicit */ false) \\\n"; in generateClauseClassMacro()
1318 OS << " CLAUSE_NO_CLASS(" << Prefix << "##Name, #Name)\n"; in generateClauseClassMacro()
1319 OS << "#define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \\\n"; in generateClauseClassMacro()
1320 OS << " CLAUSE(" << Prefix << "##Name, Str, /* Implicit */ true) \\\n"; in generateClauseClassMacro()
1321 OS << " CLAUSE_CLASS(" << Prefix << "##Name, Str, Class)\n"; in generateClauseClassMacro()
1322 OS << "#define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \\\n"; in generateClauseClassMacro()
1323 OS << " CLAUSE(" << Prefix << "##Name, Str, /* Implicit */ true) \\\n"; in generateClauseClassMacro()
1324 OS << " CLAUSE_NO_CLASS(" << Prefix << "##Name, Str)\n"; in generateClauseClassMacro()
1325 OS << "\n"; in generateClauseClassMacro()
1331 OS << "__IMPLICIT_CLAUSE_NO_CLASS(" << Name << ", \"" << Name in generateClauseClassMacro()
1334 OS << "__CLAUSE_NO_CLASS(" << Name << ")\n"; in generateClauseClassMacro()
1338 OS << "__IMPLICIT_CLAUSE_CLASS(" << Name << ", \"" << Name << "\", " in generateClauseClassMacro()
1341 OS << "__CLAUSE(" << Name << ", " << C.getClangClass() << ")\n"; in generateClauseClassMacro()
1346 OS << "\n"; in generateClauseClassMacro()
1347 OS << "#undef __IMPLICIT_CLAUSE_NO_CLASS\n"; in generateClauseClassMacro()
1348 OS << "#undef __IMPLICIT_CLAUSE_CLASS\n"; in generateClauseClassMacro()
1349 OS << "#undef __CLAUSE_NO_CLASS\n"; in generateClauseClassMacro()
1350 OS << "#undef __CLAUSE\n"; in generateClauseClassMacro()
1351 OS << "#undef CLAUSE_NO_CLASS\n"; in generateClauseClassMacro()
1352 OS << "#undef CLAUSE_CLASS\n"; in generateClauseClassMacro()
1353 OS << "#undef CLAUSE\n"; in generateClauseClassMacro()
1359 raw_ostream &OS) { in emitDirectivesBasicImpl() argument
1360 IfDefScope Scope("GEN_DIRECTIVES_IMPL", OS); in emitDirectivesBasicImpl()
1365 OS << "\n"; in emitDirectivesBasicImpl()
1366 OS << "#include \"llvm/Frontend/Directive/Spelling.h\"\n"; in emitDirectivesBasicImpl()
1367 OS << "#include \"llvm/Support/ErrorHandling.h\"\n"; in emitDirectivesBasicImpl()
1368 OS << "#include <utility>\n"; in emitDirectivesBasicImpl()
1371 generateGetKind(DirLang.getDirectives(), OS, "Directive", DirLang, DPrefix, in emitDirectivesBasicImpl()
1375 generateGetName(DirLang.getDirectives(), OS, "Directive", DirLang, DPrefix); in emitDirectivesBasicImpl()
1378 generateGetKind(DirLang.getClauses(), OS, "Clause", DirLang, CPrefix, in emitDirectivesBasicImpl()
1382 generateGetName(DirLang.getClauses(), OS, "Clause", DirLang, CPrefix); in emitDirectivesBasicImpl()
1386 generateGetClauseVal(DirLang, OS); in emitDirectivesBasicImpl()
1389 generateIsAllowedClause(DirLang, OS); in emitDirectivesBasicImpl()
1392 generateGetDirectiveAssociation(DirLang, OS); in emitDirectivesBasicImpl()
1395 generateGetDirectiveCategory(DirLang, OS); in emitDirectivesBasicImpl()
1398 generateGetDirectiveLanguages(DirLang, OS); in emitDirectivesBasicImpl()
1401 emitLeafTable(DirLang, OS, "LeafConstructTable"); in emitDirectivesBasicImpl()
1406 static void emitDirectivesImpl(const RecordKeeper &Records, raw_ostream &OS) { in emitDirectivesImpl() argument
1411 emitDirectivesFlangImpl(DirLang, OS); in emitDirectivesImpl()
1413 emitDirectivesClangImpl(DirLang, OS); in emitDirectivesImpl()
1415 generateClauseClassMacro(DirLang, OS); in emitDirectivesImpl()
1417 emitDirectivesBasicImpl(DirLang, OS); in emitDirectivesImpl()