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

Philip Reames listmail at philipreames.com
Thu May 15 11:03:37 PDT 2014


Thanks.

Philip

On 05/15/2014 10:49 AM, Juergen Ributzka wrote:
> 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);
> -}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list