mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
9dd02d7898
This moves handling of alwaysinline, coroutines, matrix lowering, PGO,
and LTO-required passes into PassBuilder. Much of this is replicated
between Clang and opt. Other out-of-tree users also replicate some of
this, such as Rust [1] replicating the alwaysinline, LTO, and PGO
passes.
The LTO passes are also now run in
build(Thin)LTOPreLinkDefaultPipeline() since they are semantically
required for (Thin)LTO.
[1]: f5230fbf76/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp (L896)
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D91585
24 lines
1.4 KiB
LLVM
24 lines
1.4 KiB
LLVM
; RUN: opt -debug-pass-manager -passes='default<O0>' -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<O0>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 |FileCheck %s --check-prefixes=USE_DEFAULT,USE
|
|
; RUN: opt -debug-pass-manager -passes='thinlto-pre-link<O0>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=USE_PRE_LINK,USE
|
|
; RUN: opt -debug-pass-manager -passes='lto-pre-link<O0>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=USE_PRE_LINK,USE
|
|
; RUN: opt -debug-pass-manager -passes='thinlto<O0>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=USE_POST_LINK,USE
|
|
; RUN: opt -debug-pass-manager -passes='lto<O0>' -pgo-kind=pgo-instr-use-pipeline -profile-file='%t.profdata' %s 2>&1 \
|
|
; RUN: |FileCheck %s --check-prefixes=USE_POST_LINK,USE
|
|
|
|
;
|
|
; GEN: Running pass: PGOInstrumentationGen
|
|
; USE_DEFAULT: Running pass: PGOInstrumentationUse
|
|
; USE_PRE_LINK: Running pass: PGOInstrumentationUse
|
|
; USE_POST_LINK-NOT: Running pass: PGOInstrumentationUse
|
|
; USE-NOT: Running pass: PGOIndirectCallPromotion
|
|
; USE-NOT: Running pass: PGOMemOPSizeOpt
|
|
|
|
define void @foo() {
|
|
ret void
|
|
}
|