diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-01-29 09:29:21 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-01-29 09:29:21 +0000 |
commit | 310e3a8f608fbd9162e42cc50fe316af6713113c (patch) | |
tree | 11a6d6d6ca52430343231bb24a45865311266da1 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | |
parent | b9bf14c549db72ca404d83ec8a70086641303211 (diff) | |
download | llvm-310e3a8f608fbd9162e42cc50fe316af6713113c.zip llvm-310e3a8f608fbd9162e42cc50fe316af6713113c.tar.gz llvm-310e3a8f608fbd9162e42cc50fe316af6713113c.tar.bz2 |
MS ABI: Implement proper support for setjmp
On targets which use the MSVCRT, setjmp is a macro which expands to
_setjmp or _setjmpex.
_setjmp and _setjmpex have a secret, hidden argument which is not listed
in the function prototype on X64 and WoA. This hidden argument always
seems to be the frame pointer.
_setjmpex isn't used on X86, _setjmp is magically replaced with a call
to _setjmp3. The second argument is zero for 'normal' setjmp/longjmp
pairs, otherwise it is a count of additional variadic arguments. This
is used when setjmp appears inside of a try or __try.
It is not safe to use a pointer to setjmp because _setjmp, _setjmpex and
_setmp3 are not compatible with setjmp.
llvm-svn: 227426
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
0 files changed, 0 insertions, 0 deletions