diff options
| author | Chris Lattner <sabre@nondot.org> | 2006-02-04 09:24:16 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2006-02-04 09:24:16 +0000 |
| commit | 22b4edfb425a6808e0ed16590844eced3da6531d (patch) | |
| tree | f3a2acc3a01473310d0b05e210e29e19f9c2f192 /llvm/lib | |
| parent | 586b06281cb6121ba46aeb588a9ffdf209076f77 (diff) | |
| download | bcm5719-llvm-22b4edfb425a6808e0ed16590844eced3da6531d.tar.gz bcm5719-llvm-22b4edfb425a6808e0ed16590844eced3da6531d.zip | |
Temporarily revert this patch, which probably breaks with the
tblgen patch reverted.
llvm-svn: 25971
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp index e30be1b41ac..f007b28a5d6 100644 --- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -369,11 +369,17 @@ bool X86DAGToDAGISel::SelectAddr(SDOperand N, SDOperand &Base, SDOperand &Scale, return false; if (AM.BaseType == X86ISelAddressMode::RegBase) { - if (!AM.Base.Reg.Val) + if (AM.Base.Reg.Val) { + if (AM.Base.Reg.getOpcode() != ISD::Register) + AM.Base.Reg = Select(AM.Base.Reg); + } else { AM.Base.Reg = CurDAG->getRegister(0, MVT::i32); + } } - if (!AM.IndexReg.Val) + if (AM.IndexReg.Val) + AM.IndexReg = Select(AM.IndexReg); + else AM.IndexReg = CurDAG->getRegister(0, MVT::i32); getAddressOperands(AM, Base, Scale, Index, Disp); @@ -435,6 +441,11 @@ bool X86DAGToDAGISel::SelectLEAAddr(SDOperand N, SDOperand &Base, return false; } + if (SelectBase) + AM.Base.Reg = Select(AM.Base.Reg); + if (SelectIndex) + AM.IndexReg = Select(AM.IndexReg); + getAddressOperands(AM, Base, Scale, Index, Disp); return true; } @@ -450,11 +461,6 @@ SDOperand X86DAGToDAGISel::Select(SDOperand N) { if (Opcode >= ISD::BUILTIN_OP_END && Opcode < X86ISD::FIRST_NUMBER) return N; // Already selected. - // These are probably emitted by SelectAddr(). - if (Opcode == ISD::TargetConstant || Opcode == ISD::TargetConstantPool || - Opcode == ISD::TargetFrameIndex || Opcode == ISD::TargetGlobalAddress) - return N; - std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N); if (CGMI != CodeGenMap.end()) return CGMI->second; |

