diff options
author | Edwin Vane <edwin.vane@intel.com> | 2013-04-05 19:18:13 +0000 |
---|---|---|
committer | Edwin Vane <edwin.vane@intel.com> | 2013-04-05 19:18:13 +0000 |
commit | 6b191b0195f1c2cf1b048662d0777ae8456070fc (patch) | |
tree | fc4317cd3a478a36f1d73bb4a35d97561af048a5 | |
parent | 97a10e9f0461cf8e8e71f8b02dd354b446d8d2f1 (diff) | |
download | bcm5719-llvm-6b191b0195f1c2cf1b048662d0777ae8456070fc.tar.gz bcm5719-llvm-6b191b0195f1c2cf1b048662d0777ae8456070fc.zip |
Fix symbol dependency errors introduced with libmigrateCore
With cpp11-migrate core functionality moved to a separate library (for enabling
unit tests) this library contained code that referenced symbols that are still
in the main binary. On some platforms, the shared library build broke as a
result. This revision fixes the dependency problem and is safe for the eventual
lib-ification of the transforms as well.
llvm-svn: 178901
-rw-r--r-- | clang-tools-extra/cpp11-migrate/Core/Transforms.cpp | 34 | ||||
-rw-r--r-- | clang-tools-extra/cpp11-migrate/Core/Transforms.h | 13 | ||||
-rw-r--r-- | clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp | 14 |
3 files changed, 29 insertions, 32 deletions
diff --git a/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp b/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp index 720d3880964..d7eae694870 100644 --- a/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp +++ b/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp @@ -13,17 +13,10 @@ //===----------------------------------------------------------------------===// #include "Core/Transforms.h" -#include "LoopConvert/LoopConvert.h" -#include "UseNullptr/UseNullptr.h" -#include "UseAuto/UseAuto.h" +#include "Core/Transform.h" namespace cl = llvm::cl; -template <typename T> -Transform *ConstructTransform() { - return new T(); -} - Transforms::~Transforms() { for (std::vector<Transform*>::iterator I = ChosenTransforms.begin(), E = ChosenTransforms.end(); I != E; ++I) { @@ -35,26 +28,11 @@ Transforms::~Transforms() { } } -void Transforms::createTransformOpts() { - Options.push_back( - OptionVec::value_type( - new cl::opt<bool>("loop-convert", - cl::desc("Make use of range-based for loops where possible")), - &ConstructTransform<LoopConvertTransform>)); - - Options.push_back( - OptionVec::value_type( - new cl::opt<bool>("use-nullptr", - cl::desc("Make use of nullptr keyword where possible")), - &ConstructTransform<UseNullptrTransform>)); - - Options.push_back( - OptionVec::value_type( - new cl::opt<bool>("use-auto", - cl::desc("Use of 'auto' type specifier")), - &ConstructTransform<UseAutoTransform>)); - - // Add more transform options here. +void Transforms::registerTransform(llvm::StringRef OptName, + llvm::StringRef Description, + TransformCreator Creator) { + Options.push_back(OptionVec::value_type( + new cl::opt<bool>(OptName.data(), cl::desc(Description.data())), Creator)); } void Transforms::createSelectedTransforms() { diff --git a/clang-tools-extra/cpp11-migrate/Core/Transforms.h b/clang-tools-extra/cpp11-migrate/Core/Transforms.h index e660ccf9207..67e38b025c8 100644 --- a/clang-tools-extra/cpp11-migrate/Core/Transforms.h +++ b/clang-tools-extra/cpp11-migrate/Core/Transforms.h @@ -17,6 +17,7 @@ #define LLVM_TOOLS_CLANG_TOOLS_EXTRA_CPP11_MIGRATE_TRANSFORMS_H #include "llvm/Support/CommandLine.h" +#include "llvm/ADT/StringRef.h" #include <vector> // Forward declarations @@ -28,6 +29,10 @@ class Option; class Transform; typedef Transform *(*TransformCreator)(); +template <typename T> +Transform *ConstructTransform() { + return new T(); +} /// \brief Class encapsulating the creation of command line bool options /// for each transform and instantiating transforms chosen by the user. @@ -40,10 +45,12 @@ public: ~Transforms(); - /// \brief Create command line options using LLVM's command line library. + /// \brief Registers a transform causing the transform to be made available + /// on the command line. /// - /// Be sure to call *before* parsing options. - void createTransformOpts(); + /// Be sure to register all transforms *before* parsing command line options. + void registerTransform(llvm::StringRef OptName, llvm::StringRef Description, + TransformCreator Creator); /// \brief Instantiate all transforms that were selected on the command line. /// diff --git a/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp b/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp index d8789466189..bddfe31c846 100644 --- a/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp +++ b/clang-tools-extra/cpp11-migrate/tool/Cpp11Migrate.cpp @@ -17,6 +17,9 @@ #include "Core/Transforms.h" #include "Core/Transform.h" +#include "LoopConvert/LoopConvert.h" +#include "UseNullptr/UseNullptr.h" +#include "UseAuto/UseAuto.h" #include "clang/Frontend/FrontendActions.h" #include "clang/Tooling/CommonOptionsParser.h" #include "clang/Tooling/Tooling.h" @@ -59,7 +62,16 @@ int main(int argc, const char **argv) { llvm::sys::PrintStackTraceOnErrorSignal(); Transforms TransformManager; - TransformManager.createTransformOpts(); + 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>); + // Add more transform options here. // This causes options to be parsed. CommonOptionsParser OptionsParser(argc, argv); |