[llvm] 31a5cb3 - [llvm-profgen] Filter out invalid debug line

via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 4 19:14:00 PDT 2021


Author: wlei
Date: 2021-10-04T19:09:06-07:00
New Revision: 31a5cb3292e1167ed9f285a1a29463f2c5fe6bbf

URL: https://github.com/llvm/llvm-project/commit/31a5cb3292e1167ed9f285a1a29463f2c5fe6bbf
DIFF: https://github.com/llvm/llvm-project/commit/31a5cb3292e1167ed9f285a1a29463f2c5fe6bbf.diff

LOG: [llvm-profgen] Filter out invalid debug line

Differential Revision: https://reviews.llvm.org/D110081

Added: 
    

Modified: 
    llvm/test/tools/llvm-profgen/cs-preinline.test
    llvm/test/tools/llvm-profgen/fname-canonicalization.test
    llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
    llvm/test/tools/llvm-profgen/inline-noprobe.test
    llvm/test/tools/llvm-profgen/inline-noprobe2.test
    llvm/test/tools/llvm-profgen/multi-load-segs.test
    llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test
    llvm/tools/llvm-profgen/ProfileGenerator.cpp
    llvm/tools/llvm-profgen/ProfiledBinary.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-profgen/cs-preinline.test b/llvm/test/tools/llvm-profgen/cs-preinline.test
index 9446901bec8b5..beca0d08f5160 100644
--- a/llvm/test/tools/llvm-profgen/cs-preinline.test
+++ b/llvm/test/tools/llvm-profgen/cs-preinline.test
@@ -10,7 +10,7 @@
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --output=%t --csspgo-preinliner=1  -sample-profile-cold-inline-threshold=0
 ; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-NO-PREINL
 
-; CHECK-DEFAULT:     [main:1 @ foo]:309:0
+; CHECK-DEFAULT:     [main:1 @ foo]:225:0
 ; CHECK-DEFAULT-NEXT: 2.1: 14
 ; CHECK-DEFAULT-NEXT: 3: 15
 ; CHECK-DEFAULT-NEXT: 3.1: 14 bar:14
@@ -20,7 +20,7 @@
 ; CHECK-DEFAULT-NEXT: 1: 14
 ; CHECK-DEFAULT-NEXT: !Attributes: 1
 
-; CHECK-PREINL:     [foo]:309:0
+; CHECK-PREINL:     [foo]:225:0
 ; CHECK-PREINL-NEXT: 2.1: 14
 ; CHECK-PREINL-NEXT: 3: 15
 ; CHECK-PREINL-NEXT: 3.1: 14 bar:14
@@ -30,7 +30,7 @@
 ; CHECK-PREINL-NEXT: 1: 14
 ; CHECK-PREINL-NEXT: !Attributes: 3
 
-; CHECK-NO-PREINL:     [foo]:309:0
+; CHECK-NO-PREINL:     [foo]:225:0
 ; CHECK-NO-PREINL-NEXT: 2.1: 14
 ; CHECK-NO-PREINL-NEXT: 3: 15
 ; CHECK-NO-PREINL-NEXT: 3.1: 14 bar:14

diff  --git a/llvm/test/tools/llvm-profgen/fname-canonicalization.test b/llvm/test/tools/llvm-profgen/fname-canonicalization.test
index 79789a4240b17..408fad09f48d8 100644
--- a/llvm/test/tools/llvm-profgen/fname-canonicalization.test
+++ b/llvm/test/tools/llvm-profgen/fname-canonicalization.test
@@ -2,7 +2,7 @@
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/unique-linkage-name-dwarf.perfscript --binary=%S/Inputs/unique-linkage-name-dwarf.perfbin --output=%t --profile-summary-cold-count=0
 ; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-DWARF-FNAME
 
-; CHECK-DWARF-FNAME:[main:1 @ foo]:309:0
+; CHECK-DWARF-FNAME:[main:1 @ foo]:225:0
 ; CHECK-DWARF-FNAME: 2: 14
 ; CHECK-DWARF-FNAME: 3: 29 bar.__uniq.26267048767521081047744692097241227776:14
 ; CHECK-DWARF-FNAME:[main:1 @ foo:3 @ bar.__uniq.26267048767521081047744692097241227776]:84:0

diff  --git a/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test b/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
index df6ac1c397316..2b8841ba3897f 100644
--- a/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
+++ b/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
@@ -5,7 +5,7 @@
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --output=%t --profile-summary-cold-count=0 --ignore-stack-samples
 ; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-STRIP-CTX
 
