[PATCH] D112042: [llvm-profgen] Skip duplication factor outside of body sample computation

Wenlei He via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 19 23:18:39 PDT 2021


This revision was automatically updated to reflect the committed changes.
Closed by commit rGe8c245dcd3b9: [llvm-profgen] Skip duplication factor outside of body sample computation (authored by wenlei).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112042/new/

https://reviews.llvm.org/D112042

Files:
  llvm/test/tools/llvm-profgen/inline-noprobe2.test
  llvm/tools/llvm-profgen/ProfileGenerator.cpp


Index: llvm/tools/llvm-profgen/ProfileGenerator.cpp
===================================================================
--- llvm/tools/llvm-profgen/ProfileGenerator.cpp
+++ llvm/tools/llvm-profgen/ProfileGenerator.cpp
@@ -274,6 +274,12 @@
     uint64_t Count) {
   // Use the maximum count of samples with same line location
   uint32_t Discriminator = getBaseDiscriminator(LeafLoc.Location.Discriminator);
+
+  // Use duplication factor to compensated for loop unroll/vectorization.
+  // Note that this is only needed when we're taking MAX of the counts at
+  // the location instead of SUM.
+  Count *= getDuplicationFactor(LeafLoc.Location.Discriminator);
+
   ErrorOr<uint64_t> R =
       FunctionProfile.findSamplesAt(LeafLoc.Location.LineOffset, Discriminator);
 
@@ -384,12 +390,10 @@
       const SampleContextFrameVector &FrameVec =
           Binary->getFrameLocationStack(Offset);
       if (!FrameVec.empty()) {
-        uint64_t DC = Count * getDuplicationFactor(
-                                  FrameVec.back().Location.Discriminator);
         FunctionSamples &FunctionProfile =
-            getLeafProfileAndAddTotalSamples(FrameVec, DC);
+            getLeafProfileAndAddTotalSamples(FrameVec, Count);
         updateBodySamplesforFunctionProfile(FunctionProfile, FrameVec.back(),
-                                            DC);
+                                            Count);
       }
       // Move to next IP within the range.
       IP.advance();
@@ -430,7 +434,6 @@
     const SampleContextFrameVector &FrameVec =
         Binary->getFrameLocationStack(SourceOffset);
     if (!FrameVec.empty()) {
-      Count *= getDuplicationFactor(FrameVec.back().Location.Discriminator);
       FunctionSamples &FunctionProfile =
           getLeafProfileAndAddTotalSamples(FrameVec, Count);
       FunctionProfile.addCalledTargetSamples(
@@ -545,10 +548,8 @@
       auto LeafLoc = Binary->getInlineLeafFrameLoc(Offset);
       if (LeafLoc.hasValue()) {
         // Recording body sample for this specific context
-        uint64_t DC =
-            Count * getDuplicationFactor(LeafLoc->Location.Discriminator);
-        updateBodySamplesforFunctionProfile(FunctionProfile, *LeafLoc, DC);
-        FunctionProfile.addTotalSamples(DC);
+        updateBodySamplesforFunctionProfile(FunctionProfile, *LeafLoc, Count);
+        FunctionProfile.addTotalSamples(Count);
       }
 
       // Move to next IP within the range
@@ -575,7 +576,6 @@
     auto LeafLoc = Binary->getInlineLeafFrameLoc(SourceOffset);
     if (!LeafLoc.hasValue())
       continue;
-    Count *= getDuplicationFactor(LeafLoc->Location.Discriminator);
     FunctionProfile.addCalledTargetSamples(
         LeafLoc->Location.LineOffset,
         getBaseDiscriminator(LeafLoc->Location.Discriminator), CalleeName,
Index: llvm/test/tools/llvm-profgen/inline-noprobe2.test
===================================================================
--- llvm/test/tools/llvm-profgen/inline-noprobe2.test
+++ llvm/test/tools/llvm-profgen/inline-noprobe2.test
@@ -46,7 +46,7 @@
 ;CHECK-NEXT:   1: 6
 ;CHECK-NEXT:   2: 6
 ;CHECK-NEXT:   3: 6
-;CHECK-NEXT: partition_pivot_last:647:7
+;CHECK-NEXT: partition_pivot_last:389:7
 ;CHECK-NEXT:  1: 6
 ;CHECK-NEXT:  2: 6
 ;CHECK-NEXT:  3: 6
@@ -62,7 +62,7 @@
 
 ;CHECK-NEXT:  6: 5
 ;CHECK-NEXT:  7: 5
-;CHECK-NEXT:  5: swap:116
+;CHECK-NEXT:  5: swap:61
 
 ;w/o duplication factor :  1: 9
 ;w/o duplication factor :  2: 9


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112042.380860.patch
Type: text/x-patch
Size: 3438 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211020/3693b1ca/attachment.bin>


More information about the llvm-commits mailing list