aboutsummaryrefslogtreecommitdiff
path: root/flang
diff options
context:
space:
mode:
authorMats Petersson <mats.petersson@arm.com>2022-10-05 19:16:18 +0100
committerMats Petersson <mats.petersson@arm.com>2022-10-05 19:43:02 +0100
commit4d1460c77d0095fb5eb974b42d96ca4f4567a7cd (patch)
tree262b2e754a805a61c7e88be400f3f7f4dbdb5acb /flang
parent4f6477a615d18dac6cc3aa0d3fb946191f8168c9 (diff)
downloadllvm-4d1460c77d0095fb5eb974b42d96ca4f4567a7cd.zip
llvm-4d1460c77d0095fb5eb974b42d96ca4f4567a7cd.tar.gz
llvm-4d1460c77d0095fb5eb974b42d96ca4f4567a7cd.tar.bz2
Revert "[flang] Add -fpass-plugin option to Flang frontend"
This reverts commit 43fe6f7cc35ded691bbc2fa844086d321e705d46. Reverting this as CI breaks. To reproduce, run check-flang, and it will fail with an error saying .../lib/Bye.so not found in pass-plugin.f90
Diffstat (limited to 'flang')
-rw-r--r--flang/docs/FlangDriver.md25
-rw-r--r--flang/docs/ReleaseNotes.md4
-rw-r--r--flang/include/flang/Frontend/CodeGenOptions.h3
-rw-r--r--flang/lib/Frontend/CompilerInvocation.cpp3
-rw-r--r--flang/lib/Frontend/FrontendActions.cpp13
-rw-r--r--flang/test/Driver/driver-help-hidden.f902
-rw-r--r--flang/test/Driver/driver-help.f902
-rw-r--r--flang/test/Driver/frontend-forwarding.f904
-rw-r--r--flang/test/Driver/pass-plugin-not-found.f908
-rw-r--r--flang/test/Driver/pass-plugin.f9013
10 files changed, 2 insertions, 75 deletions
diff --git a/flang/docs/FlangDriver.md b/flang/docs/FlangDriver.md
index b44f44e..af1fddc 100644
--- a/flang/docs/FlangDriver.md
+++ b/flang/docs/FlangDriver.md
@@ -507,28 +507,3 @@ Lastly, if `ParseTree` modifications are performed, then it might be necessary
to re-analyze expressions and modify scope or symbols. You can check
[Semantics.md](Semantics.md) for more details on how `ParseTree` is edited
e.g. during the semantic checks.
-
-# LLVM Pass Plugins
-
-Pass plugins are dynamic shared objects that consist of one or more LLVM IR
-passes. The `-fpass-plugin` option enables these passes to be passed to the
-middle-end where they are added to the optimization pass pipeline and run after
-lowering to LLVM IR.The exact position of the pass in the pipeline will depend
-on how it has been registered with the `llvm::PassBuilder`. See the
-documentation for
-[`llvm::PassBuilder`](https://llvm.org/doxygen/classllvm_1_1PassBuilder.html)
-for details.
-
-The framework to enable pass plugins in `flang-new` uses the exact same
-machinery as that used by `clang` and thus has the same capabilities and
-limitations.
-
-In order to use a pass plugin, the pass(es) must be compiled into a dynamic
-shared object which is then loaded using the `-fpass-plugin` option.
-
-```
-flang-new -fpass-plugin=/path/to/plugin.so <file.f90>
-```
-
-This option is available in both the compiler driver and the frontend driver.
-Note that LLVM plugins are not officially supported on Windows.
diff --git a/flang/docs/ReleaseNotes.md b/flang/docs/ReleaseNotes.md
index 0cc85db..fd1db3b0 100644
--- a/flang/docs/ReleaseNotes.md
+++ b/flang/docs/ReleaseNotes.md
@@ -24,10 +24,6 @@ page](https://llvm.org/releases/).
## Major New Features
-* Flang now supports loading LLVM pass plugins with the `-fpass-plugin` option
- which is also available in clang. The option mimics the behavior of the
- corresponding option in clang and has the same capabilities and limitations.
-
## Bug Fixes
## Non-comprehensive list of changes in this release
diff --git a/flang/include/flang/Frontend/CodeGenOptions.h b/flang/include/flang/Frontend/CodeGenOptions.h
index 7bb10d4..025f67c 100644
--- a/flang/include/flang/Frontend/CodeGenOptions.h
+++ b/flang/include/flang/Frontend/CodeGenOptions.h
@@ -46,9 +46,6 @@ protected:
class CodeGenOptions : public CodeGenOptionsBase {
public:
- /// The paths to the pass plugins that were registered using -fpass-plugin.
- std::vector<std::string> LLVMPassPlugins;
-
// Define accessors/mutators for code generation options of enumeration type.
#define CODEGENOPT(Name, Bits, Default)
#define ENUM_CODEGENOPT(Name, Type, Bits, Default) \
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index b00a2a3d..0ad63b0 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -125,9 +125,6 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts,
clang::driver::options::OPT_fno_debug_pass_manager, false))
opts.DebugPassManager = 1;
- for (auto *a : args.filtered(clang::driver::options::OPT_fpass_plugin_EQ))
- opts.LLVMPassPlugins.push_back(a->getValue());
-
// -mrelocation-model option.
if (const llvm::opt::Arg *A =
args.getLastArg(clang::driver::options::OPT_mrelocation_model)) {
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp
index d1c1ec1..be91a79 100644
--- a/flang/lib/Frontend/FrontendActions.cpp
+++ b/flang/lib/Frontend/FrontendActions.cpp
@@ -46,7 +46,6 @@
#include "llvm/IRReader/IRReader.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Passes/PassBuilder.h"
-#include "llvm/Passes/PassPlugin.h"
#include "llvm/Passes/StandardInstrumentations.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SourceMgr.h"
@@ -661,7 +660,6 @@ static void generateMachineCodeOrAssemblyImpl(clang::DiagnosticsEngine &diags,
void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
auto opts = getInstance().getInvocation().getCodeGenOpts();
- auto &diags = getInstance().getDiagnostics();
llvm::OptimizationLevel level = mapToLevel(opts);
// Create the analysis managers.
@@ -678,17 +676,6 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
si.registerCallbacks(pic, &fam);
llvm::PassBuilder pb(tm.get(), pto, pgoOpt, &pic);
- // Attempt to load pass plugins and register their callbacks with PB.
- for (auto &pluginFile : opts.LLVMPassPlugins) {
- auto passPlugin = llvm::PassPlugin::Load(pluginFile);
- if (passPlugin) {
- passPlugin->registerPassBuilderCallbacks(pb);
- } else {
- diags.Report(clang::diag::err_fe_unable_to_load_plugin)
- << pluginFile << passPlugin.takeError();
- }
- }
-
// Register all the basic analyses with the managers.
pb.registerModuleAnalyses(mam);
pb.registerCGSCCAnalyses(cgam);
diff --git a/flang/test/Driver/driver-help-hidden.f90 b/flang/test/Driver/driver-help-hidden.f90
index 3ee13fc..8261620 100644
--- a/flang/test/Driver/driver-help-hidden.f90
+++ b/flang/test/Driver/driver-help-hidden.f90
@@ -44,7 +44,6 @@
! CHECK-NEXT: -fno-integrated-as Disable the integrated assembler
! CHECK-NEXT: -fopenacc Enable OpenACC
! CHECK-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
-! CHECK-NEXT: -fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
! CHECK-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
! CHECK-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
! CHECK-NEXT: -help Display available options
@@ -72,3 +71,4 @@
! Frontend driver -help-hidden is not supported
! ERROR-FLANG-FC1: error: unknown argument: '{{.*}}'
+
diff --git a/flang/test/Driver/driver-help.f90 b/flang/test/Driver/driver-help.f90
index e3a3807..99201e0 100644
--- a/flang/test/Driver/driver-help.f90
+++ b/flang/test/Driver/driver-help.f90
@@ -42,7 +42,6 @@
! HELP-NEXT: -fno-integrated-as Disable the integrated assembler
! HELP-NEXT: -fopenacc Enable OpenACC
! HELP-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
-! HELP-NEXT: -fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
! HELP-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
! HELP-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
! HELP-NEXT: -help Display available options
@@ -121,7 +120,6 @@
! HELP-FC1-NEXT: -fno-reformat Dump the cooked character stream in -E mode
! HELP-FC1-NEXT: -fopenacc Enable OpenACC
! HELP-FC1-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
-! HELP-FC1-NEXT: -fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
! HELP-FC1-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
! HELP-FC1-NEXT: -help Display available options
diff --git a/flang/test/Driver/frontend-forwarding.f90 b/flang/test/Driver/frontend-forwarding.f90
index bdf0c31..14d7985 100644
--- a/flang/test/Driver/frontend-forwarding.f90
+++ b/flang/test/Driver/frontend-forwarding.f90
@@ -7,7 +7,6 @@
! RUN: -fdefault-integer-8 \
! RUN: -fdefault-real-8 \
! RUN: -flarge-sizes \
-! RUN: -fpass-plugin=Bye%pluginext \
! RUN: -mllvm -print-before-all\
! RUN: -P \
! RUN: | FileCheck %s
@@ -18,5 +17,4 @@
! CHECK: "-fdefault-integer-8"
! CHECK: "-fdefault-real-8"
! CHECK: "-flarge-sizes"
-! CHECK: "-fpass-plugin=Bye
-! CHECK: "-mllvm" "-print-before-all"
+! CHECK: "-mllvm" "-print-before-all"
diff --git a/flang/test/Driver/pass-plugin-not-found.f90 b/flang/test/Driver/pass-plugin-not-found.f90
deleted file mode 100644
index a93567a..0000000
--- a/flang/test/Driver/pass-plugin-not-found.f90
+++ /dev/null
@@ -1,8 +0,0 @@
-! Check the correct error diagnostic is reported when a pass plugin shared object isn't found
-
-! REQUIRES: plugins, shell
-
-! RUN: not %flang -fpass-plugin=X.Y %s 2>&1 | FileCheck %s --check-prefix=ERROR
-! RUN: not %flang_fc1 -emit-llvm -o /dev/null -fpass-plugin=X.Y %s 2>&1 | FileCheck %s --check-prefix=ERROR
-
-! ERROR: error: unable to load plugin 'X.Y': 'Could not load library 'X.Y': X.Y: cannot open shared object file: No such file or directory'
diff --git a/flang/test/Driver/pass-plugin.f90 b/flang/test/Driver/pass-plugin.f90
deleted file mode 100644
index 546bd92..0000000
--- a/flang/test/Driver/pass-plugin.f90
+++ /dev/null
@@ -1,13 +0,0 @@
-! Verify that the plugin passed to -fpass-plugin is loaded and run
-
-! UNSUPPORTED: system-windows
-
-! REQUIRES: plugins, shell
-
-! RUN: %flang -S %s -fpass-plugin=%llvmshlibdir/Bye%pluginext -Xflang -fdebug-pass-manager -o /dev/null 2>&1 | FileCheck %s
-! RUN: %flang_fc1 -S %s -fpass-plugin=%llvmshlibdir/Bye%pluginext -fdebug-pass-manager -o /dev/null 2>&1 | FileCheck %s
-
-! CHECK: Running pass: {{.*}}Bye on empty_
-
-subroutine empty
-end subroutine empty