[cfe-commits] r137406 - in /cfe/trunk/tools/diagtool: DiagTool.cpp DiagTool.h ListWarnings.cpp diagtool_main.cpp
Nick Lewycky
nicholas at mxc.ca
Thu Aug 11 18:14:22 PDT 2011
Author: nicholas
Date: Thu Aug 11 20:14:22 2011
New Revision: 137406
URL: http://llvm.org/viewvc/llvm-project?rev=137406&view=rev
Log:
The diagtool registration system tries to use a global variable from a method
called on another global variable. Use ManagedStatic to ensure that the global
we register with actually exists when we need it.
Modified:
cfe/trunk/tools/diagtool/DiagTool.cpp
cfe/trunk/tools/diagtool/DiagTool.h
cfe/trunk/tools/diagtool/ListWarnings.cpp
cfe/trunk/tools/diagtool/diagtool_main.cpp
Modified: cfe/trunk/tools/diagtool/DiagTool.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/DiagTool.cpp?rev=137406&r1=137405&r2=137406&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/DiagTool.cpp (original)
+++ cfe/trunk/tools/diagtool/DiagTool.cpp Thu Aug 11 20:14:22 2011
@@ -64,5 +64,5 @@
}
namespace diagtool {
- DiagTools diagTools;
+ llvm::ManagedStatic<DiagTools> diagTools;
}
Modified: cfe/trunk/tools/diagtool/DiagTool.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/DiagTool.h?rev=137406&r1=137405&r2=137406&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/DiagTool.h (original)
+++ cfe/trunk/tools/diagtool/DiagTool.h Thu Aug 11 20:14:22 2011
@@ -16,6 +16,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/Support/ManagedStatic.h"
#include <string>
@@ -45,12 +46,12 @@
void printCommands(llvm::raw_ostream &out);
};
-extern DiagTools diagTools;
-
+extern llvm::ManagedStatic<DiagTools> diagTools;
+
template <typename DIAGTOOL>
class RegisterDiagTool {
public:
- RegisterDiagTool() { diagTools.registerTool(new DIAGTOOL()); }
+ RegisterDiagTool() { diagTools->registerTool(new DIAGTOOL()); }
};
} // end diagtool namespace
Modified: cfe/trunk/tools/diagtool/ListWarnings.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/ListWarnings.cpp?rev=137406&r1=137405&r2=137406&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/ListWarnings.cpp (original)
+++ cfe/trunk/tools/diagtool/ListWarnings.cpp Thu Aug 11 20:14:22 2011
@@ -50,7 +50,7 @@
llvm::IntrusiveRefCntPtr<DiagnosticIDs> Diags(new DiagnosticIDs);
Diagnostic D(Diags);
- std::vector<Entry> Flagged, Unflagged;;
+ std::vector<Entry> Flagged, Unflagged;
llvm::StringMap<std::vector<unsigned> > flagHistogram;
for (DiagnosticIDs::diag_iterator di = DiagnosticIDs::diags_begin(),
Modified: cfe/trunk/tools/diagtool/diagtool_main.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/diagtool_main.cpp?rev=137406&r1=137405&r2=137406&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/diagtool_main.cpp (original)
+++ cfe/trunk/tools/diagtool/diagtool_main.cpp Thu Aug 11 20:14:22 2011
@@ -17,10 +17,10 @@
int main(int argc, char *argv[]) {
if (argc > 1)
- if (DiagTool *tool = diagTools.getTool(argv[1]))
+ if (DiagTool *tool = diagTools->getTool(argv[1]))
return tool->run(argc - 1, &argv[2], llvm::errs());
llvm::errs() << "usage: diagtool <command> [<args>]\n\n";
- diagTools.printCommands(llvm::errs());
+ diagTools->printCommands(llvm::errs());
return 1;
}
More information about the cfe-commits
mailing list