[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