LLVM: lib/Transforms/Instrumentation/PGOForceFunctionAttrs.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

15

16using namespace llvm;

17

20 if (F.isDeclaration())

21 return false;

22

23 if (F.hasOptNone() || F.hasOptSize())

24 return false;

25 if (F.hasFnAttribute(Attribute::Cold))

26 return true;

28 return false;

31}

32

40 bool MadeChange = false;

43 continue;

44 switch (ColdType) {

47 break;

49 F.addFnAttr(Attribute::OptimizeForSize);

50 break;

52 F.addFnAttr(Attribute::MinSize);

53 break;

55

56 if (F.hasFnAttribute(Attribute::AlwaysInline))

57 continue;

58 F.addFnAttr(Attribute::OptimizeNone);

59 F.addFnAttr(Attribute::NoInline);

60 break;

61 }

62 MadeChange = true;

63 }

65}

Module.h This file contains the declarations for the Module class.

This header defines various interfaces for pass management in LLVM.

static bool shouldRunOnFunction(Function &F, ProfileSummaryInfo &PSI, FunctionAnalysisManager &FAM)

Definition PGOForceFunctionAttrs.cpp:18

FunctionAnalysisManager FAM

PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)

Get the result of an analysis pass for a given IR unit.

Analysis pass which computes BlockFrequencyInfo.

BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequen...

A Module instance is used to store all the information related to an LLVM module.

A set of analyses that are preserved following a run of a transformation pass.

static PreservedAnalyses none()

Convenience factory function for the empty preserved set.

static PreservedAnalyses all()

Construct a special preserved set that preserves all passes.

An analysis pass based on the new PM to deliver ProfileSummaryInfo.

Analysis providing profile information.

bool hasProfileSummary() const

Returns true if profile summary is available.

bool isFunctionColdInCallGraph(const FuncT *F, BFIT &BFI) const

Returns true if F contains only cold code.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

This is an optimization pass for GlobalISel generic memory operations.

InnerAnalysisManagerProxy< FunctionAnalysisManager, Module > FunctionAnalysisManagerModuleProxy

Provide the FunctionAnalysisManager to Module proxy.

AnalysisManager< Function > FunctionAnalysisManager

Convenience typedef for the Function analysis manager.

AnalysisManager< Module > ModuleAnalysisManager

Convenience typedef for the Module analysis manager.

PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)

Definition PGOForceFunctionAttrs.cpp:33