mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 20:29:53 +00:00
Needs to check whether unaligned load / store of i64 is legal here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79150 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
eb75364020
commit
8a9d5f96a5
@ -3108,9 +3108,8 @@ bool MeetsMaxMemopRequirement(std::vector<EVT> &MemOps,
|
||||
EVT VT = TLI.getOptimalMemOpType(Size, Align, isSrcConst, isSrcStr, DAG);
|
||||
bool AllowUnalign = TLI.allowsUnalignedMemoryAccesses(VT);
|
||||
if (VT != MVT::iAny) {
|
||||
unsigned NewAlign = (unsigned)
|
||||
TLI.getTargetData()->getABITypeAlignment(
|
||||
VT.getTypeForEVT(*DAG.getContext()));
|
||||
const Type *Ty = VT.getTypeForEVT(*DAG.getContext());
|
||||
unsigned NewAlign = (unsigned) TLI.getTargetData()->getABITypeAlignment(Ty);
|
||||
// If source is a string constant, this will require an unaligned load.
|
||||
if (NewAlign > Align && (isSrcConst || AllowUnalign)) {
|
||||
if (Dst.getOpcode() != ISD::FrameIndex) {
|
||||
@ -3135,7 +3134,7 @@ bool MeetsMaxMemopRequirement(std::vector<EVT> &MemOps,
|
||||
}
|
||||
|
||||
if (VT == MVT::iAny) {
|
||||
if (AllowUnalign) {
|
||||
if (TLI.allowsUnalignedMemoryAccesses(MVT::i64)) {
|
||||
VT = MVT::i64;
|
||||
} else {
|
||||
switch (Align & 7) {
|
||||
|
Loading…
Reference in New Issue
Block a user