-; CHECK:[main:1 @ foo]:309:0
+; CHECK:[main:1 @ foo]:225:0
 ; CHECK: 2.1: 14
 ; CHECK: 3: 15
 ; CHECK: 3.1: 14 bar:14
@@ -13,10 +13,23 @@
 ; CHECK:[main:1 @ foo:3.1 @ bar]:84:0
 ; CHECK: 1: 14
 
-; CHECK-STRIP-CTX: main:379:0
+; CHECK-UNWINDER: [main:1 @ foo]
+; CHECK-UNWINDER:   3
+; CHECK-UNWINDER:   670-69b:1
+; CHECK-UNWINDER:   67e-69b:14
+; CHECK-UNWINDER:   6bf-6c8:14
+; CHECK-UNWINDER:   2
+; CHECK-UNWINDER:   69b->670:1
+; CHECK-UNWINDER:   6c8->67e:15
+; CHECK-UNWINDER: [main:1 @ foo:3.1 @ bar]
+; CHECK-UNWINDER:   1
+; CHECK-UNWINDER:   6af-6bb:14
+; CHECK-UNWINDER:   0
+
+; CHECK-STRIP-CTX: main:295:0
 ; CHECK-STRIP-CTX:  0: 0
 ; CHECK-STRIP-CTX:  2: 0
-; CHECK-STRIP-CTX:  1: foo:379
+; CHECK-STRIP-CTX:  1: foo:295
 ; CHECK-STRIP-CTX:   2.1: 14
 ; CHECK-STRIP-CTX:   3: 15
 ; CHECK-STRIP-CTX:   3.2: 1
@@ -25,20 +38,6 @@
 ; CHECK-STRIP-CTX:   3.1: bar:84
 ; CHECK-STRIP-CTX:    1: 14
 
-; CHECK-UNWINDER: [main:1 @ foo]
-; CHECK-UNWINDER:   4
-; CHECK-UNWINDER:   670-6ad:1
-; CHECK-UNWINDER:   67e-69b:1
-; CHECK-UNWINDER:   67e-6ad:13
-; CHECK-UNWINDER:   6bd-6c8:14
-; CHECK-UNWINDER:   2
-; CHECK-UNWINDER:   69b->670:1
-; CHECK-UNWINDER:   6c8->67e:15
-; CHECK-UNWINDER: [main:1 @ foo:3.1 @ bar]
-; CHECK-UNWINDER:   1
-; CHECK-UNWINDER:   6af-6bb:14
-; CHECK-UNWINDER:   0
-
 ; original code:
 ; clang -O3 -g test.c -o a.out
 #include <stdio.h>

diff  --git a/llvm/test/tools/llvm-profgen/inline-noprobe.test b/llvm/test/tools/llvm-profgen/inline-noprobe.test
index ef3c902730ff7..691724e8d024f 100644
--- a/llvm/test/tools/llvm-profgen/inline-noprobe.test
+++ b/llvm/test/tools/llvm-profgen/inline-noprobe.test
@@ -3,15 +3,15 @@
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-noprobe.perfscript --binary=%S/Inputs/inline-noprobe.perfbin --output=%t
 ; RUN: FileCheck %s --input-file %t --check-prefix=CHECK
 
-CHECK: main:836:0
+CHECK: main:669:0
 CHECK:  0: 0
 CHECK:  2: 0
-CHECK:  1: foo:836
+CHECK:  1: foo:669
 CHECK:   2.1: 42
 CHECK:   3: 62
 CHECK:   3.2: 21
 CHECK:   4: 0
-CHECK:   3.1: bar:252
+CHECK:   3.1: bar:210
 CHECK:    1: 42
 CHECK:   3.2: bar:63
 CHECK:    1: 21

diff  --git a/llvm/test/tools/llvm-profgen/inline-noprobe2.test b/llvm/test/tools/llvm-profgen/inline-noprobe2.test
index 8635fee50fd2d..f4506fa3272ac 100644
--- a/llvm/test/tools/llvm-profgen/inline-noprobe2.test
+++ b/llvm/test/tools/llvm-profgen/inline-noprobe2.test
@@ -2,7 +2,7 @@
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-noprobe2.perfscript --binary=%S/Inputs/inline-noprobe2.perfbin --output=%t
 ; RUN: FileCheck %s --input-file %t --check-prefix=CHECK
 
-;CHECK:       partition_pivot_first:1050:5
+;CHECK:       partition_pivot_first:1045:5
 ;CHECK-NEXT:  0: 5
 ;CHECK-NEXT:  1: 5
 ;CHECK-NEXT:  2: 5
