llvm-6502/lib/CodeGen/SelectionDAG
Arnold Schwaighofer 30e62c098b 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
2008-04-30 09:16:33 +00:00
..
CallingConvLower.cpp
DAGCombiner.cpp Evan pointed out that folding sext to zext may not be correct 2008-04-28 18:47:17 +00:00
LegalizeDAG.cpp Fix custom target lowering for zero/any/sign_extend: make sure that 2008-04-30 00:26:38 +00:00
LegalizeTypes.cpp
LegalizeTypes.h
LegalizeTypesExpand.cpp
LegalizeTypesFloatToInt.cpp
LegalizeTypesPromote.cpp
LegalizeTypesScalarize.cpp
LegalizeTypesSplit.cpp
Makefile
ScheduleDAG.cpp
ScheduleDAGList.cpp
ScheduleDAGRRList.cpp Use std::set instead of std::priority_queue for the RegReductionPriorityQueue. 2008-04-29 09:07:59 +00:00
SelectionDAG.cpp
SelectionDAGISel.cpp Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
SelectionDAGPrinter.cpp
TargetLowering.cpp