Tail call optimization improvements:
authorArnold Schwaighofer <arnold.schwaighofer@gmail.com>
Wed, 30 Apr 2008 09:16:33 +0000 (09:16 +0000)
committerArnold Schwaighofer <arnold.schwaighofer@gmail.com>
Wed, 30 Apr 2008 09:16:33 +0000 (09:16 +0000)
commit30e62c098b5841259f8026df1c5c45c7c1182a38
tree7a4da70d35c785bd6bd03768b4bf7ba3c42e24d2
parent4f06a0f6d583691bda2cf6e37d0c35e128bc4b8d
Tail call optimization improvements:

Move platform independent code (lowering of possibly overwritten
arguments, check for tail call optimization eligibility) from
target X86ISelectionLowering.cpp to TargetLowering.h and
SelectionDAGISel.cpp.

Initial PowerPC tail call implementation:

Support ppc32 implemented and tested (passes my tests and
test-suite llvm-test).
Support ppc64 implemented and half tested (passes my tests).
On ppc tail call optimization is performed if
  caller and callee are fastcc
  call is a tail call (in tail call position, call followed by ret)
  no variable argument lists or byval arguments
  option -tailcallopt is enabled
Supported:
 * non pic tail calls on linux/darwin
 * module-local tail calls on linux(PIC/GOT)/darwin(PIC)
 * inter-module tail calls on darwin(PIC)
If constraints are not met a normal call will be emitted.

A test checking the argument lowering behaviour on x86-64 was added.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
include/llvm/Target/TargetLowering.h
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
lib/Target/PowerPC/PPCCodeEmitter.cpp
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCISelLowering.h
lib/Target/PowerPC/PPCInstr64Bit.td
lib/Target/PowerPC/PPCInstrInfo.td
lib/Target/PowerPC/PPCMachineFunctionInfo.h
lib/Target/PowerPC/PPCRegisterInfo.cpp
lib/Target/PowerPC/PPCRegisterInfo.td
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86InstrInfo.td
test/CodeGen/PowerPC/tailcall1-64.ll [new file with mode: 0644]
test/CodeGen/PowerPC/tailcall1.ll [new file with mode: 0644]
test/CodeGen/PowerPC/tailcallpic1.ll [new file with mode: 0644]