summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2007-10-26 20:24:42 +0000
committerBill Wendling <isanbard@gmail.com>2007-10-26 20:24:42 +0000
commit6d15b32c155d330849d188f38d0c90fb1b8246a7 (patch)
treedf8e27aec7527c470324daac45ee9c48f646f812 /llvm/lib/CodeGen
parent16c7d8ce5b7e13fcf4c8ce1d0b2011f95160d5ce (diff)
downloadbcm5719-llvm-6d15b32c155d330849d188f38d0c90fb1b8246a7.tar.gz
bcm5719-llvm-6d15b32c155d330849d188f38d0c90fb1b8246a7.zip
- Remove the hacky code that forces a memcpy. Alignment is taken care of in the
FE. - Explicitly pass in the alignment of the load & store. - XFAIL 2007-10-23-UnalignedMemcpy.ll because llc has a bug that crashes on unaligned pointers. llvm-svn: 43398
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp14
1 files changed, 3 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 39aa07618d1..b103e28b54e 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -4329,14 +4329,6 @@ void SelectionDAGLowering::visitMemIntrinsic(CallInst &I, unsigned Op) {
}
}
- // The lowered load/store instructions from/to the stack frame can be
- // unaligned depending on whether it's accessed off sp or fp. If this is
- // the case, then just use the memcpy library call.
- if (Op1.getOpcode() == ISD::FrameIndex ||
- Op2.getOpcode() == ISD::FrameIndex)
- if (Size->getValue() % Align != 0)
- break;
-
for (unsigned i = 0; i < NumMemOps; i++) {
MVT::ValueType VT = MemOps[i];
unsigned VTSize = MVT::getSizeInBits(VT) / 8;
@@ -4351,13 +4343,13 @@ void SelectionDAGLowering::visitMemIntrinsic(CallInst &I, unsigned Op) {
I.getOperand(1), DstOff);
} else {
Value = DAG.getLoad(VT, getRoot(),
- getMemBasePlusOffset(Op2, SrcOff, DAG, TLI),
- I.getOperand(2), SrcOff);
+ getMemBasePlusOffset(Op2, SrcOff, DAG, TLI),
+ I.getOperand(2), SrcOff, false, Align);
Chain = Value.getValue(1);
Store =
DAG.getStore(Chain, Value,
getMemBasePlusOffset(Op1, DstOff, DAG, TLI),
- I.getOperand(1), DstOff);
+ I.getOperand(1), DstOff, false, Align);
}
OutChains.push_back(Store);
SrcOff += VTSize;
OpenPOWER on IntegriCloud