[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