Skip to content
  • Arnold Schwaighofer's avatar
    Tail call optimization improvements: · be0de34e
    Arnold Schwaighofer authored
    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.
    
    llvm-svn: 50477
    be0de34e
Loading