[llvm] r208904 - Revert "[PM] Add pass run listeners to the pass manager."

Juergen Ributzka juergen at apple.com
Thu May 15 10:49:21 PDT 2014


Author: ributzka
Date: Thu May 15 12:49:20 2014
New Revision: 208904

URL: http://llvm.org/viewvc/llvm-project?rev=208904&view=rev
Log:
Revert "[PM] Add pass run listeners to the pass manager."

Revert the current implementation and C API. New implementation and C APIs are
in the works.

Modified:
    llvm/trunk/include/llvm-c/Core.h
    llvm/trunk/include/llvm/IR/LLVMContext.h
    llvm/trunk/include/llvm/Pass.h
    llvm/trunk/include/llvm/PassSupport.h
    llvm/trunk/lib/IR/Core.cpp
    llvm/trunk/lib/IR/LLVMContext.cpp
    llvm/trunk/lib/IR/LLVMContextImpl.cpp
    llvm/trunk/lib/IR/LLVMContextImpl.h
    llvm/trunk/lib/IR/LegacyPassManager.cpp
    llvm/trunk/lib/IR/Pass.cpp
    llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp

Modified: llvm/trunk/include/llvm-c/Core.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/include/llvm-c/Core.h (original)
+++ llvm/trunk/include/llvm-c/Core.h Thu May 15 12:49:20 2014
@@ -112,23 +112,12 @@ typedef struct LLVMOpaqueBuilder *LLVMBu
  */
 typedef struct LLVMOpaqueModuleProvider *LLVMModuleProviderRef;
 
-/** @see llvm::Pass */
-typedef struct LLVMOpaquePass *LLVMPassRef;
-
 /** @see llvm::PassManagerBase */
 typedef struct LLVMOpaquePassManager *LLVMPassManagerRef;
 
 /** @see llvm::PassRegistry */
 typedef struct LLVMOpaquePassRegistry *LLVMPassRegistryRef;
 
-/** @see llvm::PassRunListener */
-typedef struct LLVMOpaquePassRunListener *LLVMPassRunListenerRef;
-
-/** @see llvm::LLVMPassRunListener */
-typedef void (*LLVMPassRunListenerHandlerTy)(LLVMContextRef, LLVMPassRef,
-                                             LLVMModuleRef, LLVMValueRef,
-                                             LLVMBasicBlockRef);
-
 /**
  * Used to get the users and usees of a Value.
  *
@@ -526,10 +515,6 @@ unsigned LLVMGetMDKindIDInContext(LLVMCo
                                   unsigned SLen);
 unsigned LLVMGetMDKindID(const char* Name, unsigned SLen);
 
-LLVMPassRunListenerRef LLVMAddPassRunListener(LLVMContextRef,
-                                              LLVMPassRunListenerHandlerTy);
-void LLVMRemovePassRunListener(LLVMContextRef, LLVMPassRunListenerRef);
-
 /**
  * @}
  */
