From f84b6300445e726f318ecafd8fec4048a7af1d6e Mon Sep 17 00:00:00 2001 From: Dehao Chen Date: Tue, 23 Feb 2016 03:39:24 +0000 Subject: Add prefix based function layout when profile is available. Summary: If a function is hot, put it in text.hot section. Reviewers: davidxl Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D17532 llvm-svn: 261607 --- llvm/lib/ProfileData/ProfileSummary.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'llvm/lib/ProfileData') diff --git a/llvm/lib/ProfileData/ProfileSummary.cpp b/llvm/lib/ProfileData/ProfileSummary.cpp index 0e2c43e5e91..a98af2c462c 100644 --- a/llvm/lib/ProfileData/ProfileSummary.cpp +++ b/llvm/lib/ProfileData/ProfileSummary.cpp @@ -11,6 +11,8 @@ // //===----------------------------------------------------------------------===// +#include "llvm/IR/Attributes.h" +#include "llvm/IR/Function.h" #include "llvm/ProfileData/InstrProf.h" #include "llvm/ProfileData/ProfileCommon.h" #include "llvm/ProfileData/SampleProf.h" @@ -75,6 +77,24 @@ void ProfileSummary::computeDetailedSummary() { } } +// Returns true if the function is a hot function. +bool ProfileSummary::isFunctionHot(const Function *F) { + // FIXME: update when summary data is stored in module's metadata. + return false; +} + +// Returns true if the function is a cold function. +bool ProfileSummary::isFunctionUnlikely(const Function *F) { + if (F->hasFnAttribute(Attribute::Cold)) { + return true; + } + if (!F->getEntryCount()) { + return false; + } + // FIXME: update when summary data is stored in module's metadata. + return (*F->getEntryCount()) == 0; +} + InstrProfSummary::InstrProfSummary(const IndexedInstrProf::Summary &S) : ProfileSummary(), MaxInternalBlockCount(S.get( IndexedInstrProf::Summary::MaxInternalBlockCount)), -- cgit v1.2.3