1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/lib
Peter Collingbourne adf669ef17 x86_64: Fix calls to __morestack under the large code model.
Under the large code model, we cannot assume that __morestack lives within
2^31 bytes of the call site, so we cannot use pc-relative addressing. We
cannot perform the call via a temporary register, as the rax register may
be used to store the static chain, and all other suitable registers may be
either callee-save or used for parameter passing. We cannot use the stack
at this point either because __morestack manipulates the stack directly.

To avoid these issues, perform an indirect call via a read-only memory
location containing the address.

This solution is not perfect, as it assumes that the .rodata section
is laid out within 2^31 bytes of each function body, but this seems to
be sufficient for JIT.

Differential Revision: http://reviews.llvm.org/D6787

llvm-svn: 225003
2014-12-30 20:05:19 +00:00
..
Analysis ValueTracking: Small cleanup in ComputeNumSignBits 2014-12-26 09:20:17 +00:00
AsmParser IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
Bitcode Fix Visual C++ error "'llvm::make_unique' : ambiguous call to overloaded function". 2014-12-18 10:03:35 +00:00
CodeGen x86_64: Fix calls to __morestack under the large code model. 2014-12-30 20:05:19 +00:00
DebugInfo [DebugInfo] Move all DWARF headers to the public include directory. 2014-12-19 18:26:33 +00:00
ExecutionEngine The __morestack function is only available on i386 and x86_64 architectures. 2014-12-30 18:22:06 +00:00
IR Some code improvements in Masked Load/Store. 2014-12-30 14:28:14 +00:00
IRReader Remove unused variable. NFC. 2014-11-06 23:16:57 +00:00
LineEditor
Linker Finish removing DestroySource. 2014-12-23 19:16:45 +00:00
LTO LTO: Lazy-load LTOModule in local contexts 2014-12-17 22:05:42 +00:00
MC Remove doesSectionRequireSymbols. 2014-12-30 13:13:27 +00:00
Object Add printing the LC_THREAD load commands with llvm-objdump’s -private-headers. 2014-12-23 22:56:39 +00:00
Option Add an overload of getLastArgNoClaim taking two OptSpecifiers. 2014-09-12 19:42:53 +00:00
ProfileData llvm-cov: Sink some reporting logic into CoverageMapping 2014-11-14 01:50:32 +00:00
Support Remove unnecessary StringRef->std::string conversion. 2014-12-29 20:59:02 +00:00
TableGen Clean up static analyzer warnings. 2014-12-12 21:48:03 +00:00
Target x86_64: Fix calls to __morestack under the large code model. 2014-12-30 20:05:19 +00:00
Transforms [asan] change _sanitizer_cov_module_init to accept int* instead of int** 2014-12-30 19:29:28 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile