diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-05-03 13:09:10 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-05-03 13:09:10 +0000 |
| commit | 6399a3d628fe2ab11e6e605bae7d66db9cabe6e9 (patch) | |
| tree | 687afac21fcffde7e24bbf5cb12414f1ded2677f /llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp | |
| parent | a3bce28ae0a7d443accd38d9debc7903e88cbf4b (diff) | |
| download | bcm5719-llvm-6399a3d628fe2ab11e6e605bae7d66db9cabe6e9.tar.gz bcm5719-llvm-6399a3d628fe2ab11e6e605bae7d66db9cabe6e9.zip | |
Correct asmprinting of memory operands
llvm-svn: 70732
Diffstat (limited to 'llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp')
| -rw-r--r-- | llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp b/llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp index e564e63598a..c057d69aadc 100644 --- a/llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp +++ b/llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp @@ -72,6 +72,7 @@ FunctionPass *llvm::createMSP430ISelDag(MSP430TargetMachine &TM) { return new MSP430DAGToDAGISel(TM); } +// FIXME: This is pretty dummy routine and needs to be rewritten in the future. bool MSP430DAGToDAGISel::SelectAddr(SDValue Op, SDValue Addr, SDValue &Disp, SDValue &Base) { // We don't support frame index stuff yet. @@ -99,20 +100,17 @@ bool MSP430DAGToDAGISel::SelectAddr(SDValue Op, SDValue Addr, case MSP430ISD::Wrapper: SDValue N0 = Addr.getOperand(0); if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(N0)) { - // We can match addresses of globals without any offsets - if (!G->getOffset()) { - Base = CurDAG->getTargetGlobalAddress(G->getGlobal(), - MVT::i16, 0); - Disp = CurDAG->getTargetConstant(0, MVT::i16); + Base = CurDAG->getRegister(0, MVT::i16); + Disp = CurDAG->getTargetGlobalAddress(G->getGlobal(), + MVT::i16, G->getOffset()); - return true; - } + return true; } break; }; - Base = Addr; - Disp = CurDAG->getTargetConstant(0, MVT::i16); + Base = CurDAG->getRegister(0, MVT::i16); + Disp = Addr; return true; } |

