[X86] Remove erroneous callsite offsetting in SJLJ landing pads
authorMartin Storsjo <martin@martin.st>
Wed, 27 Sep 2017 06:08:16 +0000 (06:08 +0000)
committerMartin Storsjo <martin@martin.st>
Wed, 27 Sep 2017 06:08:16 +0000 (06:08 +0000)
commiteccaf04e40f9b226474cbdc4dc8b301ff528dfe8
tree68516bb02836d275c81efe2bede589701b4e8385
parent233349fe519b0659906bb62a80ea95d147d79940
[X86] Remove erroneous callsite offsetting in SJLJ landing pads

The callsite value is already stored indexed from 0 in
the _Unwind_Context struct. When accessed via the functions
_Unwind_GetIP and _Unwind_SetIP, the value is indexed from 1,
but those functions handle the offseting. When reading directly
from the struct here, we shouldn't subtract 1.

This matches the code generated by the ARM target, where SJLJ
exception handling is used by default on iOS.

This makes clang-built object files for 32 bit x86 mingw work when
linked with libgcc/libstdc++.

Differential Revision: https://reviews.llvm.org/D38251

llvm-svn: 314276
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/sjlj-eh.ll