[BOLT] Add function layout class
This patch adds a dedicated class to keep track of each function's layout. It also lays the groundwork for splitting functions into multiple fragments (as opposed to a strict hot/cold split). Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D129518
This commit is contained in:
@@ -70,7 +70,7 @@ void BoltAddressTranslation::write(raw_ostream &OS) {
|
||||
<< Twine::utohexstr(Function.getOutputAddress()) << "\n");
|
||||
MapTy Map;
|
||||
const bool IsSplit = Function.isSplit();
|
||||
for (BinaryBasicBlock *&BB : Function.layout()) {
|
||||
for (const BinaryBasicBlock *BB : Function.getLayout().blocks()) {
|
||||
if (IsSplit && BB->isCold())
|
||||
break;
|
||||
writeEntriesForBB(Map, *BB, Function.getOutputAddress());
|
||||
@@ -83,7 +83,7 @@ void BoltAddressTranslation::write(raw_ostream &OS) {
|
||||
// Cold map
|
||||
Map.clear();
|
||||
LLVM_DEBUG(dbgs() << " Cold part\n");
|
||||
for (BinaryBasicBlock *&BB : Function.layout()) {
|
||||
for (const BinaryBasicBlock *BB : Function.getLayout().blocks()) {
|
||||
if (!BB->isCold())
|
||||
continue;
|
||||
writeEntriesForBB(Map, *BB, Function.cold().getAddress());
|
||||
|
||||
Reference in New Issue
Block a user