mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
[mips] When double precision loads and stores are split into two i32 loads and
stores, make sure the load or store that accesses the higher half does not have an alignment that is larger than the offset from the original address. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190318 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
54cf1413ac
commit
2dd3afc5e6
@ -645,7 +645,7 @@ SDValue MipsSETargetLowering::lowerLOAD(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue Hi = DAG.getLoad(MVT::i32, DL, Lo.getValue(1), Ptr,
|
||||
MachinePointerInfo(), Nd.isVolatile(),
|
||||
Nd.isNonTemporal(), Nd.isInvariant(),
|
||||
Nd.getAlignment());
|
||||
std::min(Nd.getAlignment(), 4U));
|
||||
|
||||
if (!Subtarget->isLittle())
|
||||
std::swap(Lo, Hi);
|
||||
@ -681,8 +681,8 @@ SDValue MipsSETargetLowering::lowerSTORE(SDValue Op, SelectionDAG &DAG) const {
|
||||
// i32 store to higher address.
|
||||
Ptr = DAG.getNode(ISD::ADD, DL, PtrVT, Ptr, DAG.getConstant(4, PtrVT));
|
||||
return DAG.getStore(Chain, DL, Hi, Ptr, MachinePointerInfo(),
|
||||
Nd.isVolatile(), Nd.isNonTemporal(), Nd.getAlignment(),
|
||||
Nd.getTBAAInfo());
|
||||
Nd.isVolatile(), Nd.isNonTemporal(),
|
||||
std::min(Nd.getAlignment(), 4U), Nd.getTBAAInfo());
|
||||
}
|
||||
|
||||
SDValue MipsSETargetLowering::lowerMulDiv(SDValue Op, unsigned NewOpc,
|
||||
|
Loading…
x
Reference in New Issue
Block a user