forked from OSchip/llvm-project
parent
b1cba3f91e
commit
b9d0a961f9
|
@ -14,16 +14,17 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef INLINER_H
|
||||
#define INLINER_H
|
||||
#ifndef LLVM_TRANSFORMS_IPO_INLINERPASS_H
|
||||
#define LLVM_TRANSFORMS_IPO_INLINERPASS_H
|
||||
|
||||
#include "llvm/CallGraphSCCPass.h"
|
||||
#include "llvm/Transforms/Utils/InlineCost.h"
|
||||
|
||||
|
||||
namespace llvm {
|
||||
class CallSite;
|
||||
class TargetData;
|
||||
class InlineCost;
|
||||
template<class PtrType, unsigned SmallSize>
|
||||
class SmallPtrSet;
|
||||
|
||||
/// Inliner - This class contains all of the helper code which is used to
|
||||
/// perform the inlining operations that do not depend on the policy.
|
||||
|
@ -45,11 +46,6 @@ struct Inliner : public CallGraphSCCPass {
|
|||
// processing to avoid breaking the SCC traversal.
|
||||
virtual bool doFinalization(CallGraph &CG);
|
||||
|
||||
// InlineCallIfPossible
|
||||
bool InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
||||
const SmallPtrSet<Function*, 8> &SCCFunctions,
|
||||
const TargetData *TD);
|
||||
|
||||
/// This method returns the value specified by the -inline-threshold value,
|
||||
/// specified on the command line. This is typically not directly needed.
|
||||
///
|
||||
|
@ -83,6 +79,10 @@ private:
|
|||
/// shouldInline - Return true if the inliner should attempt to
|
||||
/// inline at the given CallSite.
|
||||
bool shouldInline(CallSite CS);
|
||||
|
||||
bool InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
||||
const SmallPtrSet<Function*, 8> &SCCFunctions,
|
||||
const TargetData *TD);
|
||||
};
|
||||
|
||||
} // End llvm namespace
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#ifndef LLVM_TRANSFORMS_UTILS_INLINECOST_H
|
||||
#define LLVM_TRANSFORMS_UTILS_INLINECOST_H
|
||||
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include <cassert>
|
||||
#include <climits>
|
||||
#include <map>
|
||||
|
@ -25,6 +24,8 @@ namespace llvm {
|
|||
class Value;
|
||||
class Function;
|
||||
class CallSite;
|
||||
template<class PtrType, unsigned SmallSize>
|
||||
class SmallPtrSet;
|
||||
|
||||
/// InlineCost - Represent the cost of inlining a function. This
|
||||
/// supports special values for functions which should "always" or
|
||||
|
|
|
@ -21,10 +21,12 @@
|
|||
#include "llvm/Support/CallSite.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/Transforms/IPO/InlinerPass.h"
|
||||
#include "llvm/Transforms/Utils/InlineCost.h"
|
||||
#include "llvm/Transforms/Utils/Cloning.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include <set>
|
||||
using namespace llvm;
|
||||
|
@ -57,7 +59,8 @@ bool Inliner::InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
|||
Function *Callee = CS.getCalledFunction();
|
||||
Function *Caller = CS.getCaller();
|
||||
|
||||
if (!InlineFunction(CS, &CG, TD)) return false;
|
||||
if (!InlineFunction(CS, &CG, TD))
|
||||
return false;
|
||||
|
||||
// If the inlined function had a higher stack protection level than the
|
||||
// calling function, then bump up the caller's stack protection level.
|
||||
|
|
Loading…
Reference in New Issue