summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCXXScopeSpec.cpp
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2014-12-30 20:05:19 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2014-12-30 20:05:19 +0000
commit7ef497b1f5758bb19ecac851a1f7918a5f029377 (patch)
tree695cb749a4fb826f259f5b1b42e98f48605e68fa /clang/lib/Sema/SemaCXXScopeSpec.cpp
parenta7ee2734cf8d7756ea134936ce6a7ae995d736c0 (diff)
downloadbcm5719-llvm-7ef497b1f5758bb19ecac851a1f7918a5f029377.tar.gz
bcm5719-llvm-7ef497b1f5758bb19ecac851a1f7918a5f029377.zip
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
Diffstat (limited to 'clang/lib/Sema/SemaCXXScopeSpec.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud