From a0ed8ca233e6099d434e9c80d9681057369db78f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 15 Apr 2009 22:33:02 +0000 Subject: [PATCH] make sure that empty diag groups get known by clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69235 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/ClangDiagnosticsEmitter.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/TableGen/ClangDiagnosticsEmitter.cpp b/utils/TableGen/ClangDiagnosticsEmitter.cpp index d0ca5a13d72..045eb7a47c6 100644 --- a/utils/TableGen/ClangDiagnosticsEmitter.cpp +++ b/utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -66,9 +66,8 @@ void ClangDiagGroupsEmitter::run(std::ostream &OS) { // groups to diags in the group. std::map > DiagsInGroup; - const std::vector &Diags = + std::vector Diags = Records.getAllDerivedDefinitions("Diagnostic"); - for (unsigned i = 0, e = Diags.size(); i != e; ++i) { const Record *R = Diags[i]; DefInit *DI = dynamic_cast(R->getValueInit("Group")); @@ -76,6 +75,13 @@ void ClangDiagGroupsEmitter::run(std::ostream &OS) { DiagsInGroup[DI->getDef()->getValueAsString("GroupName")].push_back(R); } + // Add all DiagGroup's to the DiagsInGroup list to make sure we pick up empty + // groups (these are warnings that GCC supports that clang never produces). + Diags = Records.getAllDerivedDefinitions("DiagGroup"); + for (unsigned i = 0, e = Diags.size(); i != e; ++i) { + DiagsInGroup[Diags[i]->getValueAsString("GroupName")]; + } + // Walk through the groups emitting an array for each diagnostic of the diags // that are mapped to. OS << "\n#ifdef GET_DIAG_ARRAYS\n";