@@ -22,7 +22,7 @@
 ;CHECK-NEXT:   1: 6
 ;CHECK-NEXT:   2: 6
 ;CHECK-NEXT:   3: 6
-;CHECK-NEXT: partition_pivot_last:649:7
+;CHECK-NEXT: partition_pivot_last:647:7
 ;CHECK-NEXT:  1: 6
 ;CHECK-NEXT:  2: 6
 ;CHECK-NEXT:  3: 6
@@ -51,7 +51,7 @@
 ;CHECK-NEXT:   1: 5
 ;CHECK-NEXT:   2: 5
 ;CHECK-NEXT:   3: 5
-;CHECK-NEXT: quick_sort:414:25
+;CHECK-NEXT: quick_sort:318:25
 ;CHECK-NEXT:  1: 24
 ;CHECK-NEXT:  2: 12 partition_pivot_last:7 partition_pivot_first:5
 ;CHECK-NEXT:  3: 11 quick_sort:12

diff  --git a/llvm/test/tools/llvm-profgen/multi-load-segs.test b/llvm/test/tools/llvm-profgen/multi-load-segs.test
index 866d1a200652a..657a15097415a 100644
--- a/llvm/test/tools/llvm-profgen/multi-load-segs.test
+++ b/llvm/test/tools/llvm-profgen/multi-load-segs.test
@@ -1,7 +1,7 @@
 ; RUN: llvm-profgen --perfscript=%S/Inputs/multi-load-segs.perfscript --binary=%S/Inputs/multi-load-segs.perfbin --output=%t --format=text
 ; RUN: FileCheck %s --input-file %t
 
-;;  %S/Inputs/multi-load-segs.perfbin is an ELF image with two executable load segments. 
+;;  %S/Inputs/multi-load-segs.perfbin is an ELF image with two executable load segments.
 ; running llvm-readelf -l %S/Inputs/multi-load-segs.perfbin gives:
 ;;  LOAD           0x000000 0x0000000000200000 0x0000000000200000 0x00075c 0x00075c R   0x1000
 ;;  LOAD           0x000760 0x0000000000201760 0x0000000000201760 0x0004c0 0x0004c0 R E 0x1000
@@ -9,7 +9,7 @@
 ;;  LOAD           0x000e10 0x0000000000203e10 0x0000000000203e10 0x000040 0x000058 RW  0x1000
 ;;  LOAD           0x200000 0x0000000000400000 0x0000000000400000 0x0005e8 0x0005e8 R E 0x200000
 
-; CHECK:      [main:2 @ _Z10sort_arrayv:6 @ _Z11bubble_sortPii]:465:0
+; CHECK:      [main:2 @ _Z10sort_arrayv:6 @ _Z11bubble_sortPii]:434:0
 ; CHECK-NEXT:  4: 31
 ; CHECK-NEXT:  5: 31
 ; CHECK-NEXT:  7: 31

diff  --git a/llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test b/llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test
index 743b085120d61..ba01bd348114c 100644
--- a/llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test
+++ b/llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test
@@ -6,26 +6,24 @@
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/recursion-compression-noprobe.perfscript --binary=%S/Inputs/recursion-compression-noprobe.perfbin --output=%t --compress-recursion=0 --profile-summary-cold-count=0 --csprof-max-context-depth=2
 ; RUN: FileCheck %s --input-file %t -check-prefix=CHECK-MAX-CTX-DEPTH
 
-; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa:2 @ fb]:48:0
+; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa:2 @ fb]:37:0
 ; CHECK-UNCOMPRESS: 1: 11
 ; CHECK-UNCOMPRESS: 2: 1 fa:1
-; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa]:24:0
+; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa]:21:0
 ; CHECK-UNCOMPRESS: 1: 1
 ; CHECK-UNCOMPRESS: 2: 13 fb:11
 ; CHECK-UNCOMPRESS:[main:1 @ foo]:7:0
 ; CHECK-UNCOMPRESS: 2: 1
 ; CHECK-UNCOMPRESS: 3: 2 fa:1
-; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa:2 @ fb:2 @ fa]:7:0
+; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa:2 @ fb:2 @ fa]:6:0
 ; CHECK-UNCOMPRESS: 1: 1
-; CHECK-UNCOMPRESS: 2: 2 fb:1
-; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa:2 @ fb:2 @ fa:2 @ fb]:2:0
-; CHECK-UNCOMPRESS: 2: 1 fa:1
+; CHECK-UNCOMPRESS: 2: 1
 ; CHECK-UNCOMPRESS:[main:1 @ foo:3 @ fa:2 @ fb:2 @ fa:2 @ fb:2 @ fa]:2:0
 ; CHECK-UNCOMPRESS: 4: 1
 