@@ -2777,18 +2762,6 @@ void LLVMDisposeMemoryBuffer(LLVMMemoryB
 
 /**
  * @}
- */
-
-/**
- * @defgroup LLVMCCorePass Pass
- *
- * @{
- */
-
-const char *LLVMGetPassName(LLVMPassRef);
-
-/**
- * @}
  */
 
 /**

Modified: llvm/trunk/include/llvm/IR/LLVMContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/LLVMContext.h?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/LLVMContext.h (original)
+++ llvm/trunk/include/llvm/IR/LLVMContext.h Thu May 15 12:49:20 2014
@@ -21,19 +21,16 @@
 
 namespace llvm {
 
-class BasicBlock;
-class DebugLoc;
-class DiagnosticInfo;
-class Function;
-class Instruction;
 class LLVMContextImpl;
-class Module;
-class Pass;
-struct PassRunListener;
-template <typename T> class SmallVectorImpl;
-class SMDiagnostic;
 class StringRef;
 class Twine;
+class Instruction;
+class Module;
+class SMDiagnostic;
+class DiagnosticInfo;
+template <typename T> class SmallVectorImpl;
+class Function;
+class DebugLoc;
 
 /// This is an important class for using LLVM in a threaded context.  It
 /// (opaquely) owns and manages the core "global" data of LLVM's core
@@ -139,16 +136,6 @@ public:
   void emitOptimizationRemark(const char *PassName, const Function &Fn,
                               const DebugLoc &DLoc, const Twine &Msg);
 
-  /// \brief Notify that we finished running a pass.
-  void notifyPassRun(Pass *P, Module *M, Function *F = nullptr,
-                     BasicBlock *BB = nullptr);
-  /// \brief Register the given PassRunListener to receive notifyPassRun()
-  /// callbacks whenever a pass ran. The context will take ownership of the
-  /// listener and free it when the context is destroyed.
-  void addRunListener(PassRunListener *L);
-  /// \brief Unregister a PassRunListener so that it no longer receives
-  /// notifyPassRun() callbacks. Remove and free the listener from the context.
-  void removeRunListener(PassRunListener *L);
 private:
   LLVMContext(LLVMContext&) LLVM_DELETED_FUNCTION;
   void operator=(LLVMContext&) LLVM_DELETED_FUNCTION;

Modified: llvm/trunk/include/llvm/Pass.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Pass.h?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Pass.h (original)
+++ llvm/trunk/include/llvm/Pass.h Thu May 15 12:49:20 2014
@@ -29,9 +29,7 @@
 #ifndef LLVM_PASS_H
 #define LLVM_PASS_H
 
-#include "llvm/Support/CBindingWrapping.h"
 #include "llvm/Support/Compiler.h"
-#include "llvm-c/Core.h"
 #include <string>
 
 namespace llvm {
@@ -371,9 +369,6 @@ protected:
 /// @brief This is the storage for the -time-passes option.
 extern bool TimePassesIsEnabled;
 
-// Create wrappers for C Binding types (see CBindingWrapping.h).
-DEFINE_SIMPLE_CONVERSION_FUNCTIONS(Pass, LLVMPassRef)
-
 } // End llvm namespace
 
 // Include support files that contain important APIs commonly used by Passes,

Modified: llvm/trunk/include/llvm/PassSupport.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/PassSupport.h?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/include/llvm/PassSupport.h (original)
+++ llvm/trunk/include/llvm/PassSupport.h Thu May 15 12:49:20 2014
@@ -31,7 +31,6 @@
 namespace llvm {
 
 class TargetMachine;
-class LLVMContext;
 //===---------------------------------------------------------------------------
 /// PassInfo class - An instance of this class exists for every pass known by
 /// the system, and can be obtained from a live Pass by calling its
@@ -356,21 +355,6 @@ struct PassRegistrationListener {
   virtual void passEnumerate(const PassInfo *) {}
 };
 
-//===---------------------------------------------------------------------------
-/// PassRunListener class - This class is meant to be derived from by
-/// clients that are interested in which and when passes are run at runtime.
-struct PassRunListener {
-  /// PassRunListener ctor - Add the current object to the list of
-  /// PassRunListeners...
-  PassRunListener(LLVMContext *);
-
-  virtual ~PassRunListener();
-
-  /// Callback function - This functions is invoked whenever a pass has run.
-  virtual void passRun(LLVMContext *, Pass *, Module *, Function *,
-                       BasicBlock *) {}
-};
-
 
 } // End llvm namespace
 

Modified: llvm/trunk/lib/IR/Core.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Core.cpp?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Core.cpp (original)
+++ llvm/trunk/lib/IR/Core.cpp Thu May 15 12:49:20 2014
@@ -27,7 +27,6 @@
 #include "llvm/IR/IntrinsicInst.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"
-#include "llvm/Pass.h"
 #include "llvm/PassManager.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -45,21 +44,6 @@ using namespace llvm;
 
 #define DEBUG_TYPE "ir"
 
-namespace {
-struct LLVMPassRunListener : PassRunListener {
-  LLVMPassRunListenerHandlerTy Callback;
-
-  LLVMPassRunListener(LLVMContext *Context, LLVMPassRunListenerHandlerTy Fn)
-    : PassRunListener(Context), Callback(Fn) {}
-  void passRun(LLVMContext *C, Pass *P, Module *M, Function *F,
-               BasicBlock *BB) override {
-    Callback(wrap(C), wrap(P), wrap(M), wrap(F), wrap(BB));
-  }
-};
-// Create wrappers for C Binding types (see CBindingWrapping.h).
-DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLVMPassRunListener, LLVMPassRunListenerRef)
-} // end anonymous namespace
-
 void llvm::initializeCore(PassRegistry &Registry) {
   initializeDominatorTreeWrapperPassPass(Registry);
   initializePrintModulePassWrapperPass(Registry);
@@ -150,15 +134,7 @@ LLVMDiagnosticSeverity LLVMGetDiagInfoSe
     return severity;
 }
 
-LLVMPassRunListenerRef LLVMAddPassRunListener(LLVMContextRef Context,
-                                              LLVMPassRunListenerHandlerTy Fn) {
-  return wrap(new LLVMPassRunListener(unwrap(Context), Fn));
-}
 
-void LLVMRemovePassRunListener(LLVMContextRef Context,
-                               LLVMPassRunListenerRef Listener) {
-  unwrap(Context)->removeRunListener(unwrap(Listener));
-}
 
 
 /*===-- Operations on modules ---------------------------------------------===*/
@@ -2671,12 +2647,6 @@ void LLVMDisposeMemoryBuffer(LLVMMemoryB
   delete unwrap(MemBuf);
 }
 
-/*===-- Pass  -------------------------------------------------------------===*/
-
-const char *LLVMGetPassName(LLVMPassRef P) {
-  return unwrap(P)->getPassName();
-}
-
 /*===-- Pass Registry -----------------------------------------------------===*/
 
 LLVMPassRegistryRef LLVMGetGlobalPassRegistry(void) {

Modified: llvm/trunk/lib/IR/LLVMContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContext.cpp?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContext.cpp (original)
+++ llvm/trunk/lib/IR/LLVMContext.cpp Thu May 15 12:49:20 2014
@@ -214,23 +214,3 @@ void LLVMContext::getMDKindNames(SmallVe
        E = pImpl->CustomMDKindNames.end(); I != E; ++I)
     Names[I->second] = I->first();
 }
-
-//===----------------------------------------------------------------------===//
-// Pass Run Listeners
-//===----------------------------------------------------------------------===//
-/// Notify that we finished running a pass.
-void LLVMContext::notifyPassRun(Pass *P, Module *M, Function *F, BasicBlock *BB)
-{
-  pImpl->notifyPassRun(this, P, M, F, BB);
-}
-/// Register the given PassRunListener to receive notifyPassRun() callbacks
-/// whenever a pass ran. The context will take ownership of the listener and
-/// free it when the context is destroyed.
-void LLVMContext::addRunListener(PassRunListener *L) {
-  pImpl->addRunListener(L);
-}
-/// Unregister a PassRunListener so that it no longer receives notifyPassRun()
-/// callbacks. Remove and free the listener from the context.
-void LLVMContext::removeRunListener(PassRunListener *L) {
-  pImpl->removeRunListener(L);
-}

Modified: llvm/trunk/lib/IR/LLVMContextImpl.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContextImpl.cpp?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContextImpl.cpp (original)
+++ llvm/trunk/lib/IR/LLVMContextImpl.cpp Thu May 15 12:49:20 2014
@@ -15,32 +15,11 @@
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/IR/Attributes.h"
 #include "llvm/IR/Module.h"
-#include "llvm/PassSupport.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Regex.h"
 #include <algorithm>
 using namespace llvm;
 
-/// Notify that we finished running a pass.
-void LLVMContextImpl::notifyPassRun(LLVMContext *C, Pass *P, Module *M,
-                                    Function *F, BasicBlock *BB) {
-  for (auto const &L : RunListeners)
-    L->passRun(C, P, M, F, BB);
-}
-/// Register the given PassRunListener to receive notifyPassRun()
-/// callbacks whenever a pass ran.
-void LLVMContextImpl::addRunListener(PassRunListener *L) {
-  RunListeners.push_back(L);
-}
-/// Unregister a PassRunListener so that it no longer receives
-/// notifyPassRun() callbacks.
-void LLVMContextImpl::removeRunListener(PassRunListener *L) {
-  auto I = std::find(RunListeners.begin(), RunListeners.end(), L);
-  assert(I != RunListeners.end() && "RunListener not registered!");
-  delete *I;
-  RunListeners.erase(I);
-}
-
 LLVMContextImpl::LLVMContextImpl(LLVMContext &C)
   : TheTrueVal(nullptr), TheFalseVal(nullptr),
     VoidTy(C, Type::VoidTyID),
@@ -199,11 +178,6 @@ LLVMContextImpl::~LLVMContextImpl() {
 
   // Destroy MDStrings.
   DeleteContainerSeconds(MDStringCache);
-
-  // Destroy all run listeners.
-  for (auto &L : RunListeners)
-    delete L;
-  RunListeners.clear();
 }
 
 // ConstantsContext anchors

Modified: llvm/trunk/lib/IR/LLVMContextImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContextImpl.h?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LLVMContextImpl.h (original)
+++ llvm/trunk/lib/IR/LLVMContextImpl.h Thu May 15 12:49:20 2014
@@ -40,7 +40,6 @@ class ConstantFP;
 class LLVMContext;
 class Type;
 class Value;
-struct PassRunListener;
 
 struct DenseMapAPIntKeyInfo {
   struct KeyTy {
@@ -369,26 +368,13 @@ public:
   typedef DenseMap<const Function *, ReturnInst *> PrefixDataMapTy;
   PrefixDataMapTy PrefixDataMap;
 
-  /// \brief List of listeners to notify about a pass run.
-  SmallVector<PassRunListener *, 4> RunListeners;
-
   /// \brief Return true if the given pass name should emit optimization
   /// remarks.
   bool optimizationRemarksEnabledFor(const char *PassName) const;
 
   int getOrAddScopeRecordIdxEntry(MDNode *N, int ExistingIdx);
   int getOrAddScopeInlinedAtIdxEntry(MDNode *Scope, MDNode *IA,int ExistingIdx);
-
-  /// \brief Notify that we finished running a pass.
-  void notifyPassRun(LLVMContext *, Pass *, Module *, Function *, BasicBlock *);
-  /// \brief Register the given PassRunListener to receive notifyPassRun()
-  /// callbacks whenever a pass ran. The context will take ownership of the
-  /// listener and free it when the context is destroyed.
-  void addRunListener(PassRunListener *);
-  /// \brief Unregister a PassRunListener so that it no longer receives
-  /// notifyPassRun() callbacks. Remove and free the listener from the context.
-  void removeRunListener(PassRunListener *);
-
+  
   LLVMContextImpl(LLVMContext &C);
   ~LLVMContextImpl();
 };

Modified: llvm/trunk/lib/IR/LegacyPassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LegacyPassManager.cpp?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/lib/IR/LegacyPassManager.cpp (original)
+++ llvm/trunk/lib/IR/LegacyPassManager.cpp Thu May 15 12:49:20 2014
@@ -16,7 +16,6 @@
 #include "llvm/IR/LegacyPassManager.h"
 #include "llvm/IR/LegacyPassManagers.h"
 #include "llvm/IR/LegacyPassNameParser.h"
-#include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
@@ -1314,8 +1313,6 @@ bool BBPassManager::runOnFunction(Functi
         TimeRegion PassTimer(getPassTimer(BP));
 
         LocalChanged |= BP->runOnBasicBlock(*I);
-
-        F.getContext().notifyPassRun(BP, F.getParent(), &F, &*I);
       }
 
       Changed |= LocalChanged;
@@ -1554,8 +1551,6 @@ bool FPPassManager::runOnFunction(Functi
     removeNotPreservedAnalysis(FP);
     recordAvailableAnalysis(FP);
     removeDeadPasses(FP, F.getName(), ON_FUNCTION_MSG);
-
-    F.getContext().notifyPassRun(FP, F.getParent(), &F);
   }
   return Changed;
 }
@@ -1635,8 +1630,6 @@ MPPassManager::runOnModule(Module &M) {
     removeNotPreservedAnalysis(MP);
     recordAvailableAnalysis(MP);
     removeDeadPasses(MP, M.getModuleIdentifier(), ON_MODULE_MSG);
-
-    M.getContext().notifyPassRun(MP, &M);
   }
 
   // Finalize module passes

Modified: llvm/trunk/lib/IR/Pass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Pass.cpp?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Pass.cpp (original)
+++ llvm/trunk/lib/IR/Pass.cpp Thu May 15 12:49:20 2014
@@ -17,7 +17,6 @@
 #include "llvm/IR/Function.h"
 #include "llvm/IR/IRPrintingPasses.h"
 #include "llvm/IR/LegacyPassNameParser.h"
-#include "llvm/IR/LLVMContext.h"
 #include "llvm/PassRegistry.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
@@ -243,18 +242,6 @@ void PassRegistrationListener::enumerate
   PassRegistry::getPassRegistry()->enumerateWith(this);
 }
 
