mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[NFC] Do not run CGProfilePass when not using integrated assembler
Summary: CGProfilePass is run by default in certain new pass manager optimization pipeline. Assemblers other than llvm as (such as gnu as) cannot recognize the .cgprofile entries generated and emitted from this pass, causing build time error. This patch adds new options in clang CodeGenOpts and PassBuilder options so that we can turn cgprofile off when not using integrated assembler. Reviewers: Bigcheese, xur, george.burgess.iv, chandlerc, manojgupta Reviewed By: manojgupta Subscribers: manojgupta, void, hiraditya, dexonsmith, llvm-commits, tcwang, llozano Tags: #llvm, #clang Differential Revision: https://reviews.llvm.org/D62627
This commit is contained in:
parent
a2893582f5
commit
da8241e253
@ -105,6 +105,10 @@ public:
|
||||
/// Tuning option to disable promotion to scalars in LICM with MemorySSA, if
|
||||
/// the number of access is too large.
|
||||
unsigned LicmMssaNoAccForPromotionCap;
|
||||
|
||||
/// Tuning option to enable/disable call graph profile. Its default value is
|
||||
/// that of the flag: `-enable-npm-call-graph-profile`.
|
||||
bool CallGraphProfile;
|
||||
};
|
||||
|
||||
/// This class provides access to building LLVM's passes.
|
||||
|
@ -237,6 +237,10 @@ static cl::opt<bool>
|
||||
EnableCHR("enable-chr-npm", cl::init(true), cl::Hidden,
|
||||
cl::desc("Enable control height reduction optimization (CHR)"));
|
||||
|
||||
static cl::opt<bool> EnableCallGraphProfile(
|
||||
"enable-npm-call-graph-profile", cl::init(true), cl::Hidden,
|
||||
cl::desc("Enable call graph profile pass for the new PM (default = on)"));
|
||||
|
||||
PipelineTuningOptions::PipelineTuningOptions() {
|
||||
LoopInterleaving = EnableLoopInterleaving;
|
||||
LoopVectorization = EnableLoopVectorization;
|
||||
@ -246,6 +250,7 @@ PipelineTuningOptions::PipelineTuningOptions() {
|
||||
Coroutines = false;
|
||||
LicmMssaOptCap = SetLicmMssaOptCap;
|
||||
LicmMssaNoAccForPromotionCap = SetLicmMssaNoAccForPromotionCap;
|
||||
CallGraphProfile = EnableCallGraphProfile;
|
||||
}
|
||||
|
||||
extern cl::opt<bool> EnableHotColdSplit;
|
||||
@ -1060,7 +1065,8 @@ ModulePassManager PassBuilder::buildModuleOptimizationPipeline(
|
||||
// Add the core optimizing pipeline.
|
||||
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(OptimizePM)));
|
||||
|
||||
MPM.addPass(CGProfilePass());
|
||||
if (PTO.CallGraphProfile)
|
||||
MPM.addPass(CGProfilePass());
|
||||
|
||||
// Now we need to do some global optimization transforms.
|
||||
// FIXME: It would seem like these should come first in the optimization
|
||||
|
11
test/Other/new-pm-cgprofile.ll
Normal file
11
test/Other/new-pm-cgprofile.ll
Normal file
@ -0,0 +1,11 @@
|
||||
; RUN: opt -debug-pass-manager -passes='default<O2>' %s 2>&1 |FileCheck %s --check-prefixes=DEFAULT
|
||||
; RUN: opt -debug-pass-manager -passes='default<O2>' -enable-npm-call-graph-profile=0 %s 2>&1 |FileCheck %s --check-prefixes=OFF
|
||||
; RUN: opt -debug-pass-manager -passes='default<O2>' -enable-npm-call-graph-profile=1 %s 2>&1 |FileCheck %s --check-prefixes=ON
|
||||
;
|
||||
; DEFAULT: Running pass: CGProfilePass
|
||||
; OFF-NOT: Running pass: CGProfilePass
|
||||
; ON: Running pass: CGProfilePass
|
||||
|
||||
define void @foo() {
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user