Go to the documentation of this file.
26 #ifndef LLVM_LIB_CODEGEN_SPILLPLACEMENT_H
27 #define LLVM_LIB_CODEGEN_SPILLPLACEMENT_H
39 class MachineBlockFrequencyInfo;
40 class MachineFunction;
41 class MachineLoopInfo;
156 return BlockFrequencies[
Number];
162 void releaseMemory()
override;
164 void activate(
unsigned n);
167 bool update(
unsigned n);
172 #endif // LLVM_LIB_CODEGEN_SPILLPLACEMENT_H
~SpillPlacement() override
This is an optimization pass for GlobalISel generic memory operations.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void iterate()
iterate - Update the network iteratively until convergence, or new bundles are found.
void addConstraints(ArrayRef< BlockConstraint > LiveBlocks)
addConstraints - Add constraints and biases.
bool ChangesValue
True when this block changes the value of the live range.
MachineBlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate machine basic b...
Represent the analysis usage information of a pass.
bool finish()
finish - Compute the optimal spill code placement given the constraints.
This class implements an extremely fast bulk output stream that can only output to a stream.
BlockFrequency getBlockFrequency(unsigned Number) const
getBlockFrequency - Return the estimated block execution frequency per function invocation.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
unsigned Number
Basic block number (from MBB::getNumber()).
BorderConstraint Entry
Constraint on block entry.
Node - Each edge bundle corresponds to a Hopfield node.
ArrayRef< unsigned > getRecentPositive()
getRecentPositive - Return an array of bundles that became positive during the previous call to scanA...
@ PrefReg
Block entry/exit prefers a register.
Unify divergent function exit nodes
void addPrefSpill(ArrayRef< unsigned > Blocks, bool Strong)
addPrefSpill - Add PrefSpill constraints to all blocks listed.
@ PrefSpill
Block entry/exit prefers a stack slot.
void addLinks(ArrayRef< unsigned > Links)
addLinks - Add transparent blocks with the given numbers.
@ DontCare
Block doesn't care / variable not live.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
void prepare(BitVector &RegBundles)
prepare - Reset state and prepare for a new spill placement computation.
@ MustSpill
A register is impossible, variable must be spilled.
bool scanActiveBundles()
scanActiveBundles - Perform an initial scan of all bundles activated by addConstraints and addLinks,...
@ PrefBoth
Block entry prefers both register and stack.
void print(raw_ostream &OS) const
BorderConstraint Exit
Constraint on block exit.
The same transformation can work with an even modulo with the addition of a and shrink the compare RHS by the same amount Unless the target supports that transformation probably isn t worthwhile The transformation can also easily be made to work with non zero equality for n
BlockConstraint - Entry and exit constraints for a basic block.
BorderConstraint
BorderConstraint - A basic block has separate constraints for entry and exit.