1; Test unique linkage name decoding and canonicalization from dwarf debug info 2; 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 --csspgo-preinliner=0 --gen-cs-nested-profile=0 3; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-DWARF-FNAME 4 5; CHECK-DWARF-FNAME:[main:1 @ foo]:309:0 6; CHECK-DWARF-FNAME: 2: 14 7; CHECK-DWARF-FNAME: 3: 29 bar.__uniq.26267048767521081047744692097241227776:14 8; CHECK-DWARF-FNAME:[main:1 @ foo:3 @ bar.__uniq.26267048767521081047744692097241227776]:84:0 9; CHECK-DWARF-FNAME: 1: 14 10 11 12; Test unique linkage name decoding and canonicalization from pseudo probe info 13; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/unique-linkage-name-probe.perfscript --binary=%S/Inputs/unique-linkage-name-probe.perfbin --output=%t --profile-summary-cold-count=0 --csspgo-preinliner=0 --gen-cs-nested-profile=0 14; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-PROBE-FNAME 15 16; CHECK-PROBE-FNAME:[main:2 @ foo]:75:0 17; CHECK-PROBE-FNAME: 2: 15 18; CHECK-PROBE-FNAME: 3: 15 19; CHECK-PROBE-FNAME: 4: 15 20; CHECK-PROBE-FNAME: 6: 15 21; CHECK-PROBE-FNAME: 8: 15 _ZL3barii.__uniq.276699478366846449772231447066107882794:15 22; CHECK-PROBE-FNAME: !CFGChecksum: 563088904013236 23; CHECK-PROBE-FNAME:[main:2 @ foo:8 @ _ZL3barii.__uniq.276699478366846449772231447066107882794]:30:15 24; CHECK-PROBE-FNAME: 1: 15 25; CHECK-PROBE-FNAME: 4: 15 26; CHECK-PROBE-FNAME: !CFGChecksum: 72617220756 27 28 29; Original code: 30; Dwarf: clang -O3 -funique-internal-linkage-names -g test.c -o a.out 31; Probe: clang -O3 -funique-internal-linkage-names -fuse-ld=lld -fpseudo-probe-for-profiling -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Xclang -mdisable-tail-calls -g test.c -o a.out 32 33#include <stdio.h> 34 35static int bar(int x, int y) { 36 if (x % 3) { 37 return x - y; 38 } 39 return x + y; 40} 41 42void foo() { 43 int s, i = 0; 44 while (i++ < 4000 * 4000) 45 if (i % 91) s = bar(i, s); else s += 30; 46 printf("sum is %d\n", s); 47} 48 49int main() { 50 foo(); 51 return 0; 52} 53