[PATCH] D95269: [SampleFDO] Report error when reading a bad/incompatible profile instead of turning off profile use silently.
Wei Mi via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 25 10:28:51 PST 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc9cd9a006632: [SampleFDO] Report error when reading a bad/incompatible profile instead of (authored by wmi).
Changed prior to commit:
https://reviews.llvm.org/D95269?vs=318666&id=319053#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95269/new/
https://reviews.llvm.org/D95269
Files:
llvm/lib/Transforms/IPO/SampleProfile.cpp
llvm/test/Transforms/SampleProfile/Inputs/bad.extbinary.afdo
llvm/test/Transforms/SampleProfile/profile-format.ll
Index: llvm/test/Transforms/SampleProfile/profile-format.ll
===================================================================
--- llvm/test/Transforms/SampleProfile/profile-format.ll
+++ llvm/test/Transforms/SampleProfile/profile-format.ll
@@ -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:
Index: llvm/lib/Transforms/IPO/SampleProfile.cpp
===================================================================
--- llvm/lib/Transforms/IPO/SampleProfile.cpp
+++ llvm/lib/Transforms/IPO/SampleProfile.cpp
@@ -1948,7 +1948,12 @@
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 @@
bool SampleProfileLoader::runOnModule(Module &M, ModuleAnalysisManager *AM,
ProfileSummaryInfo *_PSI, CallGraph *CG) {
- if (!ProfileIsValid)
- return false;
GUIDToFuncNameMapper Mapper(M, *Reader, GUIDToFuncNameMap);
PSI = _PSI;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95269.319053.patch
Type: text/x-patch
Size: 2394 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210125/3a6bb77b/attachment.bin>
More information about the llvm-commits
mailing list