[APInt] Fix a few places that use APInt::getRawData to operate within the normal API.

getRawData exposes the internal type of the APInt class directly to its users. Ideally we wouldn't expose such an implementation detail.

This patch fixes a few of the easy cases by using truncate, extract, or a rotate.

llvm-svn: 301105
This commit is contained in:
Craig Topper 2017-04-23 06:41:11 +00:00
parent cdd5ae6676
commit 474e5de72d
3 changed files with 5 additions and 8 deletions

View File

@ -1949,8 +1949,7 @@ bool MIParser::getHexUint(APInt &Result) {
return true;
StringRef V = S.substr(2);
APInt A(V.size()*4, V, 16);
Result = APInt(A.getActiveBits(),
ArrayRef<uint64_t>(A.getRawData(), A.getNumWords()));
Result = A.zextOrTrunc(A.getActiveBits());
return false;
}

View File

@ -158,9 +158,7 @@ SDValue DAGTypeLegalizer::SoftenFloatRes_ConstantFP(SDNode *N, unsigned ResNo) {
// and the low 64 bits here.
if (DAG.getDataLayout().isBigEndian() &&
CN->getValueType(0).getSimpleVT() == llvm::MVT::ppcf128) {
uint64_t words[2] = { CN->getValueAPF().bitcastToAPInt().getRawData()[1],
CN->getValueAPF().bitcastToAPInt().getRawData()[0] };
APInt Val(128, words);
APInt Val = CN->getValueAPF().bitcastToAPInt().rotl(64);
return DAG.getConstant(Val, SDLoc(CN),
TLI.getTypeToTransformTo(*DAG.getContext(),
CN->getValueType(0)));
@ -1060,10 +1058,10 @@ void DAGTypeLegalizer::ExpandFloatRes_ConstantFP(SDNode *N, SDValue &Lo,
APInt C = cast<ConstantFPSDNode>(N)->getValueAPF().bitcastToAPInt();
SDLoc dl(N);
Lo = DAG.getConstantFP(APFloat(DAG.EVTToAPFloatSemantics(NVT),
APInt(64, C.getRawData()[1])),
C.extractBits(64, 64)),
dl, NVT);
Hi = DAG.getConstantFP(APFloat(DAG.EVTToAPFloatSemantics(NVT),
APInt(64, C.getRawData()[0])),
C.extractBits(64, 0)),
dl, NVT);
}

View File

@ -124,7 +124,7 @@ void llvm::HexagonLowerToMC(const MCInstrInfo &MCII, const MachineInstr *MI,
// FP immediates are used only when setting GPRs, so they may be dealt
// with like regular immediates from this point on.
auto Expr = HexagonMCExpr::create(
MCConstantExpr::create(*Val.bitcastToAPInt().getRawData(),
MCConstantExpr::create(Val.bitcastToAPInt().getZExtValue(),
AP.OutContext),
AP.OutContext);
HexagonMCInstrInfo::setMustExtend(*Expr, MustExtend);