Lines Matching refs:OS

28   IfDefScope(StringRef Name, raw_ostream &OS) : Name(Name), OS(OS) {  in IfDefScope()  argument
29 OS << "#ifdef " << Name << "\n" in IfDefScope()
33 ~IfDefScope() { OS << "\n#endif // " << Name << "\n\n"; } in ~IfDefScope()
37 raw_ostream &OS; member in __anonef554e280111::IfDefScope
44 void GenerateEnumClass(const std::vector<Record *> &Records, raw_ostream &OS, in GenerateEnumClass() argument
47 OS << "\n"; in GenerateEnumClass()
48 OS << "enum class " << Enum << " {\n"; in GenerateEnumClass()
51 OS << " " << Prefix << Rec.getFormattedName() << ",\n"; in GenerateEnumClass()
53 OS << "};\n"; in GenerateEnumClass()
54 OS << "\n"; in GenerateEnumClass()
55 OS << "static constexpr std::size_t " << Enum in GenerateEnumClass()
64 OS << "\n"; in GenerateEnumClass()
67 OS << "constexpr auto " << Prefix << Rec.getFormattedName() << " = " in GenerateEnumClass()
77 raw_ostream &OS, const DirectiveLanguage &DirLang, in GenerateEnumClauseVal() argument
92 OS << "\n"; in GenerateEnumClauseVal()
93 OS << "enum class " << EnumName << " {\n"; in GenerateEnumClauseVal()
96 OS << " " << CV->getName() << "=" << CVal.getValue() << ",\n"; in GenerateEnumClauseVal()
98 OS << "};\n"; in GenerateEnumClauseVal()
101 OS << "\n"; in GenerateEnumClauseVal()
103 OS << "constexpr auto " << CV->getName() << " = " in GenerateEnumClauseVal()
178 void EmitDirectivesDecl(RecordKeeper &Records, raw_ostream &OS) { in EmitDirectivesDecl() argument
183 OS << "#ifndef LLVM_" << DirLang.getName() << "_INC\n"; in EmitDirectivesDecl()
184 OS << "#define LLVM_" << DirLang.getName() << "_INC\n"; in EmitDirectivesDecl()
187 OS << "\n#include \"llvm/ADT/BitmaskEnum.h\"\n"; in EmitDirectivesDecl()
189 OS << "\n"; in EmitDirectivesDecl()
190 OS << "namespace llvm {\n"; in EmitDirectivesDecl()
191 OS << "class StringRef;\n"; in EmitDirectivesDecl()
197 OS << "namespace " << Ns << " {\n"; in EmitDirectivesDecl()
200 OS << "\nLLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();\n"; in EmitDirectivesDecl()
203 GenerateEnumClass(DirLang.getDirectives(), OS, "Directive", in EmitDirectivesDecl()
207 GenerateEnumClass(DirLang.getClauses(), OS, "Clause", in EmitDirectivesDecl()
212 GenerateEnumClauseVal(DirLang.getClauses(), OS, DirLang, EnumHelperFuncs); in EmitDirectivesDecl()
215 OS << "\n"; in EmitDirectivesDecl()
216 OS << "// Enumeration helper functions\n"; in EmitDirectivesDecl()
217 OS << "Directive get" << DirLang.getName() in EmitDirectivesDecl()
219 OS << "\n"; in EmitDirectivesDecl()
220 OS << "llvm::StringRef get" << DirLang.getName() in EmitDirectivesDecl()
222 OS << "\n"; in EmitDirectivesDecl()
223 OS << "Clause get" << DirLang.getName() in EmitDirectivesDecl()
225 OS << "\n"; in EmitDirectivesDecl()
226 OS << "llvm::StringRef get" << DirLang.getName() << "ClauseName(Clause C);\n"; in EmitDirectivesDecl()
227 OS << "\n"; in EmitDirectivesDecl()
228 OS << "/// Return true if \\p C is a valid clause for \\p D in version \\p " in EmitDirectivesDecl()
230 OS << "bool isAllowedClauseForDirective(Directive D, " in EmitDirectivesDecl()
232 OS << "\n"; in EmitDirectivesDecl()
234 OS << EnumHelperFuncs; in EmitDirectivesDecl()
235 OS << "\n"; in EmitDirectivesDecl()
240 OS << "} // namespace " << Ns << "\n"; in EmitDirectivesDecl()
242 OS << "} // namespace llvm\n"; in EmitDirectivesDecl()
244 OS << "#endif // LLVM_" << DirLang.getName() << "_INC\n"; in EmitDirectivesDecl()
248 void GenerateGetName(const std::vector<Record *> &Records, raw_ostream &OS, in GenerateGetName() argument
251 OS << "\n"; in GenerateGetName()
252 OS << "llvm::StringRef llvm::" << DirLang.getCppNamespace() << "::get" in GenerateGetName()
254 OS << " switch (Kind) {\n"; in GenerateGetName()
257 OS << " case " << Prefix << Rec.getFormattedName() << ":\n"; in GenerateGetName()
258 OS << " return \""; in GenerateGetName()
260 OS << Rec.getName(); in GenerateGetName()
262 OS << Rec.getAlternativeName(); in GenerateGetName()
263 OS << "\";\n"; in GenerateGetName()
265 OS << " }\n"; // switch in GenerateGetName()
266 OS << " llvm_unreachable(\"Invalid " << DirLang.getName() << " " << Enum in GenerateGetName()
268 OS << "}\n"; in GenerateGetName()
272 void GenerateGetKind(const std::vector<Record *> &Records, raw_ostream &OS, in GenerateGetKind() argument
286 OS << "\n"; in GenerateGetKind()
287 OS << Enum << " llvm::" << DirLang.getCppNamespace() << "::get" in GenerateGetKind()
289 OS << " return llvm::StringSwitch<" << Enum << ">(Str)\n"; in GenerateGetKind()
294 OS << " .Case(\"" << Rec.getName() << "\"," << Prefix in GenerateGetKind()
297 OS << " .Case(\"" << Rec.getName() << "\"," << Prefix in GenerateGetKind()
301 OS << " .Default(" << Prefix << DefaultRec.getFormattedName() << ");\n"; in GenerateGetKind()
302 OS << "}\n"; in GenerateGetKind()
307 raw_ostream &OS) { in GenerateGetKindClauseVal() argument
332 OS << "\n"; in GenerateGetKindClauseVal()
333 OS << EnumName << " llvm::" << DirLang.getCppNamespace() << "::get" in GenerateGetKindClauseVal()
335 OS << " return llvm::StringSwitch<" << EnumName << ">(Str)\n"; in GenerateGetKindClauseVal()
338 OS << " .Case(\"" << CVal.getFormattedName() << "\"," << CV->getName() in GenerateGetKindClauseVal()
341 OS << " .Default(" << DefaultName << ");\n"; in GenerateGetKindClauseVal()
342 OS << "}\n"; in GenerateGetKindClauseVal()
344 OS << "\n"; in GenerateGetKindClauseVal()
345 OS << "llvm::StringRef llvm::" << DirLang.getCppNamespace() << "::get" in GenerateGetKindClauseVal()
349 OS << " switch (x) {\n"; in GenerateGetKindClauseVal()
352 OS << " case " << CV->getName() << ":\n"; in GenerateGetKindClauseVal()
353 OS << " return \"" << CVal.getFormattedName() << "\";\n"; in GenerateGetKindClauseVal()
355 OS << " }\n"; // switch in GenerateGetKindClauseVal()
356 OS << " llvm_unreachable(\"Invalid " << DirLang.getName() << " " in GenerateGetKindClauseVal()
358 OS << "}\n"; in GenerateGetKindClauseVal()
363 raw_ostream &OS, StringRef DirectiveName, in GenerateCaseForVersionedClauses() argument
373 OS << " case " << DirLang.getClausePrefix() << ClauseFormattedName in GenerateCaseForVersionedClauses()
375 OS << " return " << VerClause.getMinVersion() in GenerateCaseForVersionedClauses()
383 raw_ostream &OS) { in GenerateIsAllowedClause() argument
384 OS << "\n"; in GenerateIsAllowedClause()
385 OS << "bool llvm::" << DirLang.getCppNamespace() in GenerateIsAllowedClause()
388 OS << " assert(unsigned(D) <= llvm::" << DirLang.getCppNamespace() in GenerateIsAllowedClause()
390 OS << " assert(unsigned(C) <= llvm::" << DirLang.getCppNamespace() in GenerateIsAllowedClause()
393 OS << " switch (D) {\n"; in GenerateIsAllowedClause()
398 OS << " case " << DirLang.getDirectivePrefix() << Dir.getFormattedName() in GenerateIsAllowedClause()
404 OS << " return false;\n"; in GenerateIsAllowedClause()
406 OS << " switch (C) {\n"; in GenerateIsAllowedClause()
410 GenerateCaseForVersionedClauses(Dir.getAllowedClauses(), OS, in GenerateIsAllowedClause()
413 GenerateCaseForVersionedClauses(Dir.getAllowedOnceClauses(), OS, in GenerateIsAllowedClause()
416 GenerateCaseForVersionedClauses(Dir.getAllowedExclusiveClauses(), OS, in GenerateIsAllowedClause()
419 GenerateCaseForVersionedClauses(Dir.getRequiredClauses(), OS, in GenerateIsAllowedClause()
422 OS << " default:\n"; in GenerateIsAllowedClause()
423 OS << " return false;\n"; in GenerateIsAllowedClause()
424 OS << " }\n"; // End of clauses switch in GenerateIsAllowedClause()
426 OS << " break;\n"; in GenerateIsAllowedClause()
429 OS << " }\n"; // End of directives switch in GenerateIsAllowedClause()
430 OS << " llvm_unreachable(\"Invalid " << DirLang.getName() in GenerateIsAllowedClause()
432 OS << "}\n"; // End of function isAllowedClauseForDirective in GenerateIsAllowedClause()
436 void GenerateClauseSet(const std::vector<Record *> &Clauses, raw_ostream &OS, in GenerateClauseSet() argument
440 OS << "\n"; in GenerateClauseSet()
441 OS << " static " << DirLang.getClauseEnumSetClass() << " " << ClauseSetPrefix in GenerateClauseSet()
446 OS << " llvm::" << DirLang.getCppNamespace() in GenerateClauseSet()
450 OS << " };\n"; in GenerateClauseSet()
455 raw_ostream &OS) { in GenerateDirectiveClauseSets() argument
457 IfDefScope Scope("GEN_FLANG_DIRECTIVE_CLAUSE_SETS", OS); in GenerateDirectiveClauseSets()
459 OS << "\n"; in GenerateDirectiveClauseSets()
460 OS << "namespace llvm {\n"; in GenerateDirectiveClauseSets()
466 OS << "namespace " << Ns << " {\n"; in GenerateDirectiveClauseSets()
471 OS << "\n"; in GenerateDirectiveClauseSets()
472 OS << " // Sets for " << Dir.getName() << "\n"; in GenerateDirectiveClauseSets()
474 GenerateClauseSet(Dir.getAllowedClauses(), OS, "allowedClauses_", Dir, in GenerateDirectiveClauseSets()
476 GenerateClauseSet(Dir.getAllowedOnceClauses(), OS, "allowedOnceClauses_", in GenerateDirectiveClauseSets()
478 GenerateClauseSet(Dir.getAllowedExclusiveClauses(), OS, in GenerateDirectiveClauseSets()
480 GenerateClauseSet(Dir.getRequiredClauses(), OS, "requiredClauses_", Dir, in GenerateDirectiveClauseSets()
486 OS << "} // namespace " << Ns << "\n"; in GenerateDirectiveClauseSets()
488 OS << "} // namespace llvm\n"; in GenerateDirectiveClauseSets()
495 raw_ostream &OS) { in GenerateDirectiveClauseMap() argument
497 IfDefScope Scope("GEN_FLANG_DIRECTIVE_CLAUSE_MAP", OS); in GenerateDirectiveClauseMap()
499 OS << "\n"; in GenerateDirectiveClauseMap()
500 OS << "{\n"; in GenerateDirectiveClauseMap()
504 OS << " {llvm::" << DirLang.getCppNamespace() in GenerateDirectiveClauseMap()
507 OS << " {\n"; in GenerateDirectiveClauseMap()
508 OS << " llvm::" << DirLang.getCppNamespace() << "::allowedClauses_" in GenerateDirectiveClauseMap()
510 OS << " llvm::" << DirLang.getCppNamespace() << "::allowedOnceClauses_" in GenerateDirectiveClauseMap()
512 OS << " llvm::" << DirLang.getCppNamespace() in GenerateDirectiveClauseMap()
515 OS << " llvm::" << DirLang.getCppNamespace() << "::requiredClauses_" in GenerateDirectiveClauseMap()
517 OS << " }\n"; in GenerateDirectiveClauseMap()
518 OS << " },\n"; in GenerateDirectiveClauseMap()
521 OS << "}\n"; in GenerateDirectiveClauseMap()
530 raw_ostream &OS) { in GenerateFlangClauseParserClass() argument
532 IfDefScope Scope("GEN_FLANG_CLAUSE_PARSER_CLASSES", OS); in GenerateFlangClauseParserClass()
534 OS << "\n"; in GenerateFlangClauseParserClass()
539 OS << "WRAPPER_CLASS(" << Clause.getFormattedParserClassName() << ", "; in GenerateFlangClauseParserClass()
541 OS << "std::optional<std::list<" << Clause.getFlangClass() << ">>"; in GenerateFlangClauseParserClass()
543 OS << "std::optional<" << Clause.getFlangClass() << ">"; in GenerateFlangClauseParserClass()
545 OS << "std::list<" << Clause.getFlangClass() << ">"; in GenerateFlangClauseParserClass()
547 OS << Clause.getFlangClass(); in GenerateFlangClauseParserClass()
550 OS << "EMPTY_CLASS(" << Clause.getFormattedParserClassName(); in GenerateFlangClauseParserClass()
552 OS << ");\n"; in GenerateFlangClauseParserClass()
558 raw_ostream &OS) { in GenerateFlangClauseParserClassList() argument
560 IfDefScope Scope("GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST", OS); in GenerateFlangClauseParserClassList()
562 OS << "\n"; in GenerateFlangClauseParserClassList()
563 llvm::interleaveComma(DirLang.getClauses(), OS, [&](Record *C) { in GenerateFlangClauseParserClassList()
565 OS << Clause.getFormattedParserClassName() << "\n"; in GenerateFlangClauseParserClassList()
571 raw_ostream &OS) { in GenerateFlangClauseDump() argument
573 IfDefScope Scope("GEN_FLANG_DUMP_PARSE_TREE_CLAUSES", OS); in GenerateFlangClauseDump()
575 OS << "\n"; in GenerateFlangClauseDump()
578 OS << "NODE(" << DirLang.getFlangClauseBaseClass() << ", " in GenerateFlangClauseDump()
586 raw_ostream &OS) { in GenerateFlangClauseUnparse() argument
588 IfDefScope Scope("GEN_FLANG_CLAUSE_UNPARSE", OS); in GenerateFlangClauseUnparse()
590 OS << "\n"; in GenerateFlangClauseUnparse()
596 OS << "void Unparse(const " << DirLang.getFlangClauseBaseClass() in GenerateFlangClauseUnparse()
598 OS << " Word(\"" << Clause.getName().upper() << "\");\n"; in GenerateFlangClauseUnparse()
600 OS << " Walk(\"(\", x.v, \")\");\n"; in GenerateFlangClauseUnparse()
601 OS << "}\n"; in GenerateFlangClauseUnparse()
603 OS << "void Unparse(const " << DirLang.getFlangClauseBaseClass() in GenerateFlangClauseUnparse()
605 OS << " Word(\"" << Clause.getName().upper() << "\");\n"; in GenerateFlangClauseUnparse()
606 OS << " Put(\"(\");\n"; in GenerateFlangClauseUnparse()
607 OS << " if (x.v.has_value())\n"; in GenerateFlangClauseUnparse()
609 OS << " Walk(x.v, \",\");\n"; in GenerateFlangClauseUnparse()
611 OS << " Walk(x.v);\n"; in GenerateFlangClauseUnparse()
612 OS << " else\n"; in GenerateFlangClauseUnparse()
613 OS << " Put(\"" << Clause.getDefaultValue() << "\");\n"; in GenerateFlangClauseUnparse()
614 OS << " Put(\")\");\n"; in GenerateFlangClauseUnparse()
615 OS << "}\n"; in GenerateFlangClauseUnparse()
617 OS << "void Unparse(const " << DirLang.getFlangClauseBaseClass() in GenerateFlangClauseUnparse()
619 OS << " Word(\"" << Clause.getName().upper() << "\");\n"; in GenerateFlangClauseUnparse()
620 OS << " Put(\"(\");\n"; in GenerateFlangClauseUnparse()
622 OS << " Walk(x.v, \",\");\n"; in GenerateFlangClauseUnparse()
624 OS << " Walk(x.v);\n"; in GenerateFlangClauseUnparse()
625 OS << " Put(\")\");\n"; in GenerateFlangClauseUnparse()
626 OS << "}\n"; in GenerateFlangClauseUnparse()
629 OS << "void Before(const " << DirLang.getFlangClauseBaseClass() in GenerateFlangClauseUnparse()
638 raw_ostream &OS) { in GenerateFlangClauseCheckPrototypes() argument
640 IfDefScope Scope("GEN_FLANG_CLAUSE_CHECK_ENTER", OS); in GenerateFlangClauseCheckPrototypes()
642 OS << "\n"; in GenerateFlangClauseCheckPrototypes()
645 OS << "void Enter(const parser::" << DirLang.getFlangClauseBaseClass() in GenerateFlangClauseCheckPrototypes()
653 raw_ostream &OS) { in GenerateFlangClauseParserKindMap() argument
655 IfDefScope Scope("GEN_FLANG_CLAUSE_PARSER_KIND_MAP", OS); in GenerateFlangClauseParserKindMap()
657 OS << "\n"; in GenerateFlangClauseParserKindMap()
660 OS << "if constexpr (std::is_same_v<A, parser::" in GenerateFlangClauseParserKindMap()
663 OS << ">)\n"; in GenerateFlangClauseParserKindMap()
664 OS << " return llvm::" << DirLang.getCppNamespace() in GenerateFlangClauseParserKindMap()
669 OS << "llvm_unreachable(\"Invalid " << DirLang.getName() in GenerateFlangClauseParserKindMap()
676 raw_ostream &OS) { in EmitDirectivesFlangImpl() argument
678 GenerateDirectiveClauseSets(DirLang, OS); in EmitDirectivesFlangImpl()
680 GenerateDirectiveClauseMap(DirLang, OS); in EmitDirectivesFlangImpl()
682 GenerateFlangClauseParserClass(DirLang, OS); in EmitDirectivesFlangImpl()
684 GenerateFlangClauseParserClassList(DirLang, OS); in EmitDirectivesFlangImpl()
686 GenerateFlangClauseDump(DirLang, OS); in EmitDirectivesFlangImpl()
688 GenerateFlangClauseUnparse(DirLang, OS); in EmitDirectivesFlangImpl()
690 GenerateFlangClauseCheckPrototypes(DirLang, OS); in EmitDirectivesFlangImpl()
692 GenerateFlangClauseParserKindMap(DirLang, OS); in EmitDirectivesFlangImpl()
696 raw_ostream &OS) { in GenerateClauseClassMacro() argument
698 IfDefScope Scope("GEN_CLANG_CLAUSE_CLASS", OS); in GenerateClauseClassMacro()
700 OS << "\n"; in GenerateClauseClassMacro()
702 OS << "#ifndef CLAUSE\n"; in GenerateClauseClassMacro()
703 OS << "#define CLAUSE(Enum, Str, Implicit)\n"; in GenerateClauseClassMacro()
704 OS << "#endif\n"; in GenerateClauseClassMacro()
705 OS << "#ifndef CLAUSE_CLASS\n"; in GenerateClauseClassMacro()
706 OS << "#define CLAUSE_CLASS(Enum, Str, Class)\n"; in GenerateClauseClassMacro()
707 OS << "#endif\n"; in GenerateClauseClassMacro()
708 OS << "#ifndef CLAUSE_NO_CLASS\n"; in GenerateClauseClassMacro()
709 OS << "#define CLAUSE_NO_CLASS(Enum, Str)\n"; in GenerateClauseClassMacro()
710 OS << "#endif\n"; in GenerateClauseClassMacro()
711 OS << "\n"; in GenerateClauseClassMacro()
712 OS << "#define __CLAUSE(Name, Class) \\\n"; in GenerateClauseClassMacro()
713 OS << " CLAUSE(" << DirLang.getClausePrefix() in GenerateClauseClassMacro()
715 OS << " CLAUSE_CLASS(" << DirLang.getClausePrefix() in GenerateClauseClassMacro()
717 OS << "#define __CLAUSE_NO_CLASS(Name) \\\n"; in GenerateClauseClassMacro()
718 OS << " CLAUSE(" << DirLang.getClausePrefix() in GenerateClauseClassMacro()
720 OS << " CLAUSE_NO_CLASS(" << DirLang.getClausePrefix() << "##Name, #Name)\n"; in GenerateClauseClassMacro()
721 OS << "#define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \\\n"; in GenerateClauseClassMacro()
722 OS << " CLAUSE(" << DirLang.getClausePrefix() in GenerateClauseClassMacro()
724 OS << " CLAUSE_CLASS(" << DirLang.getClausePrefix() in GenerateClauseClassMacro()
726 OS << "#define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \\\n"; in GenerateClauseClassMacro()
727 OS << " CLAUSE(" << DirLang.getClausePrefix() in GenerateClauseClassMacro()
729 OS << " CLAUSE_NO_CLASS(" << DirLang.getClausePrefix() << "##Name, Str)\n"; in GenerateClauseClassMacro()
730 OS << "\n"; in GenerateClauseClassMacro()
736 OS << "__IMPLICIT_CLAUSE_NO_CLASS(" << C.getFormattedName() << ", \"" in GenerateClauseClassMacro()
739 OS << "__CLAUSE_NO_CLASS(" << C.getFormattedName() << ")\n"; in GenerateClauseClassMacro()
743 OS << "__IMPLICIT_CLAUSE_CLASS(" << C.getFormattedName() << ", \"" in GenerateClauseClassMacro()
746 OS << "__CLAUSE(" << C.getFormattedName() << ", " << C.getClangClass() in GenerateClauseClassMacro()
752 OS << "\n"; in GenerateClauseClassMacro()
753 OS << "#undef __IMPLICIT_CLAUSE_NO_CLASS\n"; in GenerateClauseClassMacro()
754 OS << "#undef __IMPLICIT_CLAUSE_CLASS\n"; in GenerateClauseClassMacro()
755 OS << "#undef __CLAUSE\n"; in GenerateClauseClassMacro()
756 OS << "#undef CLAUSE_NO_CLASS\n"; in GenerateClauseClassMacro()
757 OS << "#undef CLAUSE_CLASS\n"; in GenerateClauseClassMacro()
758 OS << "#undef CLAUSE\n"; in GenerateClauseClassMacro()
764 raw_ostream &OS) { in EmitDirectivesBasicImpl() argument
765 IfDefScope Scope("GEN_DIRECTIVES_IMPL", OS); in EmitDirectivesBasicImpl()
768 GenerateGetKind(DirLang.getDirectives(), OS, "Directive", DirLang, in EmitDirectivesBasicImpl()
772 GenerateGetName(DirLang.getDirectives(), OS, "Directive", DirLang, in EmitDirectivesBasicImpl()
776 GenerateGetKind(DirLang.getClauses(), OS, "Clause", DirLang, in EmitDirectivesBasicImpl()
781 GenerateGetName(DirLang.getClauses(), OS, "Clause", DirLang, in EmitDirectivesBasicImpl()
785 GenerateGetKindClauseVal(DirLang, OS); in EmitDirectivesBasicImpl()
788 GenerateIsAllowedClause(DirLang, OS); in EmitDirectivesBasicImpl()
793 void EmitDirectivesImpl(RecordKeeper &Records, raw_ostream &OS) { in EmitDirectivesImpl() argument
798 EmitDirectivesFlangImpl(DirLang, OS); in EmitDirectivesImpl()
800 GenerateClauseClassMacro(DirLang, OS); in EmitDirectivesImpl()
802 EmitDirectivesBasicImpl(DirLang, OS); in EmitDirectivesImpl()