summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-04-29 22:49:54 +0000
committerReid Kleckner <reid@kleckner.net>2015-04-29 22:49:54 +0000
commitbcda1cd45ab48afa20add7b54fe704bef24bde68 (patch)
treecfe14de38ac1daa31f2973be92d2f926479c9ebb /llvm/lib/Analysis
parent04b0e92766a6224dc877ae7b936a07cbf11983a2 (diff)
downloadbcm5719-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.cpp4
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);
OpenPOWER on IntegriCloud