summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorRichard Osborne <richard@xmos.com>2011-09-12 14:43:23 +0000
committerRichard Osborne <richard@xmos.com>2011-09-12 14:43:23 +0000
commit97a2a5c4dc039e97ae09b826d5f1b08fe7502dc2 (patch)
treeaf25a4d027a17a854153c4803e736a2ff4d67f20 /llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp
parentdcde6e30b9663983fe31acb24b21cc2812e9b5ed (diff)
downloadbcm5719-llvm-97a2a5c4dc039e97ae09b826d5f1b08fe7502dc2.tar.gz
bcm5719-llvm-97a2a5c4dc039e97ae09b826d5f1b08fe7502dc2.zip
Associate a MemOperand with LDWCP nodes introduced during ISel.
This information is required if we want LDWCP to be hoisted out of loops. llvm-svn: 139495
Diffstat (limited to 'llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp')
-rw-r--r--llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp b/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp
index a8dd8479d45..4dac1cee982 100644
--- a/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp
+++ b/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp
@@ -169,9 +169,14 @@ SDNode *XCoreDAGToDAGISel::Select(SDNode *N) {
CurDAG->getTargetConstantPool(ConstantInt::get(
Type::getInt32Ty(*CurDAG->getContext()), Val),
TLI.getPointerTy());
- return CurDAG->getMachineNode(XCore::LDWCP_lru6, dl, MVT::i32,
- MVT::Other, CPIdx,
- CurDAG->getEntryNode());
+ SDNode *node = CurDAG->getMachineNode(XCore::LDWCP_lru6, dl, MVT::i32,
+ MVT::Other, CPIdx,
+ CurDAG->getEntryNode());
+ MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
+ MemOp[0] = MF->getMachineMemOperand(
+ MachinePointerInfo::getConstantPool(), MachineMemOperand::MOLoad, 4, 4);
+ cast<MachineSDNode>(node)->setMemRefs(MemOp, MemOp + 1);
+ return node;
}
break;
}
OpenPOWER on IntegriCloud