void BitLevelInfo::propagateBitWidth(MachineOperand &MO) { assert(MO.isReg() && "Wrong operand type!"); unsigned RegNo = MO.getReg(); unsigned char BitWidth = VInstrInfo::getBitWidth(MO); assert(BitWidth && "Bit width not available!"); for (MachineRegisterInfo::use_iterator I = MRI->use_begin(RegNo), E = MRI->use_end(); I != E; ++I) { MachineOperand &MO = I.getOperand(); // Propagate bit width information through the def-use chain. if (updateBitWidth(MO, BitWidth) && (I->isCopy() || I->isPHI())) computeBitWidth(&*I); } }