#include "bolt/Passes/StackAvailableExpressions.h"
#include "bolt/Passes/FrameAnalysis.h"
#include "bolt/Passes/RegAnalysis.h"
#include "llvm/MC/MCRegisterInfo.h"
#define DEBUG_TYPE …
namespace llvm {
namespace bolt {
StackAvailableExpressions::StackAvailableExpressions(const RegAnalysis &RA,
const FrameAnalysis &FA,
BinaryFunction &BF)
: … { … }
void StackAvailableExpressions::preflight() { … }
BitVector
StackAvailableExpressions::getStartingStateAtBB(const BinaryBasicBlock &BB) { … }
BitVector
StackAvailableExpressions::getStartingStateAtPoint(const MCInst &Point) { … }
void StackAvailableExpressions::doConfluence(BitVector &StateOut,
const BitVector &StateIn) { … }
namespace {
bool isLoadRedundant(const FrameIndexEntry &LoadFIE,
const FrameIndexEntry &StoreFIE) { … }
}
bool StackAvailableExpressions::doesXKillsY(const MCInst *X, const MCInst *Y) { … }
BitVector StackAvailableExpressions::computeNext(const MCInst &Point,
const BitVector &Cur) { … }
}
}