diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2016-06-08 10:01:20 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2016-06-08 10:01:20 +0000 |
commit | 46e38f36785508dc6f90e642c68e4a72a493e8f5 (patch) | |
tree | 290f0903a81451736d6c920ef4b50bba0e995325 /llvm/lib/Target/X86 | |
parent | acadc8e0d64e90cded8f63a154ab3111a1d294f9 (diff) | |
download | bcm5719-llvm-46e38f36785508dc6f90e642c68e4a72a493e8f5.tar.gz bcm5719-llvm-46e38f36785508dc6f90e642c68e4a72a493e8f5.zip |
Avoid copies of std::strings and APInt/APFloats where we only read from it
As suggested by clang-tidy's performance-unnecessary-copy-initialization.
This can easily hit lifetime issues, so I audited every change and ran the
tests under asan, which came back clean.
llvm-svn: 272126
Diffstat (limited to 'llvm/lib/Target/X86')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86MCInstLower.cpp | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index ddb85db34b6..af96316e4b1 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -4764,7 +4764,7 @@ static bool getTargetShuffleMaskIndices(SDValue MaskNode, if (VT.getScalarSizeInBits() != MaskEltSizeInBits) return false; if (auto *CN = dyn_cast<ConstantSDNode>(MaskNode.getOperand(0))) { - APInt MaskElement = CN->getAPIntValue(); + const APInt &MaskElement = CN->getAPIntValue(); for (unsigned i = 0, e = VT.getVectorNumElements(); i != e; ++i) { APInt RawElt = MaskElement.getLoBits(MaskEltSizeInBits); RawMask.push_back(RawElt.getZExtValue()); @@ -26928,7 +26928,7 @@ static SDValue combineShiftLeft(SDNode *N, SelectionDAG &DAG) { N0.getOperand(1).getOpcode() == ISD::Constant) { SDValue N00 = N0.getOperand(0); APInt Mask = cast<ConstantSDNode>(N0.getOperand(1))->getAPIntValue(); - APInt ShAmt = N1C->getAPIntValue(); + const APInt &ShAmt = N1C->getAPIntValue(); Mask = Mask.shl(ShAmt); bool MaskOK = false; // We can handle cases concerning bit-widening nodes containing setcc_c if @@ -27044,7 +27044,7 @@ static SDValue performShiftToAllZeros(SDNode *N, SelectionDAG &DAG, SDLoc DL(N); if (auto *AmtBV = dyn_cast<BuildVectorSDNode>(Amt)) if (auto *AmtSplat = AmtBV->getConstantSplatNode()) { - APInt ShiftAmt = AmtSplat->getAPIntValue(); + const APInt &ShiftAmt = AmtSplat->getAPIntValue(); unsigned MaxAmount = VT.getSimpleVT().getVectorElementType().getSizeInBits(); @@ -30330,7 +30330,7 @@ static bool clobbersFlagRegisters(const SmallVector<StringRef, 4> &AsmPieces) { bool X86TargetLowering::ExpandInlineAsm(CallInst *CI) const { InlineAsm *IA = cast<InlineAsm>(CI->getCalledValue()); - std::string AsmStr = IA->getAsmString(); + const std::string &AsmStr = IA->getAsmString(); IntegerType *Ty = dyn_cast<IntegerType>(CI->getType()); if (!Ty || Ty->getBitWidth() % 16 != 0) diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp index 00debd849cd..86bae3e08db 100644 --- a/llvm/lib/Target/X86/X86MCInstLower.cpp +++ b/llvm/lib/Target/X86/X86MCInstLower.cpp @@ -1543,7 +1543,7 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { CS << CI->getZExtValue(); } else { // print multi-word constant as (w0,w1) - auto Val = CI->getValue(); + const auto &Val = CI->getValue(); CS << "("; for (int i = 0, N = Val.getNumWords(); i < N; ++i) { if (i > 0) |