Lines Matching refs:BC

83                                          BinaryContext &BC) const {  in getCallerSavedRegs()
84 if (!BC.MIB->isCall(Inst)) in getCallerSavedRegs()
86 BitVector CallRegs = BitVector(BC.MRI->getNumRegs(), false); in getCallerSavedRegs()
87 BC.MIB->getCalleeSavedRegs(CallRegs); in getCallerSavedRegs()
93 BinaryContext &BC) const { in regIsPossiblyOverwritten()
94 BitVector WrittenRegs = BitVector(BC.MRI->getNumRegs(), false); in regIsPossiblyOverwritten()
95 BC.MIB->getWrittenRegs(Inst, WrittenRegs); in regIsPossiblyOverwritten()
96 getCallerSavedRegs(Inst, WrittenRegs, BC); in regIsPossiblyOverwritten()
97 if (BC.MIB->isRep(Inst)) in regIsPossiblyOverwritten()
98 BC.MIB->getRepRegs(WrittenRegs); in regIsPossiblyOverwritten()
99 WrittenRegs &= BC.MIB->getAliases(Reg, false); in regIsPossiblyOverwritten()
105 BinaryContext &BC) const { in regIsDefinitelyOverwritten()
106 BitVector WrittenRegs = BitVector(BC.MRI->getNumRegs(), false); in regIsDefinitelyOverwritten()
107 BC.MIB->getWrittenRegs(Inst, WrittenRegs); in regIsDefinitelyOverwritten()
108 getCallerSavedRegs(Inst, WrittenRegs, BC); in regIsDefinitelyOverwritten()
109 if (BC.MIB->isRep(Inst)) in regIsDefinitelyOverwritten()
110 BC.MIB->getRepRegs(WrittenRegs); in regIsDefinitelyOverwritten()
111 return (!regIsUsed(Inst, Reg, BC) && WrittenRegs.test(Reg) && in regIsDefinitelyOverwritten()
112 !BC.MIB->isConditionalMove(Inst)); in regIsDefinitelyOverwritten()
116 BinaryContext &BC) const { in regIsUsed()
117 BitVector SrcRegs = BitVector(BC.MRI->getNumRegs(), false); in regIsUsed()
118 BC.MIB->getSrcRegs(Inst, SrcRegs); in regIsUsed()
119 SrcRegs &= BC.MIB->getAliases(Reg, true); in regIsUsed()
126 BinaryContext &BC = BF->getBinaryContext(); in isOverwrittenBeforeUsed() local
144 if (regIsUsed(Inst, Reg, BC)) in isOverwrittenBeforeUsed()
146 if (regIsDefinitelyOverwritten(Inst, Reg, BC)) { in isOverwrittenBeforeUsed()
165 BinaryContext &BC = BF->getBinaryContext(); in constantAndCopyPropagate() local
172 if (BC.MIB->isConditionalMove(OriginalInst)) in constantAndCopyPropagate()
176 if ((!BC.MII->get(OriginalInst.getOpcode()).isMoveImmediate() || in constantAndCopyPropagate()
178 (!BC.MII->get(OriginalInst.getOpcode()).isMoveReg() || in constantAndCopyPropagate()
183 bool ConstantProp = BC.MII->get(OriginalInst.getOpcode()).isMoveImmediate(); in constantAndCopyPropagate()
200 if (regIsUsed(PropagateInst, Reg, BC)) { in constantAndCopyPropagate()
208 Replaced = BC.MIB->replaceRegWithImm( in constantAndCopyPropagate()
211 Replaced = BC.MIB->replaceRegWithReg( in constantAndCopyPropagate()
220 OriginalInst.getOperand(1).getReg(), BC)) in constantAndCopyPropagate()
225 if (regIsPossiblyOverwritten(PropagateInst, Reg, BC)) in constantAndCopyPropagate()
229 if (regIsDefinitelyOverwritten(PropagateInst, Reg, BC)) { in constantAndCopyPropagate()
507 BinaryContext &BC = BF->getBinaryContext(); in duplicateBlocks() local
533 BF->createBasicBlock((BC.Ctx)->createNamedTempSymbol("tail-dup"))); in duplicateBlocks()
635 void TailDuplication::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
639 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
648 100.0 * ModifiedFunctions / BC.getBinaryFunctions().size()) in runOnFunctions()