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 /llvm/lib/Analysis | |
| 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 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/LibCallSemantics.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/LibCallSemantics.cpp b/llvm/lib/Analysis/LibCallSemantics.cpp index 328b186b527..e98540ba7e9 100644 --- a/llvm/lib/Analysis/LibCallSemantics.cpp +++ b/llvm/lib/Analysis/LibCallSemantics.cpp @@ -73,8 +73,8 @@ EHPersonality llvm::classifyEHPersonality(const Value *Pers) { .Case("__gxx_personality_v0", EHPersonality::GNU_CXX) .Case("__gcc_personality_v0", EHPersonality::GNU_C) .Case("__objc_personality_v0", EHPersonality::GNU_ObjC) - .Case("__except_handler3", EHPersonality::MSVC_X86SEH) - .Case("__except_handler4", EHPersonality::MSVC_X86SEH) + .Case("_except_handler3", EHPersonality::MSVC_X86SEH) + .Case("_except_handler4", EHPersonality::MSVC_X86SEH) .Case("__C_specific_handler", EHPersonality::MSVC_Win64SEH) .Case("__CxxFrameHandler3", EHPersonality::MSVC_CXX) .Default(EHPersonality::Unknown); |

