mirror of https://github.com/microsoft/clang.git
[clang-tblgen] Add -print-records and -dump-json modes.
Currently, if clang-tblgen is run without a mode option, it defaults to the first mode in its 'enum Action', which happens to be -gen-clang-attr-classes. I think it makes more sense for it to behave the same way as llvm-tblgen, i.e. print a diagnostic dump if it's not given any more specific instructions. I've also added the same -dump-json that llvm-tblgen supports. This means any tblgen command line (whether llvm- or clang-) can be mechanically turned into one that processes the same input into JSON. Reviewers: nhaehnle Reviewed By: nhaehnle Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D50771 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@340390 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f30eaa88ef
commit
30d47f64ec
|
@ -23,6 +23,8 @@ using namespace llvm;
|
||||||
using namespace clang;
|
using namespace clang;
|
||||||
|
|
||||||
enum ActionType {
|
enum ActionType {
|
||||||
|
PrintRecords,
|
||||||
|
DumpJSON,
|
||||||
GenClangAttrClasses,
|
GenClangAttrClasses,
|
||||||
GenClangAttrParserStringSwitches,
|
GenClangAttrParserStringSwitches,
|
||||||
GenClangAttrSubjectMatchRulesParserStringSwitches,
|
GenClangAttrSubjectMatchRulesParserStringSwitches,
|
||||||
|
@ -66,6 +68,10 @@ namespace {
|
||||||
cl::opt<ActionType> Action(
|
cl::opt<ActionType> Action(
|
||||||
cl::desc("Action to perform:"),
|
cl::desc("Action to perform:"),
|
||||||
cl::values(
|
cl::values(
|
||||||
|
clEnumValN(PrintRecords, "print-records",
|
||||||
|
"Print all records to stdout (default)"),
|
||||||
|
clEnumValN(DumpJSON, "dump-json",
|
||||||
|
"Dump all records as machine-readable JSON"),
|
||||||
clEnumValN(GenClangAttrClasses, "gen-clang-attr-classes",
|
clEnumValN(GenClangAttrClasses, "gen-clang-attr-classes",
|
||||||
"Generate clang attribute clases"),
|
"Generate clang attribute clases"),
|
||||||
clEnumValN(GenClangAttrParserStringSwitches,
|
clEnumValN(GenClangAttrParserStringSwitches,
|
||||||
|
@ -164,6 +170,12 @@ ClangComponent("clang-component",
|
||||||
|
|
||||||
bool ClangTableGenMain(raw_ostream &OS, RecordKeeper &Records) {
|
bool ClangTableGenMain(raw_ostream &OS, RecordKeeper &Records) {
|
||||||
switch (Action) {
|
switch (Action) {
|
||||||
|
case PrintRecords:
|
||||||
|
OS << Records; // No argument, dump all contents
|
||||||
|
break;
|
||||||
|
case DumpJSON:
|
||||||
|
EmitJSON(Records, OS);
|
||||||
|
break;
|
||||||
case GenClangAttrClasses:
|
case GenClangAttrClasses:
|
||||||
EmitClangAttrClass(Records, OS);
|
EmitClangAttrClass(Records, OS);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue