forked from OSchip/llvm-project
Pass -fprofile-sample-use to lto backends.
Summary: LTO backend will not invoke SampleProfileLoader pass even if -fprofile-sample-use is specified. This patch passes the flag down so that pass manager can add the SampleProfileLoader pass correctly. Reviewers: mehdi_amini, tejohnson Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D28588 llvm-svn: 291774
This commit is contained in:
parent
3d4cc68b8b
commit
bd3689de91
|
@ -862,7 +862,8 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager(
|
|||
}
|
||||
|
||||
static void runThinLTOBackend(ModuleSummaryIndex *CombinedIndex, Module *M,
|
||||
std::unique_ptr<raw_pwrite_stream> OS) {
|
||||
std::unique_ptr<raw_pwrite_stream> OS,
|
||||
std::string SampleProfile) {
|
||||
StringMap<std::map<GlobalValue::GUID, GlobalValueSummary *>>
|
||||
ModuleToDefinedGVSummaries;
|
||||
CombinedIndex->collectDefinedGVSummariesPerModule(ModuleToDefinedGVSummaries);
|
||||
|
@ -930,6 +931,7 @@ static void runThinLTOBackend(ModuleSummaryIndex *CombinedIndex, Module *M,
|
|||
return llvm::make_unique<lto::NativeObjectStream>(std::move(OS));
|
||||
};
|
||||
lto::Config Conf;
|
||||
Conf.SampleProfile = SampleProfile;
|
||||
if (Error E = thinBackend(
|
||||
Conf, 0, AddStream, *M, *CombinedIndex, ImportList,
|
||||
ModuleToDefinedGVSummaries[M->getModuleIdentifier()], ModuleMap)) {
|
||||
|
@ -965,7 +967,8 @@ void clang::EmitBackendOutput(DiagnosticsEngine &Diags,
|
|||
// of an error).
|
||||
bool DoThinLTOBackend = CombinedIndex != nullptr;
|
||||
if (DoThinLTOBackend) {
|
||||
runThinLTOBackend(CombinedIndex.get(), M, std::move(OS));
|
||||
runThinLTOBackend(CombinedIndex.get(), M, std::move(OS),
|
||||
CGOpts.SampleProfileFile);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
; RUN: not %clang_cc1 -O2 -o %t1.o -x c %s -c -fthinlto-index=%t.thinlto.bc 2>&1 | FileCheck %s -check-prefix=CHECK-WARNING
|
||||
; CHECK-WARNING: error: invalid argument '-fthinlto-index={{.*}}' only allowed with '-x ir'
|
||||
|
||||
; Ensure sample profile pass are passed to backend
|
||||
; RUN: %clang -O2 -o %t4.o -x ir %t1.o -c -fthinlto-index=%t.thinlto.bc -fprofile-sample-use=%S/Inputs/pgo-sample.prof -mllvm -debug-pass=Structure 2>&1 | FileCheck %s -check-prefix=CHECK-SAMPLEPGO
|
||||
; CHECK-SAMPLEPGO: Sample profile pass
|
||||
|
||||
; Ensure we get expected error for missing index file
|
||||
; RUN: %clang -O2 -o %t4.o -x ir %t1.o -c -fthinlto-index=bad.thinlto.bc 2>&1 | FileCheck %s -check-prefix=CHECK-ERROR1
|
||||
; CHECK-ERROR1: Error loading index file 'bad.thinlto.bc'
|
||||
|
|
Loading…
Reference in New Issue