-//===----------------------------------------------------------------------===//
-// PassRunListener implementation
-//
-
-// PassRunListener ctor - Add the current object to the list of
-// PassRunListeners...
-PassRunListener::PassRunListener(LLVMContext *C) {
-  C->addRunListener(this);
-}
-
-PassRunListener::~PassRunListener() {}
-
 PassNameParser::~PassNameParser() {}
 
 //===----------------------------------------------------------------------===//

Modified: llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp?rev=208904&r1=208903&r2=208904&view=diff
==============================================================================
--- llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp (original)
+++ llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp Thu May 15 12:49:20 2014
@@ -28,7 +28,6 @@ using namespace llvm;
 
 static bool didCallAllocateCodeSection;
 static bool didAllocateCompactUnwindSection;
-static bool didCallPassRunListener;
 
 static uint8_t *roundTripAllocateCodeSection(void *object, uintptr_t size,
                                              unsigned alignment,
@@ -65,12 +64,6 @@ static void roundTripDestroy(void *objec
   delete static_cast<SectionMemoryManager*>(object);
 }
 
-static void passRunListenerCallback(LLVMContextRef C, LLVMPassRef P,
-                                    LLVMModuleRef M, LLVMValueRef F,
-                                    LLVMBasicBlockRef BB) {
-  didCallPassRunListener = true;
-}
-
 namespace {
 
 // memory manager to test reserve allocation space callback
@@ -149,7 +142,6 @@ protected:
   virtual void SetUp() {
     didCallAllocateCodeSection = false;
     didAllocateCompactUnwindSection = false;
-    didCallPassRunListener = false;
     Module = 0;
     Function = 0;
     Engine = 0;
@@ -437,23 +429,3 @@ TEST_F(MCJITCAPITest, reserve_allocation
   EXPECT_TRUE(MM->UsedCodeSize > 0); 
   EXPECT_TRUE(MM->UsedDataSizeRW > 0);
 }
-
-TEST_F(MCJITCAPITest, pass_run_listener) {
-  SKIP_UNSUPPORTED_PLATFORM;
-
-  buildSimpleFunction();
-  buildMCJITOptions();
-  buildMCJITEngine();
-  LLVMContextRef C = LLVMGetGlobalContext();
-  LLVMAddPassRunListener(C, passRunListenerCallback);
-  buildAndRunPasses();
-
-  union {
-    void *raw;
-    int (*usable)();
-  } functionPointer;
-  functionPointer.raw = LLVMGetPointerToGlobal(Engine, Function);
-
-  EXPECT_EQ(42, functionPointer.usable());
-  EXPECT_TRUE(didCallPassRunListener);
-}





More information about the llvm-commits mailing list