mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[SampleFDO] Report error when reading a bad/incompatible profile instead of
turning off SampleFDO silently. Currently sample loader pass turns off SampleFDO optimization silently when it sees error in reading the profile. This behavior will defeat the tests which could have caught those bad/incompatible profile problems. This patch change the behavior to report error. Differential Revision: https://reviews.llvm.org/D95269
This commit is contained in:
parent
e9b75e2e14
commit
6c082dbc2c
@ -1948,7 +1948,12 @@ bool SampleProfileLoader::doInitialization(Module &M,
|
||||
Reader = std::move(ReaderOrErr.get());
|
||||
Reader->setSkipFlatProf(LTOPhase == ThinOrFullLTOPhase::ThinLTOPostLink);
|
||||
Reader->collectFuncsFrom(M);
|
||||
ProfileIsValid = (Reader->read() == sampleprof_error::success);
|
||||
if (std::error_code EC = Reader->read()) {
|
||||
std::string Msg = "profile reading failed: " + EC.message();
|
||||
Ctx.diagnose(DiagnosticInfoSampleProfile(Filename, Msg));
|
||||
return false;
|
||||
}
|
||||
|
||||
PSL = Reader->getProfileSymbolList();
|
||||
|
||||
// While profile-sample-accurate is on, ignore symbol list.
|
||||
@ -2001,8 +2006,6 @@ ModulePass *llvm::createSampleProfileLoaderPass(StringRef Name) {
|
||||
|
||||
bool SampleProfileLoader::runOnModule(Module &M, ModuleAnalysisManager *AM,
|
||||
ProfileSummaryInfo *_PSI, CallGraph *CG) {
|
||||
if (!ProfileIsValid)
|
||||
return false;
|
||||
GUIDToFuncNameMapper Mapper(M, *Reader, GUIDToFuncNameMap);
|
||||
|
||||
PSI = _PSI;
|
||||
|
BIN
test/Transforms/SampleProfile/Inputs/bad.extbinary.afdo
Normal file
BIN
test/Transforms/SampleProfile/Inputs/bad.extbinary.afdo
Normal file
Binary file not shown.
@ -8,6 +8,8 @@
|
||||
; RUN: opt < %s -passes=sample-profile -sample-profile-file=%S/Inputs/inline.md5extbinary.afdo -S | FileCheck %s
|
||||
; RUN: opt < %s -sample-profile -sample-profile-file=%S/Inputs/inline.fixlenmd5.extbinary.afdo -S | FileCheck %s
|
||||
; RUN: opt < %s -passes=sample-profile -sample-profile-file=%S/Inputs/inline.fixlenmd5.extbinary.afdo -S | FileCheck %s
|
||||
; RUN: not opt < %s -sample-profile -sample-profile-file=%S/Inputs/bad.extbinary.afdo -S 2>&1 | FileCheck %s -check-prefix=BAD-PROFILE
|
||||
; RUN: not opt < %s -passes=sample-profile -sample-profile-file=%S/Inputs/bad.extbinary.afdo -S 2>&1 | FileCheck %s -check-prefix=BAD-PROFILE
|
||||
|
||||
; Original C++ test case
|
||||
;
|
||||
@ -38,6 +40,9 @@
|
||||
; CHECK: ![[IDX2]] = !{!"branch_weights", i32 5280, i32 113}
|
||||
; CHECK: ![[IDX3]] = !{!"branch_weights", i32 1}
|
||||
|
||||
; Check sample-profile phase will report error when it is reading a bad profile.
|
||||
; BAD-PROFILE: error: {{.*}}bad.extbinary.afdo: profile reading failed: Malformed sample profile data
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define i32 @_Z3sumii(i32 %x, i32 %y) #0 !dbg !4 {
|
||||
entry:
|
||||
|
Loading…
Reference in New Issue
Block a user