forked from OSchip/llvm-project
Revert "Add prefix based function layout when profile is available."
This reverts commit r261582, since this bot has been broken for four hours: http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/19399/ llvm-svn: 261604
This commit is contained in:
parent
4e796d0c9f
commit
b3613fce19
|
@ -21,8 +21,6 @@
|
|||
#define LLVM_PROFILEDATA_PROFILE_COMMON_H
|
||||
|
||||
namespace llvm {
|
||||
class Function;
|
||||
class Module;
|
||||
namespace IndexedInstrProf {
|
||||
struct Summary;
|
||||
}
|
||||
|
@ -30,8 +28,6 @@ namespace sampleprof {
|
|||
class FunctionSamples;
|
||||
}
|
||||
struct InstrProfRecord;
|
||||
inline const char *getHotSectionPrefix() { return ".hot"; }
|
||||
inline const char *getUnlikelySectionPrefix() { return ".unlikely"; }
|
||||
// The profile summary is one or more (Cutoff, MinCount, NumCounts) triplets.
|
||||
// The semantics of counts depend on the type of profile. For instrumentation
|
||||
// profile, counts are block counts and for sample profile, counts are
|
||||
|
@ -70,10 +66,6 @@ protected:
|
|||
|
||||
public:
|
||||
static const int Scale = 1000000;
|
||||
// \brief Returns true if F is a hot function.
|
||||
static bool isFunctionHot(const Function *F);
|
||||
// \brief Returns true if F is unlikley executed.
|
||||
static bool isFunctionUnlikely(const Function *F);
|
||||
inline std::vector<ProfileSummaryEntry> &getDetailedSummary();
|
||||
void computeDetailedSummary();
|
||||
/// \brief A vector of useful cutoff values for detailed summary.
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include "llvm/MC/MCSymbolELF.h"
|
||||
#include "llvm/MC/MCValue.h"
|
||||
#include "llvm/ProfileData/InstrProf.h"
|
||||
#include "llvm/ProfileData/ProfileCommon.h"
|
||||
#include "llvm/Support/COFF.h"
|
||||
#include "llvm/Support/Dwarf.h"
|
||||
#include "llvm/Support/ELF.h"
|
||||
|
@ -245,11 +244,6 @@ static StringRef getSectionPrefixForGlobal(SectionKind Kind) {
|
|||
return ".data.rel.ro";
|
||||
}
|
||||
|
||||
static cl::opt<bool> GroupFunctionsByHotness(
|
||||
"group-functions-by-hotness",
|
||||
llvm::cl::desc("Partition hot/cold functions by sections prefix"),
|
||||
cl::init(false));
|
||||
|
||||
static MCSectionELF *
|
||||
selectELFSectionForGlobal(MCContext &Ctx, const GlobalValue *GV,
|
||||
SectionKind Kind, Mangler &Mang,
|
||||
|
@ -302,16 +296,6 @@ selectELFSectionForGlobal(MCContext &Ctx, const GlobalValue *GV,
|
|||
Name = getSectionPrefixForGlobal(Kind);
|
||||
}
|
||||
|
||||
if (GroupFunctionsByHotness) {
|
||||
if (const Function *F = dyn_cast<Function>(GV)) {
|
||||
if (ProfileSummary::isFunctionHot(F)) {
|
||||
Name += getHotSectionPrefix();
|
||||
} else if (ProfileSummary::isFunctionUnlikely(F)) {
|
||||
Name += getUnlikelySectionPrefix();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (EmitUniqueSection && UniqueSectionNames) {
|
||||
Name.push_back('.');
|
||||
TM.getNameWithPrefix(Name, GV, Mang, true);
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/IR/Attributes.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/ProfileData/InstrProf.h"
|
||||
#include "llvm/ProfileData/ProfileCommon.h"
|
||||
#include "llvm/ProfileData/SampleProf.h"
|
||||
|
@ -78,24 +75,6 @@ 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)),
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
; RUN: llc < %s -group-functions-by-hotness=true | FileCheck %s -check-prefix=PARTITION
|
||||
; RUN: llc < %s -function-sections -group-functions-by-hotness=false | FileCheck %s -check-prefix=NO-PARTITION-FUNCTION-SECTION
|
||||
; RUN: llc < %s -function-sections -group-functions-by-hotness=true | FileCheck %s -check-prefix=PARTITION-FUNCTION-SECTION
|
||||
|
||||
; PARTITION: .text.unlikely
|
||||
; PARTITION: .globl _Z3foov
|
||||
; NO-PARTITION-FUNCTION-SECTION: .text._Z3foov
|
||||
; PARTITION-FUNCTION-SECTION: .text.unlikely._Z3foov
|
||||
define i32 @_Z3foov() #0 {
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
; PARTITION: .globl _Z3barv
|
||||
; NO-PARTITION-FUNCTION-SECTION: .text._Z3barv
|
||||
; PARTITION-FUNCTION-SECTION: .text.unlikely._Z3barv
|
||||
define i32 @_Z3barv() #1 !prof !0 {
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; PARTITION: .text
|
||||
; PARTITION: .globl _Z3bazv
|
||||
; NO-PARTITION-FUNCTION-SECTION: .text._Z3bazv
|
||||
; PARTITION-FUNCTION-SECTION: .text._Z3bazv
|
||||
define i32 @_Z3bazv() #1 {
|
||||
ret i32 2
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind uwtable cold }
|
||||
attributes #1 = { nounwind uwtable }
|
||||
|
||||
!0 = !{!"function_entry_count", i64 0}
|
Loading…
Reference in New Issue