[PATCH] D23082: [AutoFDO] Fix handling of empty profiles
David Callahan via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 2 12:58:54 PDT 2016
david2050 created this revision.
david2050 added a reviewer: dnovillo.
david2050 added a subscriber: llvm-commits.
If a profile has no samples for a function, then the function "entry count" is set to the value 0. Several places in the code test that if the Function::getEntryCount is defined at all. Here we change to treat a 0 entry count the same as undefined.
In particular, this fixes a problem in getLayoutSuccessorProbThreshold in MachineBlockPlacement.cpp where we use a different and inferior heuristic for laying out basic blocks.
https://reviews.llvm.org/D23082
Files:
lib/IR/Function.cpp
Index: lib/IR/Function.cpp
===================================================================
--- lib/IR/Function.cpp
+++ lib/IR/Function.cpp
@@ -1262,7 +1262,10 @@
if (MDString *MDS = dyn_cast<MDString>(MD->getOperand(0)))
if (MDS->getString().equals("function_entry_count")) {
ConstantInt *CI = mdconst::extract<ConstantInt>(MD->getOperand(1));
- return CI->getValue().getZExtValue();
+ uint64_t Count = CI->getValue().getZExtValue();
+ if(Count == 0)
+ return None;
+ return Count;
}
return None;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23082.66531.patch
Type: text/x-patch
Size: 572 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160802/0e0e6bc6/attachment.bin>
More information about the llvm-commits
mailing list