diff options
| author | John McCall <rjmccall@apple.com> | 2011-06-15 21:43:52 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2011-06-15 21:43:52 +0000 |
| commit | 7cfd1cfa86b7bf8c54bfa1d441a40f50867673cb (patch) | |
| tree | 9bdb5e8fad28f23faf4333c1e421906e9cbe2d27 | |
| parent | 5b67ca8cc4b26e0ccaf62df782768c19433b67be (diff) | |
| download | bcm5719-llvm-7cfd1cfa86b7bf8c54bfa1d441a40f50867673cb.tar.gz bcm5719-llvm-7cfd1cfa86b7bf8c54bfa1d441a40f50867673cb.zip | |
Update the Clang diagnostic emitter to emit IDs for diagnostic categories.
Patch by Argyrios Kyrtzidis.
llvm-svn: 133093
| -rw-r--r-- | llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp b/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp index acaa1f8f8f5..0a48e75681f 100644 --- a/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp +++ b/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -18,6 +18,7 @@ #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringMap.h" +#include "llvm/ADT/SmallString.h" #include "llvm/ADT/VectorExtras.h" #include <map> #include <algorithm> @@ -195,6 +196,15 @@ void ClangDiagsDefsEmitter::run(raw_ostream &OS) { // Warning Group Tables generation //===----------------------------------------------------------------------===// +static std::string getDiagCategoryEnum(llvm::StringRef name) { + if (name.empty()) + return "DiagCat_None"; + llvm::SmallString<256> enumName = llvm::StringRef("DiagCat_"); + for (llvm::StringRef::iterator I = name.begin(), E = name.end(); I != E; ++I) + enumName += isalnum(*I) ? *I : '_'; + return enumName.str(); +} + namespace { struct GroupInfo { std::vector<const Record*> DiagsInGroup; @@ -301,7 +311,7 @@ void ClangDiagGroupsEmitter::run(raw_ostream &OS) { OS << "\n#ifdef GET_CATEGORY_TABLE\n"; for (DiagCategoryIDMap::iterator I = CategoriesByID.begin(), E = CategoriesByID.end(); I != E; ++I) - OS << "CATEGORY(\"" << *I << "\")\n"; + OS << "CATEGORY(\"" << *I << "\", " << getDiagCategoryEnum(*I) << ")\n"; OS << "#endif // GET_CATEGORY_TABLE\n\n"; } |

