summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorArnold Schwaighofer <arnold.schwaighofer@gmail.com>2008-04-12 18:11:06 +0000
committerArnold Schwaighofer <arnold.schwaighofer@gmail.com>2008-04-12 18:11:06 +0000
commit634fc9a33ac993d7159ed94001b1a11edc97268c (patch)
tree2c4062ff42a3fedf8e05af38928e6eb9c239f7c4 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent844d55a42ac1447b544fd3154db1126a124197b6 (diff)
downloadbcm5719-llvm-634fc9a33ac993d7159ed94001b1a11edc97268c.tar.gz
bcm5719-llvm-634fc9a33ac993d7159ed94001b1a11edc97268c.zip
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
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud