reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/utils/TableGen/ClangAttrEmitter.cpp
 3016   emitSourceFileHeader("Code to implement the __has_attribute logic", OS);
 3045   OS << "const llvm::Triple &T = Target.getTriple();\n";
 3046   OS << "switch (Syntax) {\n";
 3047   OS << "case AttrSyntax::GNU:\n";
 3048   OS << "  return llvm::StringSwitch<int>(Name)\n";
 3049   GenerateHasAttrSpellingStringSwitch(GNU, OS, "GNU");
 3050   OS << "case AttrSyntax::Declspec:\n";
 3051   OS << "  return llvm::StringSwitch<int>(Name)\n";
 3052   GenerateHasAttrSpellingStringSwitch(Declspec, OS, "Declspec");
 3053   OS << "case AttrSyntax::Microsoft:\n";
 3054   OS << "  return llvm::StringSwitch<int>(Name)\n";
 3055   GenerateHasAttrSpellingStringSwitch(Microsoft, OS, "Microsoft");
 3056   OS << "case AttrSyntax::Pragma:\n";
 3057   OS << "  return llvm::StringSwitch<int>(Name)\n";
 3058   GenerateHasAttrSpellingStringSwitch(Pragma, OS, "Pragma");
 3059   auto fn = [&OS](const char *Spelling, const char *Variety,
 3061     OS << "case AttrSyntax::" << Variety << ": {\n";
 3065         OS << " else ";
 3067         OS << "if (ScopeName == \"\") {\n";
 3069         OS << "if (ScopeName == \"" << I->first << "\") {\n";
 3070       OS << "  return llvm::StringSwitch<int>(Name)\n";
 3071       GenerateHasAttrSpellingStringSwitch(I->second, OS, Spelling, I->first);
 3072       OS << "}";
 3074     OS << "\n} break;\n";
 3078   OS << "}\n";