1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/lib
Arnold Schwaighofer 82af0e6a43 This patch corrects the handling of byval arguments for tailcall
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
2008-04-12 18:11:06 +00:00
..
Analysis Fix a typo in a comment. 2008-04-10 23:02:38 +00:00
Archive Change the MemoryBuffer::getFile* methods to take just a pointer to the 2008-04-01 18:04:03 +00:00
AsmParser regenerate 2008-04-06 23:07:54 +00:00
Bitcode API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
CodeGen Factor some libcall code. 2008-04-12 17:14:18 +00:00
Debugger Change the MemoryBuffer::getFile* methods to take just a pointer to the 2008-04-01 18:04:03 +00:00
ExecutionEngine Add debugging code. 2008-04-12 00:22:01 +00:00
Linker API changes for class Use size reduction, wave 1. 2008-04-06 20:25:17 +00:00
Support Make several symbols static. 2008-04-10 21:11:47 +00:00
System Restore code to disable crash catcher on older OS X systems 2008-04-12 00:47:46 +00:00
Target This patch corrects the handling of byval arguments for tailcall 2008-04-12 18:11:06 +00:00
Transforms Fix PR2213 by simultaneously making GVN more aggressive with the return values 2008-04-11 05:11:49 +00:00
VMCore Make several symbols static. 2008-04-10 21:11:47 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00