From: Frederich Munch Date: Tue, 13 Jun 2017 19:05:24 +0000 (+0000) Subject: Revert r305313 & r305303, self-hosting build-bot isn’t liking it. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3490cf03bd6298ad7bb5c88741516de3b0e48b1b;p=llvm Revert r305313 & r305303, self-hosting build-bot isn’t liking it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305318 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Transforms/IPO/PassManagerBuilder.h b/include/llvm/Transforms/IPO/PassManagerBuilder.h index ac25c7fef26..247382c35ee 100644 --- a/include/llvm/Transforms/IPO/PassManagerBuilder.h +++ b/include/llvm/Transforms/IPO/PassManagerBuilder.h @@ -60,10 +60,9 @@ class PassManagerBuilder { public: /// Extensions are passed the builder itself (so they can see how it is /// configured) as well as the pass manager to add stuff to. - typedef void ExtensionProc(const PassManagerBuilder &Builder, - legacy::PassManagerBase &PM); - typedef std::function ExtensionFn; - + typedef std::function + ExtensionFn; enum ExtensionPointTy { /// EP_EarlyAsPossible - This extension point allows adding passes before /// any other transformations, allowing them to see the code as it is coming @@ -180,7 +179,7 @@ public: /// Adds an extension that will be used by all PassManagerBuilder instances. /// This is intended to be used by plugins, to register a set of /// optimisations to run automatically. - static void addGlobalExtension(ExtensionPointTy Ty, ExtensionProc Fn); + static void addGlobalExtension(ExtensionPointTy Ty, ExtensionFn Fn); void addExtension(ExtensionPointTy Ty, ExtensionFn Fn); private: @@ -209,12 +208,10 @@ public: /// used by optimizer plugins to allow all front ends to transparently use /// them. Create a static instance of this class in your plugin, providing a /// private function that the PassManagerBuilder can use to add your passes. -/// Currently limited to real functions to avoid crashes when used within the -/// main executable before a loaded plugin has a chance to use this. struct RegisterStandardPasses { RegisterStandardPasses(PassManagerBuilder::ExtensionPointTy Ty, - PassManagerBuilder::ExtensionProc Fn) { - PassManagerBuilder::addGlobalExtension(Ty, Fn); + PassManagerBuilder::ExtensionFn Fn) { + PassManagerBuilder::addGlobalExtension(Ty, std::move(Fn)); } }; diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp index 90a18d76d69..4bc64ab698f 100644 --- a/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -198,9 +198,10 @@ PassManagerBuilder::~PassManagerBuilder() { static ManagedStatic, 8> > GlobalExtensions; -void PassManagerBuilder::addGlobalExtension(ExtensionPointTy Ty, - ExtensionProc Fn) { - GlobalExtensions->push_back(std::make_pair(Ty, Fn)); +void PassManagerBuilder::addGlobalExtension( + PassManagerBuilder::ExtensionPointTy Ty, + PassManagerBuilder::ExtensionFn Fn) { + GlobalExtensions->push_back(std::make_pair(Ty, std::move(Fn))); } void PassManagerBuilder::addExtension(ExtensionPointTy Ty, ExtensionFn Fn) { diff --git a/unittests/Support/DynamicLibrary/CMakeLists.txt b/unittests/Support/DynamicLibrary/CMakeLists.txt index e8441d96249..b5844381362 100644 --- a/unittests/Support/DynamicLibrary/CMakeLists.txt +++ b/unittests/Support/DynamicLibrary/CMakeLists.txt @@ -1,4 +1,4 @@ -set(LLVM_LINK_COMPONENTS Support IPO) +set(LLVM_LINK_COMPONENTS Support) add_library(DynamicLibraryLib STATIC ExportedFuncs.cxx) @@ -20,7 +20,6 @@ function(dynlib_add_module NAME) ) add_dependencies(DynamicLibraryTests ${NAME}) - llvm_update_compile_flags(${NAME}) endfunction(dynlib_add_module) dynlib_add_module(PipSqueak) diff --git a/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp b/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp index 5730d610cdf..c54e1b7eed2 100644 --- a/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp +++ b/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp @@ -12,7 +12,6 @@ #include "llvm/Support/FileSystem.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Path.h" -#include "llvm/Transforms/IPO/PassManagerBuilder.h" #include "gtest/gtest.h" #include "PipSqueak.h" @@ -53,28 +52,6 @@ template static void* PtrFunc(T *Func) { return Tmp.P; } -static void -NoPassRegistration(const PassManagerBuilder &, legacy::PassManagerBase &) { -} - -static RegisterStandardPasses LocalPass(PassManagerBuilder::EP_LoopOptimizerEnd, - NoPassRegistration); - -typedef void (*TestPassReg)(void (*)(PassManagerBuilder::ExtensionPointTy, - PassManagerBuilder::ExtensionProc)); - -TEST(DynamicLibrary, PassRegistration) { - std::string Err; - llvm_shutdown_obj Shutdown; - DynamicLibrary DL = - DynamicLibrary::getPermanentLibrary(LibPath().c_str(), &Err); - EXPECT_TRUE(DL.isValid()); - EXPECT_TRUE(Err.empty()); - - TestPassReg RP = FuncPtr(DL.getAddressOfSymbol("TestPassReg")); - RP(&PassManagerBuilder::addGlobalExtension); -} - static const char *OverloadTestA() { return "OverloadCall"; } std::string StdString(const char *Ptr) { return Ptr ? Ptr : ""; } diff --git a/unittests/Support/DynamicLibrary/PipSqueak.cxx b/unittests/Support/DynamicLibrary/PipSqueak.cxx index 0c2ec0010af..375d72c0b53 100644 --- a/unittests/Support/DynamicLibrary/PipSqueak.cxx +++ b/unittests/Support/DynamicLibrary/PipSqueak.cxx @@ -8,10 +8,6 @@ //===----------------------------------------------------------------------===// #include "PipSqueak.h" -#include "llvm/Transforms/IPO/PassManagerBuilder.h" - -#define PIPSQUEAK_TESTA_RETURN "LibCall" -#include "ExportedFuncs.cxx" struct Global { std::string *Str; @@ -49,13 +45,5 @@ extern "C" PIPSQUEAK_EXPORT void TestOrder(std::vector &V) { Glb.Vec = &V; } - -static void LibPassRegistration(const llvm::PassManagerBuilder &, - llvm::legacy::PassManagerBase &) {} - -extern "C" PIPSQUEAK_EXPORT void TestPassReg( - void (*addGlobalExtension)(llvm::PassManagerBuilder::ExtensionPointTy, - llvm::PassManagerBuilder::ExtensionProc)) { - addGlobalExtension(llvm::PassManagerBuilder::EP_EarlyAsPossible, - LibPassRegistration); -} +#define PIPSQUEAK_TESTA_RETURN "LibCall" +#include "ExportedFuncs.cxx"