[llvm] 0b33977 - Revert "[NewPM] Add C bindings for new pass manager"
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Mon May 17 10:59:23 PDT 2021
Author: Nico Weber
Date: 2021-05-17T13:59:12-04:00
New Revision: 0b339778722207528ad7299b0fc77314c26efb33
URL: https://github.com/llvm/llvm-project/commit/0b339778722207528ad7299b0fc77314c26efb33
DIFF: https://github.com/llvm/llvm-project/commit/0b339778722207528ad7299b0fc77314c26efb33.diff
LOG: Revert "[NewPM] Add C bindings for new pass manager"
This reverts commit cd220a06782c3da13a53de2fdf10d928eef6460c.
Doesn't build.
Added:
Modified:
llvm/lib/Passes/CMakeLists.txt
llvm/unittests/Passes/CMakeLists.txt
Removed:
llvm/include/llvm-c/Transforms/PassBuilder.h
llvm/lib/Passes/PassBuilderBindings.cpp
llvm/unittests/Passes/PassBuilderBindingsTest.cpp
################################################################################
diff --git a/llvm/include/llvm-c/Transforms/PassBuilder.h b/llvm/include/llvm-c/Transforms/PassBuilder.h
deleted file mode 100644
index 4e32900142f2..000000000000
--- a/llvm/include/llvm-c/Transforms/PassBuilder.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*===-- llvm-c/Transform/PassBuilder.h - PassBuilder for LLVM C ---*- C -*-===*\
-|* *|
-|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
-|* Exceptions. *|
-|* See https://llvm.org/LICENSE.txt for license information. *|
-|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
-|* *|
-|*===----------------------------------------------------------------------===*|
-|* *|
-|* This header contains the LLVM-C interface into the new pass manager *|
-|* *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_C_TRANSFORMS_PASSBUILDER_H
-#define LLVM_C_TRANSFORMS_PASSBUILDER_H
-
-#include "llvm-c/Error.h"
-#include "llvm-c/TargetMachine.h"
-#include "llvm-c/Types.h"
-
-LLVM_C_EXTERN_C_BEGIN
-
-/**
- * A set of options passed which are attached to the Pass Manager upon run.
- *
- * This corresponds to an llvm::LLVMPassBuilderOptions instance
- *
- * The details for how the
diff erent properties of this structure are used can
- * be found in the source for LLVMRunPasses
- */
-typedef struct LLVMOpaquePassBuilderOptions *LLVMPassBuilderOptionsRef;
-
-/**
- * Construct and run a set of passes over a module
- *
- * This function takes a string with the passes that should be used. The format
- * of this string is the same as opt's -passes argument for the new pass
- * manager. Individual passes may be specified, separated by commas. Full
- * pipelines may also be invoked using `default<O3>` and friends. See opt for
- * full reference of the Passes format.
- */
-LLVMErrorRef LLVMRunPasses(LLVMModuleRef M, const char *Passes,
- LLVMTargetMachineRef TM,
- LLVMPassBuilderOptionsRef Options);
-
-/**
- * Create a new set of options for a PassBuilder
- *
- * Ownership of the returned instance is given to the client, and they are
- * responsible for it. The client should call LLVMDisposePassBuilderOptions
- * to free the pass builder options.
- */
-LLVMPassBuilderOptionsRef LLVMCreatePassBuilderOptions();
-
-/**
- * Toggle adding the VerifierPass for the PassBuilder, ensuring all functions
- * inside the module is valid.
- */
-void LLVMPassBuilderOptionsSetVerifyEach(LLVMPassBuilderOptionsRef Options,
- LLVMBool VerifyEach);
-
-/**
- * Toggle debug logging when running the PassBuilder
- */
-void LLVMPassBuilderOptionsSetDebugLogging(LLVMPassBuilderOptionsRef Options,
- LLVMBool DebugLogging);
-
-void LLVMPassBuilderOptionsSetLoopInterleaving(
- LLVMPassBuilderOptionsRef Options, LLVMBool LoopInterleaving);
-
-void LLVMPassBuilderOptionsSetLoopVectorization(
- LLVMPassBuilderOptionsRef Options, LLVMBool LoopVectorization);
-
-void LLVMPassBuilderOptionsSetSLPVectorization(
- LLVMPassBuilderOptionsRef Options, LLVMBool SLPVectorization);
-
-void LLVMPassBuilderOptionsSetLoopUnrolling(LLVMPassBuilderOptionsRef Options,
- LLVMBool LoopUnrolling);
-
-void LLVMPassBuilderOptionsSetForgetAllSCEVInLoopUnroll(
- LLVMPassBuilderOptionsRef Options, LLVMBool ForgetAllSCEVInLoopUnroll);
-
-void LLVMPassBuilderOptionsSetCoroutines(LLVMPassBuilderOptionsRef Options,
- LLVMBool Coroutines);
-
-void LLVMPassBuilderOptionsSetLicmMssaOptCap(LLVMPassBuilderOptionsRef Options,
- unsigned LicmMssaOptCap);
-
-void LLVMPassBuilderOptionsSetLicmMssaNoAccForPromotionCap(
- LLVMPassBuilderOptionsRef Options, unsigned LicmMssaNoAccForPromotionCap);
-
-void LLVMPassBuilderOptionsSetCallGraphProfile(
- LLVMPassBuilderOptionsRef Options, LLVMBool CallGraphProfile);
-
-void LLVMPassBuilderOptionsSetMergeFunctions(LLVMPassBuilderOptionsRef Options,
- LLVMBool MergeFunctions);
-
-/**
- * Dispose of a heap-allocated PassBuilderOptions instance
- */
-void LLVMDisposePassBuilderOptions(LLVMPassBuilderOptionsRef Options);
-
-LLVM_C_EXTERN_C_END
-
-#endif // LLVM_C_TRANSFORMS_PASSBUILDER_H
diff --git a/llvm/lib/Passes/CMakeLists.txt b/llvm/lib/Passes/CMakeLists.txt
index 89e960f01e2e..f517136223ec 100644
--- a/llvm/lib/Passes/CMakeLists.txt
+++ b/llvm/lib/Passes/CMakeLists.txt
@@ -1,6 +1,5 @@
add_llvm_component_library(LLVMPasses
PassBuilder.cpp
- PassBuilderBindings.cpp
PassPlugin.cpp
StandardInstrumentations.cpp
diff --git a/llvm/lib/Passes/PassBuilderBindings.cpp b/llvm/lib/Passes/PassBuilderBindings.cpp
deleted file mode 100644
index 1a344a4a4954..000000000000
--- a/llvm/lib/Passes/PassBuilderBindings.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-//===-------------- PassBuilder bindings for LLVM-C -----------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-/// \file
-///
-/// This file defines the C bindings to the new pass manager
-///
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/Transforms/PassBuilder.h"
-#include "llvm/IR/Verifier.h"
-#include "llvm/Passes/PassBuilder.h"
-#include "llvm/Passes/StandardInstrumentations.h"
-#include "llvm/Support/CBindingWrapping.h"
-
-using namespace llvm;
-
-namespace llvm {
-/// Helper struct for holding a set of builder options for LLVMRunPasses. This
-/// structure is used to keep LLVMRunPasses backwards compatible with future
-/// versions in case we modify the options the new Pass Manager utilizes.
-class LLVMPassBuilderOptions {
-public:
- explicit LLVMPassBuilderOptions(
- bool DebugLogging = false, bool VerifyEach = false,
- PipelineTuningOptions PTO = PipelineTuningOptions())
- : DebugLogging(DebugLogging), VerifyEach(VerifyEach), PTO(PTO) {}
-
- bool DebugLogging;
- bool VerifyEach;
- PipelineTuningOptions PTO;
-};
-} // namespace llvm
-
-static TargetMachine *unwrap(LLVMTargetMachineRef P) {
- return reinterpret_cast<TargetMachine *>(P);
-}
-
-DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLVMPassBuilderOptions,
- LLVMPassBuilderOptionsRef)
-
-LLVMErrorRef LLVMRunPasses(LLVMModuleRef M, const char *Passes,
- LLVMTargetMachineRef TM,
- LLVMPassBuilderOptionsRef Options) {
- TargetMachine *Machine = unwrap(TM);
- LLVMPassBuilderOptions *PassOpts = unwrap(Options);
- bool Debug = PassOpts->DebugLogging;
- bool VerifyEach = PassOpts->VerifyEach;
-
- Module *Mod = unwrap(M);
- PassInstrumentationCallbacks PIC;
- PassBuilder PB(Debug, Machine, PassOpts->PTO, None, &PIC);
-
- LoopAnalysisManager LAM(Debug);
- FunctionAnalysisManager FAM(Debug);
- CGSCCAnalysisManager CGAM(Debug);
- ModuleAnalysisManager MAM(Debug);
- PB.registerLoopAnalyses(LAM);
- PB.registerFunctionAnalyses(FAM);
- PB.registerCGSCCAnalyses(CGAM);
- PB.registerModuleAnalyses(MAM);
- PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
-
- StandardInstrumentations SI(Debug, VerifyEach);
- SI.registerCallbacks(PIC, &FAM);
- ModulePassManager MPM(Debug);
- if (VerifyEach) {
- MPM.addPass(VerifierPass());
- }
- if (auto Err = PB.parsePassPipeline(MPM, Passes)) {
- return wrap(std::move(Err));
- }
-
- MPM.run(*Mod, MAM);
- return LLVMErrorSuccess;
-}
-
-LLVMPassBuilderOptionsRef LLVMCreatePassBuilderOptions() {
- return wrap(new LLVMPassBuilderOptions());
-}
-
-void LLVMPassBuilderOptionsSetVerifyEach(LLVMPassBuilderOptionsRef Options,
- LLVMBool VerifyEach) {
- unwrap(Options)->VerifyEach = VerifyEach;
-}
-
-void LLVMPassBuilderOptionsSetDebugLogging(LLVMPassBuilderOptionsRef Options,
- LLVMBool DebugLogging) {
- unwrap(Options)->DebugLogging = DebugLogging;
-}
-
-void LLVMPassBuilderOptionsSetLoopInterleaving(
- LLVMPassBuilderOptionsRef Options, LLVMBool LoopInterleaving) {
- unwrap(Options)->PTO.LoopInterleaving = LoopInterleaving;
-}
-
-void LLVMPassBuilderOptionsSetLoopVectorization(
- LLVMPassBuilderOptionsRef Options, LLVMBool LoopVectorization) {
- unwrap(Options)->PTO.LoopVectorization = LoopVectorization;
-}
-
-void LLVMPassBuilderOptionsSetSLPVectorization(
- LLVMPassBuilderOptionsRef Options, LLVMBool SLPVectorization) {
- unwrap(Options)->PTO.SLPVectorization = SLPVectorization;
-}
-
-void LLVMPassBuilderOptionsSetLoopUnrolling(LLVMPassBuilderOptionsRef Options,
- LLVMBool LoopUnrolling) {
- unwrap(Options)->PTO.LoopUnrolling = LoopUnrolling;
-}
-
-void LLVMPassBuilderOptionsSetForgetAllSCEVInLoopUnroll(
- LLVMPassBuilderOptionsRef Options, LLVMBool ForgetAllSCEVInLoopUnroll) {
- unwrap(Options)->PTO.ForgetAllSCEVInLoopUnroll = ForgetAllSCEVInLoopUnroll;
-}
-
-void LLVMPassBuilderOptionsSetCoroutines(LLVMPassBuilderOptionsRef Options,
- LLVMBool Coroutines) {
- unwrap(Options)->PTO.Coroutines = Coroutines;
-}
-
-void LLVMPassBuilderOptionsSetLicmMssaOptCap(LLVMPassBuilderOptionsRef Options,
- unsigned LicmMssaOptCap) {
- unwrap(Options)->PTO.LicmMssaOptCap = LicmMssaOptCap;
-}
-
-void LLVMPassBuilderOptionsSetLicmMssaNoAccForPromotionCap(
- LLVMPassBuilderOptionsRef Options, unsigned LicmMssaNoAccForPromotionCap) {
- unwrap(Options)->PTO.LicmMssaNoAccForPromotionCap =
- LicmMssaNoAccForPromotionCap;
-}
-
-void LLVMPassBuilderOptionsSetCallGraphProfile(
- LLVMPassBuilderOptionsRef Options, LLVMBool CallGraphProfile) {
- unwrap(Options)->PTO.CallGraphProfile = CallGraphProfile;
-}
-
-void LLVMPassBuilderOptionsSetMergeFunctions(LLVMPassBuilderOptionsRef Options,
- LLVMBool MergeFunctions) {
- unwrap(Options)->PTO.MergeFunctions = MergeFunctions;
-}
-
-void LLVMDisposePassBuilderOptions(LLVMPassBuilderOptionsRef Options) {
- delete unwrap(Options);
-}
diff --git a/llvm/unittests/Passes/CMakeLists.txt b/llvm/unittests/Passes/CMakeLists.txt
index c78003dde991..823bc56851fa 100644
--- a/llvm/unittests/Passes/CMakeLists.txt
+++ b/llvm/unittests/Passes/CMakeLists.txt
@@ -1,5 +1,5 @@
# Needed by LLVM's CMake checks because this file defines multiple targets.
-set(LLVM_OPTIONAL_SOURCES PluginsTest.cpp TestPlugin.cpp PassBuilderBindingsTest.cpp)
+set(LLVM_OPTIONAL_SOURCES PluginsTest.cpp TestPlugin.cpp)
# If plugins are disabled, this test will disable itself at runtime. Otherwise,
# reconfiguring with plugins disabled will leave behind a stale executable.
@@ -34,7 +34,3 @@ if (NOT WIN32)
add_dependencies(TestPlugin intrinsics_gen)
add_dependencies(PluginsTests TestPlugin)
endif()
-
-set(LLVM_LINK_COMPONENTS Support Passes Core Target native)
-add_llvm_unittest(PassesBindingsTests PassBuilderBindingsTest.cpp)
-target_link_libraries(PassesBindingsTests PRIVATE LLVMTestingSupport)
\ No newline at end of file
diff --git a/llvm/unittests/Passes/PassBuilderBindingsTest.cpp b/llvm/unittests/Passes/PassBuilderBindingsTest.cpp
deleted file mode 100644
index 93772c8db2cb..000000000000
--- a/llvm/unittests/Passes/PassBuilderBindingsTest.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//===- unittests/Passes/PassBuilderBindingsTest.cpp -----------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/Core.h"
-#include "llvm-c/Transforms/PassBuilder.h"
-#include "llvm-c/Types.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-class PassBuilderCTest : public testing::Test {
- void SetUp() override {
- LLVMInitializeNativeTarget();
- const char *Triple = LLVMGetDefaultTargetTriple();
- char *Err;
- LLVMTargetRef Target;
- if (LLVMGetTargetFromTriple(Triple, &Target, &Err)) {
- FAIL() << "Failed to create target from default triple: " << Err;
- }
- TM = LLVMCreateTargetMachine(Target, Triple, "generic", "",
- LLVMCodeGenLevelDefault, LLVMRelocDefault,
- LLVMCodeModelDefault);
- Context = LLVMContextCreate();
- Module = LLVMModuleCreateWithNameInContext("test", Context);
- }
-
- void TearDown() override {
- LLVMDisposeTargetMachine(TM);
- LLVMDisposeModule(Module);
- LLVMContextDispose(Context);
- }
-
-public:
- LLVMTargetMachineRef TM;
- LLVMModuleRef Module;
- LLVMContextRef Context;
-};
-
-TEST_F(PassBuilderCTest, Basic) {
- LLVMPassBuilderOptionsRef Options = LLVMCreatePassBuilderOptions();
- LLVMPassBuilderOptionsSetLoopUnrolling(Options, 1);
- LLVMPassBuilderOptionsSetVerifyEach(Options, 1);
- LLVMPassBuilderOptionsSetDebugLogging(Options, 0);
- if (LLVMErrorRef E = LLVMRunPasses(TM, Module, Options, "default<O2>")) {
- char *Msg = LLVMGetErrorMessage(E);
- LLVMConsumeError(E);
- LLVMDisposePassBuilderOptions(Options);
- FAIL() << "Failed to run passes: " << Msg;
- }
- LLVMDisposePassBuilderOptions(Options);
-}
-
-TEST_F(PassBuilderCTest, InvalidPassIsError) {
- LLVMPassBuilderOptionsRef Options = LLVMCreatePassBuilderOptions();
- LLVMErrorRef E1 = LLVMRunPasses(TM, Module, Options, "");
- LLVMErrorRef E2 = LLVMRunPasses(TM, Module, Options, "does-not-exist-pass");
- ASSERT_TRUE(E1);
- ASSERT_TRUE(E2);
- LLVMConsumeError(E1);
- LLVMConsumeError(E2);
- LLVMDisposePassBuilderOptions(Options);
-}
More information about the llvm-commits
mailing list