Fix Bug 4278: X86-64 with -tailcallopt calling convention
authorArnold Schwaighofer <arnold.schwaighofer@gmail.com>
Fri, 12 Jun 2009 16:26:57 +0000 (16:26 +0000)
committerArnold Schwaighofer <arnold.schwaighofer@gmail.com>
Fri, 12 Jun 2009 16:26:57 +0000 (16:26 +0000)
commitbbd8c33ee67f99f5bad7288dfa465d675714e983
treeea479bfe2834e1d70be3dae547eef07be8cb7883
parentb3c36c9c9aba3fce8ae35b52eda4192531a9d3df
Fix Bug 4278: X86-64 with -tailcallopt calling convention
out of sync with regular cc.

The only difference between the tail call cc and the normal
cc was that one parameter register - R9 - was reserved for
calling functions through a function pointer. After time the
tail call cc has gotten out of sync with the regular cc.

We can use R11 which is also caller saved but not used as
parameter register for potential function pointers and
remove the special tail call cc on x86-64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73233 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86CallingConv.td
lib/Target/X86/X86FastISel.cpp
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/2009-06-12-x86_64-tail-call-conv-out-of-sync-bug.ll [new file with mode: 0644]
test/CodeGen/X86/tailcallstack64.ll