diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-03-18 21:28:47 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-03-18 21:28:47 +0000 |
commit | 3ac82fe490db6e63019992a59108af3a0632bba3 (patch) | |
tree | af1b9abf682275beb27d27c0a4867fd9f0aadb3c /utils/TableGen/ClangDiagnosticsEmitter.cpp | |
parent | 8b9d027701dbfe4e0dad8c0fd8a2fdc95e7bf7db (diff) | |
download | llvm-3ac82fe490db6e63019992a59108af3a0632bba3.tar.gz llvm-3ac82fe490db6e63019992a59108af3a0632bba3.tar.bz2 llvm-3ac82fe490db6e63019992a59108af3a0632bba3.tar.xz |
'tblgen -gen-clang-diags-options' now outputs the OptionTable:
static const WarningOption OptionTable[] = {
{"unused-macros", DIAGS(UnusedMacrosDiags)}
...
};
This table is not yet properly sorted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67242 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/ClangDiagnosticsEmitter.cpp')
-rw-r--r-- | utils/TableGen/ClangDiagnosticsEmitter.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/utils/TableGen/ClangDiagnosticsEmitter.cpp b/utils/TableGen/ClangDiagnosticsEmitter.cpp index a3f27ba75f..26ae608d88 100644 --- a/utils/TableGen/ClangDiagnosticsEmitter.cpp +++ b/utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -186,11 +186,6 @@ void ClangOptionsEmitter::run(std::ostream &OS) { // Iterate through the OptionMap and emit the declarations. for (OptionMap::iterator I = OM.begin(), E = OM.end(); I!=E; ++I) { -// const RecordVal *V = findRecordVal(*I->first, "Name"); -// assert(V && "Options must have a 'Name' value."); -// const StringInit* SV = dynamic_cast<const StringInit*>(V->getValue()); -// assert(SV && "'Name' entry must be a string."); - // Output the option. OS << "static const diag::kind " << I->first->getName() << "[] = { "; @@ -206,4 +201,23 @@ void ClangOptionsEmitter::run(std::ostream &OS) { } OS << " };\n"; } + + // Now emit the OptionTable table. + OS << "\nstatic const WarningOption OptionTable[] = {"; + bool first = true; + for (OptionMap::iterator I = OM.begin(), E = OM.end(); I!=E; ++I) { + const RecordVal *V = findRecordVal(*I->first, "Name"); + assert(V && "Options must have a 'Name' value."); + const StringInit* SV = dynamic_cast<const StringInit*>(V->getValue()); + assert(SV && "'Name' entry must be a string."); + + if (first) + first = false; + else + OS << ','; + + OS << "\n {\"" << SV->getValue() + << "\", DIAGS(" << I->first->getName() << ")}"; + } + OS << "\n};\n"; } |