mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 08:26:08 +00:00

Previoulsy debug-info-for-profiling and pseudo-probe-for-profiling are mutual exclusive because they compete the dwarf discrimnator for callsites on the IR. This changes allows to use the two switches together. The side effect is that callsite discriminators will be taken by pseudo probe, while discriminators for other instructions are still available for AutoFDO use. This is less than ideal, however, it still allows us a chance to smoothly transition from AutoFDO to CSSPGO, by collecting both profiles from a CSSPGO binary. Reviewed By: wenlei, wmi Differential Revision: https://reviews.llvm.org/D107876
25 lines
1.7 KiB
C++
25 lines
1.7 KiB
C++
/// Normally -g1 does not add linkageName. -fdebug-info-for-profiling adds linkageName.
|
|
// RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -debug-info-kind=line-tables-only %s -o - | FileCheck %s --check-prefix=LINE
|
|
// RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -debug-info-kind=line-tables-only -fdebug-info-for-profiling %s -o - | FileCheck %s
|
|
|
|
// LINE: = distinct !DISubprogram(name: "foo", scope:
|
|
|
|
// CHECK: = distinct !DICompileUnit({{.*}}, debugInfoForProfiling: true,
|
|
// CHECK: = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope:
|
|
|
|
/// Add a DWARF discriminators pass for PGO.
|
|
// RUN: %clang_cc1 -emit-llvm -fno-legacy-pass-manager -fdebug-pass-manager -O1 -fprofile-instrument-path=a.profdata %s -o - 2>&1 | FileCheck %s --check-prefix=NODISCR
|
|
// RUN: %clang_cc1 -emit-llvm -fno-legacy-pass-manager -fdebug-pass-manager -O1 -fprofile-instrument-path=a.profdata -fdebug-info-for-profiling %s -o - 2>&1 | FileCheck %s --check-prefix=DISCR
|
|
|
|
// RUN: echo > %t.proftext
|
|
// RUN: llvm-profdata merge %t.proftext -o %t.profdata
|
|
// RUN: %clang_cc1 -emit-llvm -fno-legacy-pass-manager -fdebug-pass-manager -O1 -fprofile-instrument-use-path=%t.profdata -fdebug-info-for-profiling %s -o - 2>&1 | FileCheck %s --check-prefix=DISCR
|
|
// RUN: %clang_cc1 -emit-llvm -fno-legacy-pass-manager -fdebug-pass-manager -O1 -fdebug-info-for-profiling -fpseudo-probe-for-profiling %s -o - 2>&1 | FileCheck %s --check-prefix=PROBE
|
|
|
|
// NODISCR-NOT: Running pass: AddDiscriminatorsPass
|
|
// DISCR: Running pass: AddDiscriminatorsPass on {{.*}}
|
|
// PROBE: Running pass: AddDiscriminatorsPass on {{.*}}
|
|
// PROBE: Running pass: SampleProfileProbePass on {{.*}}
|
|
|
|
void foo() {}
|