diff options
author | Reid Kleckner <reid@kleckner.net> | 2015-04-29 22:49:54 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2015-04-29 22:49:54 +0000 |
commit | bcda1cd45ab48afa20add7b54fe704bef24bde68 (patch) | |
tree | cfe14de38ac1daa31f2973be92d2f926479c9ebb /clang/lib/Lex/PPMacroExpansion.cpp | |
parent | 04b0e92766a6224dc877ae7b936a07cbf11983a2 (diff) | |
download | bcm5719-llvm-bcda1cd45ab48afa20add7b54fe704bef24bde68.tar.gz bcm5719-llvm-bcda1cd45ab48afa20add7b54fe704bef24bde68.zip |
[WinEH] Start EH preparation for 32-bit x86, it uses no arguments
32-bit x86 MSVC-style exceptions are functionaly similar to 64-bit, but
they take no arguments. Instead, they implicitly use the value of EBP
passed in by the caller as a pointer to the parent's frame. In LLVM, we
can represent this as llvm.frameaddress(1), and feed that into all of
our calls to llvm.framerecover.
The next steps are:
- Add an alloca to the fs:00 linked list of handlers
- Add something like llvm.sjlj.lsda or generalize it to store in the
alloca
- Move state number calculation to WinEHPrepare, arrange for
FunctionLoweringInfo to call it
- Use the state numbers to insert explicit loads and stores in the IR
llvm-svn: 236172
Diffstat (limited to 'clang/lib/Lex/PPMacroExpansion.cpp')
0 files changed, 0 insertions, 0 deletions