diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2006-01-11 06:09:51 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2006-01-11 06:09:51 +0000 |
| commit | bc7a0f44bd2d813775923ebc4f13cff659d4ff62 (patch) | |
| tree | 372cd15660dc4e1062809dba72241be92e354045 /llvm/lib/Target/X86/X86ISelPattern.cpp | |
| parent | 21f0c31c43ce0e92659017787474824e09777b81 (diff) | |
| download | bcm5719-llvm-bc7a0f44bd2d813775923ebc4f13cff659d4ff62.tar.gz bcm5719-llvm-bc7a0f44bd2d813775923ebc4f13cff659d4ff62.zip | |
* Add special entry code main() (to set x87 to 64-bit precision).
* Allow a register node as SelectAddr() base.
* ExternalSymbol -> TargetExternalSymbol as direct function callee.
* Use X86::ESP register rather than CopyFromReg(X86::ESP) as stack ptr for
call parmater passing.
llvm-svn: 25207
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelPattern.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelPattern.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86ISelPattern.cpp b/llvm/lib/Target/X86/X86ISelPattern.cpp index 146ee752e98..563539d0903 100644 --- a/llvm/lib/Target/X86/X86ISelPattern.cpp +++ b/llvm/lib/Target/X86/X86ISelPattern.cpp @@ -1223,12 +1223,15 @@ unsigned ISel::SelectExpr(SDOperand N) { SDNode *Node = N.Val; SDOperand Op0, Op1; - if (Node->getOpcode() == ISD::CopyFromReg) { - unsigned Reg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); + if (Node->getOpcode() == ISD::CopyFromReg || + Node->getOpcode() == ISD::Register) { + unsigned Reg = (Node->getOpcode() == ISD::CopyFromReg) ? + cast<RegisterSDNode>(Node->getOperand(1))->getReg() : + cast<RegisterSDNode>(Node)->getReg(); // Just use the specified register as our input if we can. if (MRegisterInfo::isVirtualRegister(Reg) || Reg == X86::ESP) return Reg; - } + } unsigned &Reg = ExprMap[N]; if (Reg) return Reg; |

