Changes in directory llvm/lib/Target/X86:
X86ISelDAGToDAG.cpp updated: 1.38 -> 1.39 --- Log message: Complex pattern's custom matcher should not call Select() on any operands. Select them afterwards if it returns true. --- Diffs of the changes: (+7 -13) X86ISelDAGToDAG.cpp | 20 +++++++------------- 1 files changed, 7 insertions(+), 13 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.38 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.39 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.38 Tue Jan 31 16:28:30 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Sat Feb 4 02:50:49 2006 @@ -369,17 +369,11 @@ return false; if (AM.BaseType == X86ISelAddressMode::RegBase) { - if (AM.Base.Reg.Val) { - if (AM.Base.Reg.getOpcode() != ISD::Register) - AM.Base.Reg = Select(AM.Base.Reg); - } else { + if (!AM.Base.Reg.Val) AM.Base.Reg = CurDAG->getRegister(0, MVT::i32); - } } - if (AM.IndexReg.Val) - AM.IndexReg = Select(AM.IndexReg); - else + if (!AM.IndexReg.Val) AM.IndexReg = CurDAG->getRegister(0, MVT::i32); getAddressOperands(AM, Base, Scale, Index, Disp); @@ -441,11 +435,6 @@ 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; } @@ -461,6 +450,11 @@ 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; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits