Skip to content
  • Arnold Schwaighofer's avatar
    This patch corrects the handling of byval arguments for tailcall · 634fc9a3
    Arnold Schwaighofer authored
    optimized x86-64 (and x86) calls so that they work (... at least for
    my test cases).
    
    Should fix the following problems:
    
    Problem 1: When i introduced the optimized handling of arguments for
    tail called functions (using a sequence of copyto/copyfrom virtual
    registers instead of always lowering to top of the stack) i did not
    handle byval arguments correctly e.g they did not work at all :).
    
    Problem 2: On x86-64 after the arguments of the tail called function
    are moved to their registers (which include ESI/RSI etc), tail call
    optimization performs byval lowering which causes xSI,xDI, xCX
    registers to be overwritten. This is handled in this patch by moving
    the arguments to virtual registers first and after the byval lowering
    the arguments are moved from those virtual registers back to
    RSI/RDI/RCX.
    
    llvm-svn: 49584
    634fc9a3
Loading