-; CHECK-MAX-CTX-DEPTH:[foo:3 @ fa:2 @ fb]:47:0
+; CHECK-MAX-CTX-DEPTH:[foo:3 @ fa:2 @ fb]:36:0
 ; CHECK-MAX-CTX-DEPTH: 1: 11
-; CHECK-MAX-CTX-DEPTH:[main:1 @ foo:3 @ fa]:13:0
+; CHECK-MAX-CTX-DEPTH:[main:1 @ foo:3 @ fa]:10:0
 ; CHECK-MAX-CTX-DEPTH: 1: 1
 ; CHECK-MAX-CTX-DEPTH: 2: 2
 ; CHECK-MAX-CTX-DEPTH:[fa:2 @ fb:2 @ fa]:8:0
@@ -35,24 +33,21 @@
 ; CHECK-MAX-CTX-DEPTH:[main:1 @ foo]:7:0
 ; CHECK-MAX-CTX-DEPTH: 2: 1
 ; CHECK-MAX-CTX-DEPTH: 3: 2 fa:1
-; CHECK-MAX-CTX-DEPTH:[fb:2 @ fa:2 @ fb]:1:0
 
 
-; CHECK: [main:1 @ foo:3 @ fa:2 @ fb]:48:0
+; CHECK: [main:1 @ foo:3 @ fa:2 @ fb]:37:0
 ; CHECK:  1: 11
 ; CHECK:  2: 1 fa:1
-; CHECK: [main:1 @ foo:3 @ fa]:24:0
+; CHECK: [main:1 @ foo:3 @ fa]:21:0
 ; CHECK:  1: 1
 ; CHECK:  2: 13 fb:11
-; CHECK: [main:1 @ foo:3 @ fa:2 @ fb:2 @ fa]:9:0
+; CHECK: [main:1 @ foo:3 @ fa:2 @ fb:2 @ fa]:8:0
 ; CHECK:  1: 1
-; CHECK:  2: 2 fb:1
+; CHECK:  2: 1
 ; CHECK:  4: 1
 ; CHECK: [main:1 @ foo]:7:0
 ; CHECK:  2: 1
 ; CHECK:  3: 2 fa:1
-; CHECK: [main:1 @ foo:3 @ fa:2 @ fb:2 @ fa:2 @ fb]:1:0
-
 
 ; original code:
 ; clang -O3 -g test.c -o a.out

diff  --git a/llvm/tools/llvm-profgen/ProfileGenerator.cpp b/llvm/tools/llvm-profgen/ProfileGenerator.cpp
index 0eb69b30c15af..51ae0115d88e6 100644
--- a/llvm/tools/llvm-profgen/ProfileGenerator.cpp
+++ b/llvm/tools/llvm-profgen/ProfileGenerator.cpp
@@ -252,9 +252,6 @@ void ProfileGeneratorBase::findDisjointRanges(RangeSample &DisjointRanges,
 void ProfileGeneratorBase::updateBodySamplesforFunctionProfile(
     FunctionSamples &FunctionProfile, const SampleContextFrame &LeafLoc,
     uint64_t Count) {
-  // Filter out invalid negative(int type) lineOffset
-  if (LeafLoc.Location.LineOffset & 0x80000000)
-    return;
   // Use the maximum count of samples with same line location
   uint32_t Discriminator = getBaseDiscriminator(LeafLoc.Location.Discriminator);
   ErrorOr<uint64_t> R =

diff  --git a/llvm/tools/llvm-profgen/ProfiledBinary.cpp b/llvm/tools/llvm-profgen/ProfiledBinary.cpp
index eca16712c03d7..df2d57ea4a011 100644
--- a/llvm/tools/llvm-profgen/ProfiledBinary.cpp
+++ b/llvm/tools/llvm-profgen/ProfiledBinary.cpp
@@ -546,6 +546,10 @@ SampleContextFrameVector ProfiledBinary::symbolize(const InstructionPointer &IP,
       LineOffset =
           PseudoProbeDwarfDiscriminator::extractProbeIndex(Discriminator);
       Discriminator = 0;
+    } else {
+      // Filter out invalid negative(int type) lineOffset
+      if (LineOffset & 0xffff0000)
+        return SampleContextFrameVector();
     }
 
     LineLocation Line(LineOffset, Discriminator);


        


More information about the llvm-commits mailing list