]> granicus.if.org Git - llvm/commitdiff
Revert r305313 & r305303, self-hosting build-bot isn’t liking it.
authorFrederich Munch <colsebas@hotmail.com>
Tue, 13 Jun 2017 19:05:24 +0000 (19:05 +0000)
committerFrederich Munch <colsebas@hotmail.com>
Tue, 13 Jun 2017 19:05:24 +0000 (19:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305318 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/IPO/PassManagerBuilder.h
lib/Transforms/IPO/PassManagerBuilder.cpp
unittests/Support/DynamicLibrary/CMakeLists.txt
unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
unittests/Support/DynamicLibrary/PipSqueak.cxx

index ac25c7fef260608ea1fbc9323257ae19f7f0f4b3..247382c35eebfd82fc5e930a48ef139c0118d245 100644 (file)
@@ -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<ExtensionProc> ExtensionFn;
-
+  typedef std::function<void(const PassManagerBuilder &Builder,
+                             legacy::PassManagerBase &PM)>
+      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));
   }
 };
 
index 90a18d76d6923d4131022dc5f61e36771696a694..4bc64ab698ff9b4e44dfb9a4b034d215e9d30508 100644 (file)
@@ -198,9 +198,10 @@ PassManagerBuilder::~PassManagerBuilder() {
 static ManagedStatic<SmallVector<std::pair<PassManagerBuilder::ExtensionPointTy,
    PassManagerBuilder::ExtensionFn>, 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) {
index e8441d962493d617e72a9c0ad706ec01f4c264d1..b5844381362e3f29cbfb5b22d98c18271123a9da 100644 (file)
@@ -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)
index 5730d610cdfff33f29c03a6e24bbdd65610e7022..c54e1b7eed24d0f6659b4bf54f17bf97fe9e2651 100644 (file)
@@ -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 <class T> 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<TestPassReg>(DL.getAddressOfSymbol("TestPassReg"));
-  RP(&PassManagerBuilder::addGlobalExtension);
-}
-
 static const char *OverloadTestA() { return "OverloadCall"; }
 
 std::string StdString(const char *Ptr) { return Ptr ? Ptr : ""; }
index 0c2ec0010afd9ce776281b1465614682128c2308..375d72c0b535f4fc785e736e5969c4c4cd1dc1da 100644 (file)
@@ -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<std::string> &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"