[llvm] r272847 - [PM] Port Add discriminator pass to new PM

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 15 15:27:59 PDT 2016


Thanks for the review. Done.

David

On Wed, Jun 15, 2016 at 3:10 PM, Davide Italiano <davide at freebsd.org> wrote:

> On Wed, Jun 15, 2016 at 2:51 PM, Xinliang David Li via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: davidxl
> > Date: Wed Jun 15 16:51:30 2016
> > New Revision: 272847
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=272847&view=rev
> > Log:
> > [PM] Port Add discriminator pass to new PM
> >
>
> Thanks for taking care of the porting. Some post-commit comments below.
>
> > Added:
> >     llvm/trunk/include/llvm/Transforms/Utils/AddDiscriminators.h
> > Modified:
> >     llvm/trunk/include/llvm/InitializePasses.h
> >     llvm/trunk/lib/Passes/PassBuilder.cpp
> >     llvm/trunk/lib/Passes/PassRegistry.def
> >     llvm/trunk/lib/Transforms/Utils/AddDiscriminators.cpp
> >     llvm/trunk/lib/Transforms/Utils/Utils.cpp
> >     llvm/trunk/test/Transforms/AddDiscriminators/basic.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/call-nested.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/call.ll
> >
>  llvm/trunk/test/Transforms/AddDiscriminators/dbg-declare-discriminator.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/diamond.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/first-only.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/multiple.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/no-discriminators.ll
> >     llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll
> >
> > Modified: llvm/trunk/include/llvm/InitializePasses.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/InitializePasses.h?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/InitializePasses.h (original)
> > +++ llvm/trunk/include/llvm/InitializePasses.h Wed Jun 15 16:51:30 2016
> > @@ -58,7 +58,7 @@ void initializeTarget(PassRegistry&);
> >  void initializeAAEvalLegacyPassPass(PassRegistry&);
> >  void initializeAAResultsWrapperPassPass(PassRegistry &);
> >  void initializeADCELegacyPassPass(PassRegistry&);
> > -void initializeAddDiscriminatorsPass(PassRegistry&);
> > +void initializeAddDiscriminatorsLegacyPassPass(PassRegistry&);
> >  void initializeAddressSanitizerModulePass(PassRegistry&);
> >  void initializeAddressSanitizerPass(PassRegistry&);
> >  void initializeAliasSetPrinterPass(PassRegistry&);
> >
> > Added: llvm/trunk/include/llvm/Transforms/Utils/AddDiscriminators.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/AddDiscriminators.h?rev=272847&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/Transforms/Utils/AddDiscriminators.h (added)
> > +++ llvm/trunk/include/llvm/Transforms/Utils/AddDiscriminators.h Wed Jun
> 15 16:51:30 2016
> > @@ -0,0 +1,30 @@
> > +//===- AddDiscriminators.h -------------------------------------*- C++
> -*-===//
> > +//
> > +//                     The LLVM Compiler Infrastructure
> > +//
> > +// This file is distributed under the University of Illinois Open Source
> > +// License. See LICENSE.TXT for details.
> > +//
> >
> +//===----------------------------------------------------------------------===//
> > +//
> > +// This pass adds DWARF discriminators to the IR. Path discriminators
> are used
> > +// to decide what CFG path was taken inside sub-graphs whose
> instructions share
> > +// the same line and column number information.
> > +//
> >
> +//===----------------------------------------------------------------------===//
> > +
> > +#ifndef LLVM_TRANSFORMS_UTILS_ADDDISCRIMINATORS_H
> > +#define LLVM_TRANSFORMS_UTILS_ADDDISCRIMINATORS_H
> > +
> > +#include "llvm/IR/PassManager.h"
> > +
> > +namespace llvm {
> > +
> > +/// Converts loops into loop-closed SSA form.
>
> I think this comment is wrong?
>
> > +class AddDiscriminatorsPass : public
> PassInfoMixin<AddDiscriminatorsPass> {
> > +public:
> > +  PreservedAnalyses run(Function &F, AnalysisManager<Function> &AM);
> > +};
> > +} // end namespace llvm
> > +
> > +#endif // LLVM_TRANSFORMS_UTILS_LCSSA_H
>
> Ditto.
>
> >
> > Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> > +++ llvm/trunk/lib/Passes/PassBuilder.cpp Wed Jun 15 16:51:30 2016
> > @@ -90,6 +90,7 @@
> >  #include "llvm/Transforms/Scalar/SROA.h"
> >  #include "llvm/Transforms/Scalar/SimplifyCFG.h"
> >  #include "llvm/Transforms/Scalar/Sink.h"
> > +#include "llvm/Transforms/Utils/AddDiscriminators.h"
> >  #include "llvm/Transforms/Scalar/SLPVectorizer.h"
> >  #include "llvm/Transforms/Utils/LCSSA.h"
> >  #include "llvm/Transforms/Utils/Mem2Reg.h"
> >
> > Modified: llvm/trunk/lib/Passes/PassRegistry.def
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Passes/PassRegistry.def (original)
> > +++ llvm/trunk/lib/Passes/PassRegistry.def Wed Jun 15 16:51:30 2016
> > @@ -119,6 +119,7 @@ FUNCTION_ALIAS_ANALYSIS("type-based-aa",
> >  #endif
> >  FUNCTION_PASS("aa-eval", AAEvaluator())
> >  FUNCTION_PASS("adce", ADCEPass())
> > +FUNCTION_PASS("add-discriminators", AddDiscriminatorsPass())
> >  FUNCTION_PASS("alignment-from-assumptions",
> AlignmentFromAssumptionsPass())
> >  FUNCTION_PASS("bdce", BDCEPass())
> >  FUNCTION_PASS("dce", DCEPass())
> >
> > Modified: llvm/trunk/lib/Transforms/Utils/AddDiscriminators.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/AddDiscriminators.cpp?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Transforms/Utils/AddDiscriminators.cpp (original)
> > +++ llvm/trunk/lib/Transforms/Utils/AddDiscriminators.cpp Wed Jun 15
> 16:51:30 2016
> > @@ -52,6 +52,7 @@
> >  // http://wiki.dwarfstd.org/index.php?title=Path_Discriminators
> >
> //===----------------------------------------------------------------------===//
> >
> > +#include "llvm/Transforms/Utils/AddDiscriminators.h"
> >  #include "llvm/ADT/DenseMap.h"
> >  #include "llvm/ADT/DenseSet.h"
> >  #include "llvm/IR/BasicBlock.h"
> > @@ -73,20 +74,22 @@ using namespace llvm;
> >  #define DEBUG_TYPE "add-discriminators"
> >
> >  namespace {
> > -struct AddDiscriminators : public FunctionPass {
> > +// The legacy pass of AddDiscriminators.
> > +struct AddDiscriminatorsLegacyPass : public FunctionPass {
> >    static char ID; // Pass identification, replacement for typeid
> > -  AddDiscriminators() : FunctionPass(ID) {
> > -    initializeAddDiscriminatorsPass(*PassRegistry::getPassRegistry());
> > +  AddDiscriminatorsLegacyPass() : FunctionPass(ID) {
> > +
> initializeAddDiscriminatorsLegacyPassPass(*PassRegistry::getPassRegistry());
> >    }
> >
> >    bool runOnFunction(Function &F) override;
> >  };
> > +
> >  } // end anonymous namespace
> >
> > -char AddDiscriminators::ID = 0;
> > -INITIALIZE_PASS_BEGIN(AddDiscriminators, "add-discriminators",
> > +char AddDiscriminatorsLegacyPass::ID = 0;
> > +INITIALIZE_PASS_BEGIN(AddDiscriminatorsLegacyPass, "add-discriminators",
> >                        "Add DWARF path discriminators", false, false)
> > -INITIALIZE_PASS_END(AddDiscriminators, "add-discriminators",
> > +INITIALIZE_PASS_END(AddDiscriminatorsLegacyPass, "add-discriminators",
> >                      "Add DWARF path discriminators", false, false)
> >
> >  // Command line option to disable discriminator generation even in the
> > @@ -96,8 +99,9 @@ static cl::opt<bool> NoDiscriminators(
> >      "no-discriminators", cl::init(false),
> >      cl::desc("Disable generation of discriminator information."));
> >
> > +// Create the legacy AddDiscriminatorsPass.
> >  FunctionPass *llvm::createAddDiscriminatorsPass() {
> > -  return new AddDiscriminators();
> > +  return new AddDiscriminatorsLegacyPass();
> >  }
> >
> >  /// \brief Assign DWARF discriminators.
> > @@ -151,7 +155,7 @@ FunctionPass *llvm::createAddDiscriminat
> >  /// lexical block for I2 and all the instruction in B2 that share the
> same
> >  /// file and line location as I2. This new lexical block will have a
> >  /// different discriminator number than I1.
> > -bool AddDiscriminators::runOnFunction(Function &F) {
> > +bool addDiscriminators(Function &F) {
>
> This can be probably staticized, no?
>
> >    // If the function has debug information, but the user has disabled
> >    // discriminators, do nothing.
> >    // Simlarly, if the function has no debug info, do nothing.
> > @@ -240,3 +244,13 @@ bool AddDiscriminators::runOnFunction(Fu
> >    }
> >    return Changed;
> >  }
> > +
> > +bool AddDiscriminatorsLegacyPass::runOnFunction(Function &F) {
> > +  return addDiscriminators(F);
> > +}
> > +PreservedAnalyses AddDiscriminatorsPass::run(Function &F,
> > +                                             AnalysisManager<Function>
> &AM) {
> > +  addDiscriminators(F);
> > +  // Only modifies debug info.
> > +  return PreservedAnalyses::all();
> > +}
> >
>
> I'd rather use the return value of addDiscriminator and preserve all
> the analyses iff the IR is not mutated.
> If you are confident that this preserves all the transformations,
> please commit the change separately (and do that for both the new and
> the old PM).
>
> > Modified: llvm/trunk/lib/Transforms/Utils/Utils.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/Utils.cpp?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Transforms/Utils/Utils.cpp (original)
> > +++ llvm/trunk/lib/Transforms/Utils/Utils.cpp Wed Jun 15 16:51:30 2016
> > @@ -21,7 +21,7 @@ using namespace llvm;
> >  /// initializeTransformUtils - Initialize all passes in the
> TransformUtils
> >  /// library.
> >  void llvm::initializeTransformUtils(PassRegistry &Registry) {
> > -  initializeAddDiscriminatorsPass(Registry);
> > +  initializeAddDiscriminatorsLegacyPassPass(Registry);
> >    initializeBreakCriticalEdgesPass(Registry);
> >    initializeInstNamerPass(Registry);
> >    initializeLCSSAWrapperPassPass(Registry);
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/basic.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/basic.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/basic.ll (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/basic.ll Wed Jun 15
> 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Basic DWARF discriminator test. All the instructions in block
> >  ; 'if.then' should have a different discriminator value than
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/call-nested.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/call-nested.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/call-nested.ll
> (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/call-nested.ll Wed Jun
> 15 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Discriminator support for calls that are defined in one line:
> >  ; #1 int foo(int, int);
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/call.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/call.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/call.ll (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/call.ll Wed Jun 15
> 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Discriminator support for calls that are defined in one line:
> >  ; #1 void bar();
> >
> > Modified:
> llvm/trunk/test/Transforms/AddDiscriminators/dbg-declare-discriminator.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/dbg-declare-discriminator.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Transforms/AddDiscriminators/dbg-declare-discriminator.ll
> (original)
> > +++
> llvm/trunk/test/Transforms/AddDiscriminators/dbg-declare-discriminator.ll
> Wed Jun 15 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt -S -add-discriminators < %s | FileCheck %s
> > +; RUN: opt -S -passes=add-discriminators < %s | FileCheck %s
> >
> >  declare void @llvm.dbg.declare(metadata, metadata, metadata)
> >
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/diamond.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/diamond.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/diamond.ll (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/diamond.ll Wed Jun 15
> 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Discriminator support for diamond-shaped CFG.:
> >  ; #1 void bar(int);
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/first-only.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/first-only.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/first-only.ll (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/first-only.ll Wed Jun
> 15 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Test that the only instructions that receive a new discriminator in
> >  ; the block 'if.then' are those that share the same line number as
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/multiple.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/multiple.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/multiple.ll (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/multiple.ll Wed Jun 15
> 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Discriminator support for multiple CFG paths on the same line.
> >  ;
> >
> > Modified:
> llvm/trunk/test/Transforms/AddDiscriminators/no-discriminators.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/no-discriminators.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/no-discriminators.ll
> (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/no-discriminators.ll
> Wed Jun 15 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; We should not generate discriminators for DWARF versions prior to 4.
> >  ;
> >
> > Modified: llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll?rev=272847&r1=272846&r2=272847&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll (original)
> > +++ llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll Wed Jun 15
> 16:51:30 2016
> > @@ -1,4 +1,5 @@
> >  ; RUN: opt < %s -add-discriminators -S | FileCheck %s
> > +; RUN: opt < %s -passes=add-discriminators -S | FileCheck %s
> >
> >  ; Discriminator support for code that is written in one line:
> >  ; #1 int foo(int i) {
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
>
> --
> Davide
>
> "There are no solved problems; there are only problems that are more
> or less solved" -- Henri Poincare
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160615/b223e397/attachment.html>


More information about the llvm-commits mailing list