projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Filtering IR printing for print-after-all/print-before-all
[oota-llvm.git]
/
lib
/
CodeGen
/
SpillPlacement.h
diff --git
a/lib/CodeGen/SpillPlacement.h
b/lib/CodeGen/SpillPlacement.h
index 105516bb62b1d3b94342f6d7967e6b56db3a4671..03dd58d6e9a978a52f13d03f5eb2112af5b4d36e 100644
(file)
--- a/
lib/CodeGen/SpillPlacement.h
+++ b/
lib/CodeGen/SpillPlacement.h
@@
-24,8
+24,8
@@
//
//===----------------------------------------------------------------------===//
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CODEGEN_SPILLPLACEMENT_H
-#define LLVM_CODEGEN_SPILLPLACEMENT_H
+#ifndef LLVM_
LIB_
CODEGEN_SPILLPLACEMENT_H
+#define LLVM_
LIB_
CODEGEN_SPILLPLACEMENT_H
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
@@
-38,12
+38,14
@@
class BitVector;
class EdgeBundles;
class MachineBasicBlock;
class MachineLoopInfo;
class EdgeBundles;
class MachineBasicBlock;
class MachineLoopInfo;
+class MachineBlockFrequencyInfo;
-class SpillPlacement
: public MachineFunctionPass {
+class SpillPlacement : public MachineFunctionPass {
struct Node;
const MachineFunction *MF;
const EdgeBundles *bundles;
const MachineLoopInfo *loops;
struct Node;
const MachineFunction *MF;
const EdgeBundles *bundles;
const MachineLoopInfo *loops;
+ const MachineBlockFrequencyInfo *MBFI;
Node *nodes;
// Nodes that are active in the current computation. Owned by the prepare()
Node *nodes;
// Nodes that are active in the current computation. Owned by the prepare()
@@
-58,13
+60,17
@@
class SpillPlacement : public MachineFunctionPass {
SmallVector<unsigned, 8> RecentPositive;
// Block frequencies are computed once. Indexed by block number.
SmallVector<unsigned, 8> RecentPositive;
// Block frequencies are computed once. Indexed by block number.
- SmallVector<BlockFrequency, 4> BlockFrequencies;
+ SmallVector<BlockFrequency, 8> BlockFrequencies;
+
+ /// Decision threshold. A node gets the output value 0 if the weighted sum of
+ /// its inputs falls in the open interval (-Threshold;Threshold).
+ BlockFrequency Threshold;
public:
static char ID; // Pass identification, replacement for typeid.
public:
static char ID; // Pass identification, replacement for typeid.
- SpillPlacement() : MachineFunctionPass(ID), nodes(
0
) {}
- ~SpillPlacement() { releaseMemory(); }
+ SpillPlacement() : MachineFunctionPass(ID), nodes(
nullptr
) {}
+ ~SpillPlacement()
override
{ releaseMemory(); }
/// BorderConstraint - A basic block has separate constraints for entry and
/// exit.
/// BorderConstraint - A basic block has separate constraints for entry and
/// exit.
@@
-145,11
+151,12
@@
public:
}
private:
}
private:
-
virtual bool runOnMachineFunction(MachineFunction&)
;
- v
irtual void getAnalysisUsage(AnalysisUsage&) const
;
- v
irtual void releaseMemory()
;
+
bool runOnMachineFunction(MachineFunction&) override
;
+ v
oid getAnalysisUsage(AnalysisUsage&) const override
;
+ v
oid releaseMemory() override
;
void activate(unsigned);
void activate(unsigned);
+ void setThreshold(const BlockFrequency &Entry);
};
} // end namespace llvm
};
} // end namespace llvm