summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
authorCaitlin Sadowski <supertri@google.com>2011-09-08 17:40:49 +0000
committerCaitlin Sadowski <supertri@google.com>2011-09-08 17:40:49 +0000
commitf774712782d69d8affff56453f0bea30d9d591e4 (patch)
treefb313324d4d133863876363c84d0902e0833ffb5 /llvm/utils
parentdc28ba12e1c0e09503607e3b092fca0ff91feec3 (diff)
downloadbcm5719-llvm-f774712782d69d8affff56453f0bea30d9d591e4.tar.gz
bcm5719-llvm-f774712782d69d8affff56453f0bea30d9d591e4.zip
Added LateParsed property to TableGen attributes.
This patch was written by DeLesley Hutchins. llvm-svn: 139300
Diffstat (limited to 'llvm/utils')
-rw-r--r--llvm/utils/TableGen/ClangAttrEmitter.cpp23
-rw-r--r--llvm/utils/TableGen/ClangAttrEmitter.h13
-rw-r--r--llvm/utils/TableGen/TableGen.cpp7
3 files changed, 43 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/ClangAttrEmitter.cpp b/llvm/utils/TableGen/ClangAttrEmitter.cpp
index 6ef25d9a3ac..e01f36442ad 100644
--- a/llvm/utils/TableGen/ClangAttrEmitter.cpp
+++ b/llvm/utils/TableGen/ClangAttrEmitter.cpp
@@ -758,3 +758,26 @@ void ClangAttrSpellingListEmitter::run(raw_ostream &OS) {
}
}
+
+void ClangAttrLateParsedListEmitter::run(raw_ostream &OS) {
+ OS << "// This file is generated by TableGen. Do not edit.\n\n";
+
+ std::vector<Record*> Attrs = Records.getAllDerivedDefinitions("Attr");
+
+ for (std::vector<Record*>::iterator I = Attrs.begin(), E = Attrs.end();
+ I != E; ++I) {
+ Record &Attr = **I;
+
+ bool LateParsed = Attr.getValueAsBit("LateParsed");
+
+ if (LateParsed) {
+ std::vector<StringRef> Spellings =
+ getValueAsListOfStrings(Attr, "Spellings");
+
+ for (std::vector<StringRef>::const_iterator I = Spellings.begin(),
+ E = Spellings.end(); I != E; ++I) {
+ OS << ".Case(\"" << (*I) << "\", " << LateParsed << ")\n";
+ }
+ }
+ }
+}
diff --git a/llvm/utils/TableGen/ClangAttrEmitter.h b/llvm/utils/TableGen/ClangAttrEmitter.h
index af870098a84..d6c00d6e23a 100644
--- a/llvm/utils/TableGen/ClangAttrEmitter.h
+++ b/llvm/utils/TableGen/ClangAttrEmitter.h
@@ -96,6 +96,19 @@ class ClangAttrSpellingListEmitter : public TableGenBackend {
void run(raw_ostream &OS);
};
+/// ClangAttrLateParsedListEmitter emits the LateParsed property for attributes
+/// for clang.
+class ClangAttrLateParsedListEmitter : public TableGenBackend {
+ RecordKeeper &Records;
+
+ public:
+ explicit ClangAttrLateParsedListEmitter(RecordKeeper &R)
+ : Records(R)
+ {}
+
+ void run(raw_ostream &OS);
+};
+
}
#endif
diff --git a/llvm/utils/TableGen/TableGen.cpp b/llvm/utils/TableGen/TableGen.cpp
index 372c40b1a0c..4b0f91a873b 100644
--- a/llvm/utils/TableGen/TableGen.cpp
+++ b/llvm/utils/TableGen/TableGen.cpp
@@ -68,6 +68,7 @@ enum ActionType {
GenClangAttrPCHRead,
GenClangAttrPCHWrite,
GenClangAttrSpellingList,
+ GenClangAttrLateParsedList,
GenClangDiagsDefs,
GenClangDiagGroups,
GenClangDiagsIndexName,
@@ -139,6 +140,9 @@ namespace {
clEnumValN(GenClangAttrSpellingList,
"gen-clang-attr-spelling-list",
"Generate a clang attribute spelling list"),
+ clEnumValN(GenClangAttrLateParsedList,
+ "gen-clang-attr-late-parsed-list",
+ "Generate a clang attribute LateParsed list"),
clEnumValN(GenClangDiagsDefs, "gen-clang-diags-defs",
"Generate Clang diagnostics definitions"),
clEnumValN(GenClangDiagGroups, "gen-clang-diag-groups",
@@ -296,6 +300,9 @@ int main(int argc, char **argv) {
case GenClangAttrSpellingList:
ClangAttrSpellingListEmitter(Records).run(Out.os());
break;
+ case GenClangAttrLateParsedList:
+ ClangAttrLateParsedListEmitter(Records).run(Out.os());
+ break;
case GenClangDiagsDefs:
ClangDiagsDefsEmitter(Records, ClangComponent).run(Out.os());
break;
OpenPOWER on IntegriCloud