[llvm] df0b893 - [opt] Remove -analyze option
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 24 15:37:51 PDT 2022
I'd like to ask you to revert this.
I find the -analysis syntax much more obvious and make use of it daily
in my local workflow.
I understand that the old-pm is deprecated, but unless we're to the
point of doing whole sole deletion of old-pm code, I'd prefer to leave
this in. It's, too me, one of the most useful bits of the old-pm
infrastructure.
Philip
On 3/24/22 14:11, Arthur Eubanks via llvm-commits wrote:
> Author: Arthur Eubanks
> Date: 2022-03-24T14:10:57-07:00
> New Revision: df0b893d94e69856754a4247a44fd97d4a69b001
>
> URL: https://github.com/llvm/llvm-project/commit/df0b893d94e69856754a4247a44fd97d4a69b001
> DIFF: https://github.com/llvm/llvm-project/commit/df0b893d94e69856754a4247a44fd97d4a69b001.diff
>
> LOG: [opt] Remove -analyze option
>
> This is legacy PM-specific, which is deprecated.
>
> Uses of this should be replaced with a corresponding `-passes='print<foo>'`.
>
> Reviewed By: asbirlea
>
> Differential Revision: https://reviews.llvm.org/D122420
>
> Added:
>
>
> Modified:
> llvm/tools/opt/CMakeLists.txt
> llvm/tools/opt/NewPMDriver.cpp
> llvm/tools/opt/opt.cpp
> llvm/utils/gn/secondary/llvm/tools/opt/BUILD.gn
>
> Removed:
> llvm/tools/opt/PassPrinters.cpp
> llvm/tools/opt/PassPrinters.h
>
>
> ################################################################################
> diff --git a/llvm/tools/opt/CMakeLists.txt b/llvm/tools/opt/CMakeLists.txt
> index 1396e4dc988de..bbba70745813d 100644
> --- a/llvm/tools/opt/CMakeLists.txt
> +++ b/llvm/tools/opt/CMakeLists.txt
> @@ -32,7 +32,6 @@ add_llvm_tool(opt
> BreakpointPrinter.cpp
> GraphPrinters.cpp
> NewPMDriver.cpp
> - PassPrinters.cpp
> PrintSCC.cpp
> opt.cpp
>
>
> diff --git a/llvm/tools/opt/NewPMDriver.cpp b/llvm/tools/opt/NewPMDriver.cpp
> index 8bcd8ff2efd30..5c97def44905e 100644
> --- a/llvm/tools/opt/NewPMDriver.cpp
> +++ b/llvm/tools/opt/NewPMDriver.cpp
> @@ -13,7 +13,6 @@
> //===----------------------------------------------------------------------===//
>
> #include "NewPMDriver.h"
> -#include "PassPrinters.h"
> #include "llvm/ADT/SmallVector.h"
> #include "llvm/ADT/StringRef.h"
> #include "llvm/Analysis/AliasAnalysis.h"
>
> diff --git a/llvm/tools/opt/PassPrinters.cpp b/llvm/tools/opt/PassPrinters.cpp
> deleted file mode 100644
> index 4e81b5d29c4d6..0000000000000
> --- a/llvm/tools/opt/PassPrinters.cpp
> +++ /dev/null
> @@ -1,212 +0,0 @@
> -//===- PassPrinters.cpp - Utilities to print analysis info for passes -----===//
> -//
> -// 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
> -/// Utilities to print analysis info for various kinds of passes.
> -///
> -//===----------------------------------------------------------------------===//
> -
> -#include "PassPrinters.h"
> -#include "llvm/Analysis/CallGraph.h"
> -#include "llvm/Analysis/CallGraphSCCPass.h"
> -#include "llvm/Analysis/LoopInfo.h"
> -#include "llvm/Analysis/LoopPass.h"
> -#include "llvm/Analysis/RegionInfo.h"
> -#include "llvm/Analysis/RegionPass.h"
> -#include "llvm/IR/BasicBlock.h"
> -#include "llvm/IR/Function.h"
> -#include "llvm/Pass.h"
> -#include "llvm/Support/raw_ostream.h"
> -#include <string>
> -
> -using namespace llvm;
> -
> -namespace {
> -
> -struct FunctionPassPrinter : public FunctionPass {
> - const PassInfo *PassToPrint;
> - raw_ostream &Out;
> - static char ID;
> - std::string PassName;
> -
> - FunctionPassPrinter(const PassInfo *PI, raw_ostream &out)
> - : FunctionPass(ID), PassToPrint(PI), Out(out) {
> - std::string PassToPrintName = std::string(PassToPrint->getPassName());
> - PassName = "FunctionPass Printer: " + PassToPrintName;
> - }
> -
> - bool runOnFunction(Function &F) override {
> - Out << "Printing analysis '" << PassToPrint->getPassName()
> - << "' for function '" << F.getName() << "':\n";
> -
> - // Get and print pass...
> - getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(Out, F.getParent());
> - return false;
> - }
> -
> - StringRef getPassName() const override { return PassName; }
> -
> - void getAnalysisUsage(AnalysisUsage &AU) const override {
> - AU.addRequiredID(PassToPrint->getTypeInfo());
> - AU.setPreservesAll();
> - }
> -};
> -
> -char FunctionPassPrinter::ID = 0;
> -
> -struct CallGraphSCCPassPrinter : public CallGraphSCCPass {
> - static char ID;
> - const PassInfo *PassToPrint;
> - raw_ostream &Out;
> - std::string PassName;
> -
> - CallGraphSCCPassPrinter(const PassInfo *PI, raw_ostream &out)
> - : CallGraphSCCPass(ID), PassToPrint(PI), Out(out) {
> - std::string PassToPrintName = std::string(PassToPrint->getPassName());
> - PassName = "CallGraphSCCPass Printer: " + PassToPrintName;
> - }
> -
> - bool runOnSCC(CallGraphSCC &SCC) override {
> - Out << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
> -
> - // Get and print pass...
> - for (CallGraphSCC::iterator I = SCC.begin(), E = SCC.end(); I != E; ++I) {
> - Function *F = (*I)->getFunction();
> - if (F)
> - getAnalysisID<Pass>(PassToPrint->getTypeInfo())
> - .print(Out, F->getParent());
> - }
> - return false;
> - }
> -
> - StringRef getPassName() const override { return PassName; }
> -
> - void getAnalysisUsage(AnalysisUsage &AU) const override {
> - AU.addRequiredID(PassToPrint->getTypeInfo());
> - AU.setPreservesAll();
> - }
> -};
> -
> -char CallGraphSCCPassPrinter::ID = 0;
> -
> -struct ModulePassPrinter : public ModulePass {
> - static char ID;
> - const PassInfo *PassToPrint;
> - raw_ostream &Out;
> - std::string PassName;
> -
> - ModulePassPrinter(const PassInfo *PI, raw_ostream &out)
> - : ModulePass(ID), PassToPrint(PI), Out(out) {
> - std::string PassToPrintName = std::string(PassToPrint->getPassName());
> - PassName = "ModulePass Printer: " + PassToPrintName;
> - }
> -
> - bool runOnModule(Module &M) override {
> - Out << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
> -
> - // Get and print pass...
> - getAnalysisID<Pass>(PassToPrint->getTypeInfo()).print(Out, &M);
> - return false;
> - }
> -
> - StringRef getPassName() const override { return PassName; }
> -
> - void getAnalysisUsage(AnalysisUsage &AU) const override {
> - AU.addRequiredID(PassToPrint->getTypeInfo());
> - AU.setPreservesAll();
> - }
> -};
> -
> -char ModulePassPrinter::ID = 0;
> -
> -struct LoopPassPrinter : public LoopPass {
> - static char ID;
> - const PassInfo *PassToPrint;
> - raw_ostream &Out;
> - std::string PassName;
> -
> - LoopPassPrinter(const PassInfo *PI, raw_ostream &out)
> - : LoopPass(ID), PassToPrint(PI), Out(out) {
> - std::string PassToPrintName = std::string(PassToPrint->getPassName());
> - PassName = "LoopPass Printer: " + PassToPrintName;
> - }
> -
> - bool runOnLoop(Loop *L, LPPassManager &LPM) override {
> - Out << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
> -
> - // Get and print pass...
> - getAnalysisID<Pass>(PassToPrint->getTypeInfo())
> - .print(Out, L->getHeader()->getParent()->getParent());
> - return false;
> - }
> -
> - StringRef getPassName() const override { return PassName; }
> -
> - void getAnalysisUsage(AnalysisUsage &AU) const override {
> - AU.addRequiredID(PassToPrint->getTypeInfo());
> - AU.setPreservesAll();
> - }
> -};
> -
> -char LoopPassPrinter::ID = 0;
> -
> -struct RegionPassPrinter : public RegionPass {
> - static char ID;
> - const PassInfo *PassToPrint;
> - raw_ostream &Out;
> - std::string PassName;
> -
> - RegionPassPrinter(const PassInfo *PI, raw_ostream &out)
> - : RegionPass(ID), PassToPrint(PI), Out(out) {
> - std::string PassToPrintName = std::string(PassToPrint->getPassName());
> - PassName = "RegionPass Printer: " + PassToPrintName;
> - }
> -
> - bool runOnRegion(Region *R, RGPassManager &RGM) override {
> - Out << "Printing analysis '" << PassToPrint->getPassName() << "' for "
> - << "region: '" << R->getNameStr() << "' in function '"
> - << R->getEntry()->getParent()->getName() << "':\n";
> - // Get and print pass...
> - getAnalysisID<Pass>(PassToPrint->getTypeInfo())
> - .print(Out, R->getEntry()->getParent()->getParent());
> - return false;
> - }
> -
> - StringRef getPassName() const override { return PassName; }
> -
> - void getAnalysisUsage(AnalysisUsage &AU) const override {
> - AU.addRequiredID(PassToPrint->getTypeInfo());
> - AU.setPreservesAll();
> - }
> -};
> -
> -char RegionPassPrinter::ID = 0;
> -
> -} // end anonymous namespace
> -
> -FunctionPass *llvm::createFunctionPassPrinter(const PassInfo *PI,
> - raw_ostream &OS) {
> - return new FunctionPassPrinter(PI, OS);
> -}
> -
> -CallGraphSCCPass *llvm::createCallGraphPassPrinter(const PassInfo *PI,
> - raw_ostream &OS) {
> - return new CallGraphSCCPassPrinter(PI, OS);
> -}
> -
> -ModulePass *llvm::createModulePassPrinter(const PassInfo *PI, raw_ostream &OS) {
> - return new ModulePassPrinter(PI, OS);
> -}
> -
> -LoopPass *llvm::createLoopPassPrinter(const PassInfo *PI, raw_ostream &OS) {
> - return new LoopPassPrinter(PI, OS);
> -}
> -
> -RegionPass *llvm::createRegionPassPrinter(const PassInfo *PI, raw_ostream &OS) {
> - return new RegionPassPrinter(PI, OS);
> -}
>
> diff --git a/llvm/tools/opt/PassPrinters.h b/llvm/tools/opt/PassPrinters.h
> deleted file mode 100644
> index a4e1921399fc6..0000000000000
> --- a/llvm/tools/opt/PassPrinters.h
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -//=- PassPrinters.h - Utilities to print analysis info for passes -*- 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
> -/// Utilities to print analysis info for various kinds of passes.
> -///
> -//===----------------------------------------------------------------------===//
> -
> -#ifndef LLVM_TOOLS_OPT_PASSPRINTERS_H
> -#define LLVM_TOOLS_OPT_PASSPRINTERS_H
> -
> -namespace llvm {
> -
> -class CallGraphSCCPass;
> -class FunctionPass;
> -class ModulePass;
> -class LoopPass;
> -class PassInfo;
> -class raw_ostream;
> -class RegionPass;
> -
> -FunctionPass *createFunctionPassPrinter(const PassInfo *PI, raw_ostream &out);
> -
> -CallGraphSCCPass *createCallGraphPassPrinter(const PassInfo *PI,
> - raw_ostream &out);
> -
> -ModulePass *createModulePassPrinter(const PassInfo *PI, raw_ostream &out);
> -
> -LoopPass *createLoopPassPrinter(const PassInfo *PI, raw_ostream &out);
> -
> -RegionPass *createRegionPassPrinter(const PassInfo *PI, raw_ostream &out);
> -
> -} // end namespace llvm
> -
> -#endif // LLVM_TOOLS_OPT_PASSPRINTERS_H
>
> diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp
> index f707eb0f0b4a4..dbcc401687f32 100644
> --- a/llvm/tools/opt/opt.cpp
> +++ b/llvm/tools/opt/opt.cpp
> @@ -13,7 +13,6 @@
>
> #include "BreakpointPrinter.h"
> #include "NewPMDriver.h"
> -#include "PassPrinters.h"
> #include "llvm/ADT/Triple.h"
> #include "llvm/Analysis/CallGraph.h"
> #include "llvm/Analysis/CallGraphSCCPass.h"
> @@ -199,10 +198,6 @@ DisableBuiltins("disable-builtin",
> cl::desc("Disable specific target library builtin function"),
> cl::ZeroOrMore);
>
> -static cl::opt<bool>
> - AnalyzeOnly("analyze", cl::desc("Only perform analysis, no optimization. "
> - "Legacy pass manager only."));
> -
> static cl::opt<bool> EnableDebugify(
> "enable-debugify",
> cl::desc(
> @@ -603,11 +598,6 @@ int main(int argc, char **argv) {
>
> LLVMContext Context;
>
> - if (AnalyzeOnly && NoOutput) {
> - errs() << argv[0] << ": analyze mode conflicts with no-output mode.\n";
> - return 1;
> - }
> -
> // If `-passes=` is specified, use NPM.
> // If `-enable-new-pm` is specified and there are no codegen passes, use NPM.
> // e.g. `-enable-new-pm -sroa` will use NPM.
> @@ -756,7 +746,7 @@ int main(int argc, char **argv) {
> // If the output is set to be emitted to standard out, and standard out is a
> // console, print out a warning message and refuse to do it. We don't
> // impress anyone by spewing tons of binary goo to a terminal.
> - if (!Force && !NoOutput && !AnalyzeOnly && !OutputAssembly)
> + if (!Force && !NoOutput && !OutputAssembly)
> if (CheckBitcodeOutputToConsole(Out->os()))
> NoOutput = true;
>
> @@ -783,13 +773,6 @@ int main(int argc, char **argv) {
> }
>
> if (UseNPM) {
> - if (AnalyzeOnly) {
> - errs() << "Cannot specify -analyze under new pass manager, either "
> - "specify '-enable-new-pm=0', or use the corresponding new pass "
> - "manager pass, e.g. '-passes=print<scalar-evolution>'. For a "
> - "full list of passes, see the '--print-passes' flag.\n";
> - return 1;
> - }
> if (legacy::debugPassSpecified()) {
> errs()
> << "-debug-pass does not work with the new PM, either use "
> @@ -963,30 +946,8 @@ int main(int argc, char **argv) {
> else
> errs() << argv[0] << ": cannot create pass: "
> << PassInf->getPassName() << "\n";
> - if (P) {
> - PassKind Kind = P->getPassKind();
> + if (P)
> addPass(Passes, P);
> -
> - if (AnalyzeOnly) {
> - switch (Kind) {
> - case PT_Region:
> - Passes.add(createRegionPassPrinter(PassInf, Out->os()));
> - break;
> - case PT_Loop:
> - Passes.add(createLoopPassPrinter(PassInf, Out->os()));
> - break;
> - case PT_Function:
> - Passes.add(createFunctionPassPrinter(PassInf, Out->os()));
> - break;
> - case PT_CallGraphSCC:
> - Passes.add(createCallGraphPassPrinter(PassInf, Out->os()));
> - break;
> - default:
> - Passes.add(createModulePassPrinter(PassInf, Out->os()));
> - break;
> - }
> - }
> - }
> }
>
> if (OptLevelO0)
> @@ -1039,7 +1000,7 @@ int main(int argc, char **argv) {
> std::unique_ptr<raw_svector_ostream> BOS;
> raw_ostream *OS = nullptr;
>
> - const bool ShouldEmitOutput = !NoOutput && !AnalyzeOnly;
> + const bool ShouldEmitOutput = !NoOutput;
>
> // Write bitcode or assembly to the output as the last step...
> if (ShouldEmitOutput || RunTwice) {
>
> diff --git a/llvm/utils/gn/secondary/llvm/tools/opt/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/opt/BUILD.gn
> index 88b77b1078c54..64c05a733dd09 100644
> --- a/llvm/utils/gn/secondary/llvm/tools/opt/BUILD.gn
> +++ b/llvm/utils/gn/secondary/llvm/tools/opt/BUILD.gn
> @@ -24,7 +24,6 @@ executable("opt") {
> "BreakpointPrinter.cpp",
> "GraphPrinters.cpp",
> "NewPMDriver.cpp",
> - "PassPrinters.cpp",
> "PrintSCC.cpp",
> "opt.cpp",
> ]
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list