1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00

Avoid unnecessarily copying APInt objects.

llvm-svn: 53065
This commit is contained in:
Dan Gohman 2008-07-03 00:52:03 +00:00
parent 27986beb10
commit 3a3ea83ef7

View File

@ -1601,7 +1601,7 @@ void SelectionDAG::ComputeMaskedBits(SDOperand Op, const APInt &Mask,
}
case ISD::SREM:
if (ConstantSDNode *Rem = dyn_cast<ConstantSDNode>(Op.getOperand(1))) {
APInt RA = Rem->getAPIntValue();
const APInt &RA = Rem->getAPIntValue();
if (RA.isPowerOf2() || (-RA).isPowerOf2()) {
APInt LowBits = RA.isStrictlyPositive() ? (RA - 1) : ~RA;
APInt Mask2 = LowBits | APInt::getSignBit(BitWidth);
@ -1623,7 +1623,7 @@ void SelectionDAG::ComputeMaskedBits(SDOperand Op, const APInt &Mask,
return;
case ISD::UREM: {
if (ConstantSDNode *Rem = dyn_cast<ConstantSDNode>(Op.getOperand(1))) {
APInt RA = Rem->getAPIntValue();
const APInt &RA = Rem->getAPIntValue();
if (RA.isPowerOf2()) {
APInt LowBits = (RA - 1);
APInt Mask2 = LowBits & Mask;
@ -2305,7 +2305,7 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT VT,
if (N1C) {
if (N2C) {
APInt C1 = N1C->getAPIntValue(), C2 = N2C->getAPIntValue();
const APInt &C1 = N1C->getAPIntValue(), &C2 = N2C->getAPIntValue();
switch (Opcode) {
case ISD::ADD: return getConstant(C1 + C2, VT);
case ISD::SUB: return getConstant(C1 - C2, VT);