summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp
diff options
context:
space:
mode:
authorGuillaume Papin <guillaume.papin@epitech.eu>2013-07-24 14:24:33 +0000
committerGuillaume Papin <guillaume.papin@epitech.eu>2013-07-24 14:24:33 +0000
commitebde78c4c6149dfd6dfcddd39ed07e5aec1860ed (patch)
treef7f8d701fa318b856bb99c801f0b3e62ed33873d /clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp
parent197af31aba9208e35b153d7f3caad8cc819d2ff2 (diff)
downloadbcm5719-llvm-ebde78c4c6149dfd6dfcddd39ed07e5aec1860ed.tar.gz
bcm5719-llvm-ebde78c4c6149dfd6dfcddd39ed07e5aec1860ed.zip
cpp11-migrate: Register the transforms automatically using llvm::Registry
With this change each transform now register a factory. The factories are registered using an llvm::Registry which makes them available globally. llvm-svn: 187041
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp')
-rw-r--r--clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp38
1 files changed, 16 insertions, 22 deletions
diff --git a/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp b/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp
index b5b6a410ab0..2ee4a069ff3 100644
--- a/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp
+++ b/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp
@@ -21,11 +21,6 @@
#include "Core/Transform.h"
#include "Core/Transforms.h"
#include "Core/Reformatting.h"
-#include "LoopConvert/LoopConvert.h"
-#include "UseNullptr/UseNullptr.h"
-#include "UseAuto/UseAuto.h"
-#include "AddOverride/AddOverride.h"
-#include "ReplaceAutoPtr/ReplaceAutoPtr.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Tooling.h"
@@ -156,23 +151,7 @@ int main(int argc, const char **argv) {
llvm::sys::PrintStackTraceOnErrorSignal();
Transforms TransformManager;
- TransformManager.registerTransform(
- "loop-convert", "Make use of range-based for loops where possible",
- &ConstructTransform<LoopConvertTransform>);
- TransformManager.registerTransform(
- "use-nullptr", "Make use of nullptr keyword where possible",
- &ConstructTransform<UseNullptrTransform>);
- TransformManager.registerTransform(
- "use-auto", "Use of 'auto' type specifier",
- &ConstructTransform<UseAutoTransform>);
- TransformManager.registerTransform(
- "add-override", "Make use of override specifier where possible",
- &ConstructTransform<AddOverrideTransform>);
- TransformManager.registerTransform(
- "replace-auto_ptr", "Replace auto_ptr (deprecated) by unique_ptr"
- " (EXPERIMENTAL)",
- &ConstructTransform<ReplaceAutoPtrTransform>);
- // Add more transform options here.
+ TransformManager.registerTransforms();
// This causes options to be parsed.
CommonOptionsParser OptionsParser(argc, argv);
@@ -293,3 +272,18 @@ int main(int argc, const char **argv) {
return 0;
}
+
+// These anchors are used to force the linker to link the transforms
+extern volatile int AddOverrideTransformAnchorSource;
+extern volatile int LoopConvertTransformAnchorSource;
+extern volatile int ReplaceAutoPtrTransformAnchorSource;
+extern volatile int UseAutoTransformAnchorSource;
+extern volatile int UseNullptrTransformAnchorSource;
+
+static int TransformsAnchorsDestination[] = {
+ AddOverrideTransformAnchorSource,
+ LoopConvertTransformAnchorSource,
+ ReplaceAutoPtrTransformAnchorSource,
+ UseAutoTransformAnchorSource,
+ UseNullptrTransformAnchorSource
+};
OpenPOWER on IntegriCloud