'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
This commit is contained in:
Ted Kremenek 2009-03-18 21:28:47 +00:00
parent 8b9d027701
commit 3ac82fe490

View File

@ -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";
}