diff options
author | Richard Osborne <richard@xmos.com> | 2011-09-12 14:43:23 +0000 |
---|---|---|
committer | Richard Osborne <richard@xmos.com> | 2011-09-12 14:43:23 +0000 |
commit | 97a2a5c4dc039e97ae09b826d5f1b08fe7502dc2 (patch) | |
tree | af25a4d027a17a854153c4803e736a2ff4d67f20 /llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp | |
parent | dcde6e30b9663983fe31acb24b21cc2812e9b5ed (diff) | |
download | bcm5719-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.cpp | 11 |
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; } |