[llvm] df0b893 - [opt] Remove -analyze option
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 24 15:41:01 PDT 2022
On 3/24/22 15:37, Philip Reames via llvm-commits wrote:
> 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.
"wholesale deletion" - auto-correct bit me
>
> 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
> _______________________________________________
> 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