mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
f6eeeaf04e
This broke Chromium's PGO build, it seems because hot-cold-splitting got turned on unintentionally. See comment on the code review for repro etc. > This patch adds -f[no-]split-cold-code CC1 options to clang. This allows > the splitting pass to be toggled on/off. The current method of passing > `-mllvm -hot-cold-split=true` to clang isn't ideal as it may not compose > correctly (say, with `-O0` or `-Oz`). > > To implement the -fsplit-cold-code option, an attribute is applied to > functions to indicate that they may be considered for splitting. This > removes some complexity from the old/new PM pipeline builders, and > behaves as expected when LTO is enabled. > > Co-authored by: Saleem Abdulrasool <compnerd@compnerd.org> > Differential Revision: https://reviews.llvm.org/D57265 > Reviewed By: Aditya Kumar, Vedant Kumar > Reviewers: Teresa Johnson, Aditya Kumar, Fedor Sergeev, Philip Pfaffe, Vedant Kumar This reverts commit 273c299d5d649a0222fbde03c9a41e41913751b4.
39 lines
2.7 KiB
LLVM
39 lines
2.7 KiB
LLVM
; RUN: opt -debug-pass-manager -passes='default<O2>' -pgo-kind=pgo-instr-gen-pipeline -profile-file='temp' %s 2>&1 |FileCheck %s --check-prefixes=GEN
|
|
; RUN: llvm-profdata merge %S/Inputs/new-pm-pgo.proftext -o %t.profdata
|
|
; RUN: opt -debug-pass-manager -passes='default<O2>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 |FileCheck %s --check-prefixes=USE
|
|
; RUN: opt -debug-pass-manager -passes='thinlto-pre-link<O2>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 |FileCheck %s --check-prefixes=USE
|
|
; RUN: opt -debug-pass-manager -passes='thinlto<O2>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 |FileCheck %s --check-prefixes=USE_POST_LINK
|
|
; RUN: opt -debug-pass-manager -passes='default<O2>' -hot-cold-split -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 |FileCheck %s --check-prefixes=USE --check-prefixes=SPLIT
|
|
; RUN: opt -debug-pass-manager -passes='default<O2>' -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-pgo.prof' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=SAMPLE_USE,SAMPLE_USE_O
|
|
; RUN: opt -debug-pass-manager -passes='thinlto-pre-link<O2>' -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-pgo.prof' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=SAMPLE_USE,SAMPLE_USE_PRE_LINK
|
|
; RUN: opt -debug-pass-manager -passes='thinlto<O2>' -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-pgo.prof' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=SAMPLE_USE,SAMPLE_USE_POST_LINK
|
|
; RUN: opt -debug-pass-manager -passes='default<O2>' -new-pm-debug-info-for-profiling %s 2>&1 |FileCheck %s --check-prefixes=SAMPLE_GEN
|
|
;
|
|
; GEN: Running pass: PGOInstrumentationGen
|
|
; USE: Running pass: PGOInstrumentationUse
|
|
; USE: Running pass: PGOIndirectCallPromotion
|
|
; USE: Running pass: PGOMemOPSizeOpt
|
|
; USE_POST_LINK: Running pass: PGOIndirectCallPromotion
|
|
; USE_POST_LINK: Running pass: PGOMemOPSizeOpt
|
|
; SAMPLE_USE_O: Running pass: AddDiscriminatorsPass
|
|
; SAMPLE_USE_PRE_LINK: Running pass: AddDiscriminatorsPass
|
|
; SAMPLE_USE: Running pass: SimplifyCFGPass
|
|
; SAMPLE_USE: Running pass: SROA
|
|
; SAMPLE_USE: Running pass: EarlyCSEPass
|
|
; SAMPLE_USE: Running pass: LowerExpectIntrinsicPass
|
|
; SAMPLE_USE_POST_LINK: Running pass: InstCombinePass
|
|
; SAMPLE_USE: Running pass: SampleProfileLoaderPass
|
|
; SAMPLE_USE_O: Running pass: PGOIndirectCallPromotion
|
|
; SAMPLE_USE_POST_LINK-NOT: Running pass: GlobalOptPass
|
|
; SAMPLE_USE_POST_LINK: Running pass: PGOIndirectCallPromotion
|
|
; SAMPLE_USE_PRE_LINK-NOT: Running pass: PGOIndirectCallPromotion
|
|
; SAMPLE_GEN: Running pass: AddDiscriminatorsPass
|
|
; SPLIT: Running pass: HotColdSplittingPass
|
|
|
|
define void @foo() {
|
|
ret void
|
|
}
|