diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2010-03-11 18:49:14 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2010-03-11 18:49:14 +0000 |
| commit | 31fe835bf2771bca3e1d76666438b4cec806070d (patch) | |
| tree | 5193962e9caf7433af4eb22da35d1a6b8b6bec46 /llvm/lib/Target/X86/X86ISelLowering.cpp | |
| parent | 7aa06ac2b9f5e3cff0322bab9659bd690fc428fd (diff) | |
| download | bcm5719-llvm-31fe835bf2771bca3e1d76666438b4cec806070d.tar.gz bcm5719-llvm-31fe835bf2771bca3e1d76666438b4cec806070d.zip | |
Bad bad bug. x86 force indirect tail call address into eax when it's meant to force it into a call preserved register instead. Change it to ecx for now.
llvm-svn: 98270
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 9b7f6fc6aee..88e2fa15ee7 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -2091,7 +2091,7 @@ X86TargetLowering::LowerCall(SDValue Chain, SDValue Callee, // tailcall must happen after callee-saved registers are poped. // FIXME: Give it a special register class that contains caller-saved // register instead? - unsigned TCReg = Is64Bit ? X86::R11 : X86::EAX; + unsigned TCReg = Is64Bit ? X86::R11 : X86::ECX; Chain = DAG.getCopyToReg(Chain, dl, DAG.getRegister(TCReg, getPointerTy()), Callee,InFlag); @@ -2145,7 +2145,7 @@ X86TargetLowering::LowerCall(SDValue Chain, SDValue Callee, } assert(((Callee.getOpcode() == ISD::Register && - (cast<RegisterSDNode>(Callee)->getReg() == X86::EAX || + (cast<RegisterSDNode>(Callee)->getReg() == X86::ECX || cast<RegisterSDNode>(Callee)->getReg() == X86::R11)) || Callee.getOpcode() == ISD::TargetExternalSymbol || Callee.getOpcode() == ISD::TargetGlobalAddress) && |

