Home | History | Annotate | Download | only in Scalar

Lines Matching defs:GVN

1 //===- GVN.cpp - Eliminate redundant values and loads ---------------------===//
18 #define DEBUG_TYPE "gvn"
439 // GVN Pass
444 class GVN : public FunctionPass {
465 explicit GVN(bool noloads = false)
560 char GVN::ID = 0;
565 return new GVN(NoLoads);
568 INITIALIZE_PASS_BEGIN(GVN, "gvn", "Global Value Numbering", false, false)
572 INITIALIZE_PASS_END(GVN, "gvn", "Global Value Numbering", false, false)
574 void GVN::dump(DenseMap<uint32_t, Value*>& d) {
983 GVN &gvn) {
984 const TargetData &TD = *gvn.getTargetData();
1014 DEBUG(dbgs() << "GVN WIDENED LOAD: " << *SrcVal << "\n");
1026 // We would like to use gvn.markInstructionForDeletion here, but we can't
1027 // because the load is already memoized into the leader map table that GVN
1031 gvn.getMemDep().removeInstruction(SrcVal);
1162 Value *MaterializeAdjustedValue(Type *LoadTy, GVN &gvn) const {
1167 const TargetData *TD = gvn.getTargetData();
1172 DEBUG(dbgs() << "GVN COERCED NONLOCAL VAL:\nOffset: " << Offset << " "
1182 gvn);
1184 DEBUG(dbgs() << "GVN COERCED NONLOCAL LOAD:\nOffset: " << Offset << " "
1189 const TargetData *TD = gvn.getTargetData();
1193 DEBUG(dbgs() << "GVN COERCED NONLOCAL MEM INTRIN:\nOffset: " << Offset
1208 GVN &gvn) {
1212 gvn.getDominatorTree().properlyDominates(ValuesPerBlock[0].BB,
1214 return ValuesPerBlock[0].MaterializeAdjustedValue(LI->getType(), gvn);
1230 SSAUpdate.AddAvailableValue(BB, AV.MaterializeAdjustedValue(LoadTy, gvn));
1238 AliasAnalysis *AA = gvn.getAliasAnalysis();
1266 bool GVN::processNonLocalLoad(LoadInst *LI) {
1286 dbgs() << "GVN: non-local load ";
1426 DEBUG(dbgs() << "GVN REMOVING NONLOCAL LOAD: " << *LI << '\n');
1624 DEBUG(dbgs() << "GVN REMOVING PRE LOAD: " << *LI << '\n');
1658 DEBUG(dbgs() << "GVN INSERTED " << *NewLoad << '\n');
1675 bool GVN::processLoad(LoadInst *L) {
1741 DEBUG(dbgs() << "GVN COERCED INST:\n" << *Dep.getInst() << '\n'
1758 dbgs() << "GVN: load ";
1773 dbgs() << "GVN: load ";
1794 DEBUG(dbgs() << "GVN COERCED STORE:\n" << *DepSI << '\n' << *StoredVal
1823 DEBUG(dbgs() << "GVN COERCED LOAD:\n" << *DepLI << "\n" << *AvailableVal
1868 Value *GVN::findLeader(BasicBlock *BB, uint32_t num) {
1894 unsigned GVN::replaceAllDominatedUsesWith(Value *From, Value *To,
1914 bool GVN::propagateEquality(Value *LHS, Value *RHS, BasicBlock *Root) {
2021 bool GVN::processInstruction(Instruction *I) {
2127 bool GVN::runOnFunction(Function& F) {
2152 DEBUG(dbgs() << "GVN iteration: " << Iteration << "\n");
2167 // FIXME: Should perform GVN again after PRE does something. PRE can move
2170 // Actually, when this happens, we should just fully integrate PRE into GVN.
2178 bool GVN::processBlock(BasicBlock *BB) {
2203 DEBUG(dbgs() << "GVN removed: " << **I << '\n');
2221 bool GVN::performPRE(Function &F) {
2376 DEBUG(dbgs() << "GVN PRE removed: " << *CurInst << '\n');
2392 bool GVN::splitCriticalEdges() {
2403 /// iterateOnFunction - Executes one iteration of GVN
2404 bool GVN::iterateOnFunction(Function &F) {
2424 void GVN::cleanupGlobalSets() {
2432 void GVN::verifyRemoved(const Instruction *Inst) const {