[PATCH] D25132: Invoke add-discriminator at -g0 -fsample-profile

Dehao Chen via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 3 10:07:26 PDT 2016


danielcdh updated this revision to Diff 73299.
danielcdh added a comment.

revert the flag change.


https://reviews.llvm.org/D25132

Files:
  include/llvm/Transforms/Scalar.h
  include/llvm/Transforms/Utils/AddDiscriminators.h
  lib/Transforms/Utils/AddDiscriminators.cpp


Index: lib/Transforms/Utils/AddDiscriminators.cpp
===================================================================
--- lib/Transforms/Utils/AddDiscriminators.cpp
+++ lib/Transforms/Utils/AddDiscriminators.cpp
@@ -77,11 +77,16 @@
 // The legacy pass of AddDiscriminators.
 struct AddDiscriminatorsLegacyPass : public FunctionPass {
   static char ID; // Pass identification, replacement for typeid
-  AddDiscriminatorsLegacyPass() : FunctionPass(ID) {
+
+  AddDiscriminatorsLegacyPass(bool IsSamplePGO = false) :
+      FunctionPass(ID), IsSamplePGO(IsSamplePGO) {
     initializeAddDiscriminatorsLegacyPassPass(*PassRegistry::getPassRegistry());
   }
 
   bool runOnFunction(Function &F) override;
+
+ private:
+  bool IsSamplePGO;
 };
 
 } // end anonymous namespace
@@ -100,8 +105,8 @@
     cl::desc("Disable generation of discriminator information."));
 
 // Create the legacy AddDiscriminatorsPass.
-FunctionPass *llvm::createAddDiscriminatorsPass() {
-  return new AddDiscriminatorsLegacyPass();
+FunctionPass *llvm::createAddDiscriminatorsPass(bool IsSamplePGO) {
+  return new AddDiscriminatorsLegacyPass(IsSamplePGO);
 }
 
 /// \brief Assign DWARF discriminators.
@@ -155,14 +160,13 @@
 /// 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.
-static bool addDiscriminators(Function &F) {
+static bool addDiscriminators(Function &F, bool IsSamplePGO) {
   // If the function has debug information, but the user has disabled
   // discriminators, do nothing.
   // Simlarly, if the function has no debug info, do nothing.
-  // Finally, if this module is built with dwarf versions earlier than 4,
   // do nothing (discriminator support is a DWARF 4 feature).
   if (NoDiscriminators || !F.getSubprogram() ||
-      F.getParent()->getDwarfVersion() < 4)
+      (!IsSamplePGO && F.getParent()->getDwarfVersion() < 4))
     return false;
 
   bool Changed = false;
@@ -246,11 +250,11 @@
 }
 
 bool AddDiscriminatorsLegacyPass::runOnFunction(Function &F) {
-  return addDiscriminators(F);
+  return addDiscriminators(F, IsSamplePGO);
 }
 PreservedAnalyses AddDiscriminatorsPass::run(Function &F,
                                              FunctionAnalysisManager &AM) {
-  if (!addDiscriminators(F))
+  if (!addDiscriminators(F, IsSamplePGO))
     return PreservedAnalyses::all();
 
   // FIXME: should be all()
Index: include/llvm/Transforms/Utils/AddDiscriminators.h
===================================================================
--- include/llvm/Transforms/Utils/AddDiscriminators.h
+++ include/llvm/Transforms/Utils/AddDiscriminators.h
@@ -21,7 +21,11 @@
 namespace llvm {
 
 class AddDiscriminatorsPass : public PassInfoMixin<AddDiscriminatorsPass> {
+  bool IsSamplePGO;
+
 public:
+  AddDiscriminatorsPass(bool IsSamplePGO = false) : IsSamplePGO(IsSamplePGO) {}
+
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
 };
 } // end namespace llvm
Index: include/llvm/Transforms/Scalar.h
===================================================================
--- include/llvm/Transforms/Scalar.h
+++ include/llvm/Transforms/Scalar.h
@@ -418,7 +418,7 @@
 //===----------------------------------------------------------------------===//
 //
 // AddDiscriminators - Add DWARF path discriminators to the IR.
-FunctionPass *createAddDiscriminatorsPass();
+FunctionPass *createAddDiscriminatorsPass(bool IsSamplePGO = false);
 
 //===----------------------------------------------------------------------===//
 //


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25132.73299.patch
Type: text/x-patch
Size: 3574 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161003/2f44e60b/attachment.bin>


More information about the llvm-commits mailing list