summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-06-10 01:02:30 +0000
committerReid Kleckner <reid@kleckner.net>2015-06-10 01:02:30 +0000
commit2bc93ca84606399da5ae5ac68c2140d5d2855adb (patch)
treefdb91ed61f6631483898fad400f79cc6d077bf32 /llvm/test
parent1469b9196ce4394486371b39e9fa5d44975d3a29 (diff)
downloadbcm5719-llvm-2bc93ca84606399da5ae5ac68c2140d5d2855adb.tar.gz
bcm5719-llvm-2bc93ca84606399da5ae5ac68c2140d5d2855adb.zip
[WinEH] Emit .safeseh directives for all 32-bit exception handlers
Use a "safeseh" string attribute to do this. You would think we chould just accumulate the set of personalities like we do on dwarf, but this fails to account for the LSDA-loading thunks we use for __CxxFrameHandler3. Each of those needs to make it into .sxdata as well. The string attribute seemed like the most straightforward approach. llvm-svn: 239448
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/X86/win32-eh-states.ll2
-rw-r--r--llvm/test/CodeGen/X86/win32-eh.ll4
2 files changed, 6 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/win32-eh-states.ll b/llvm/test/CodeGen/X86/win32-eh-states.ll
index 8db127df6da..7bcd51c44f0 100644
--- a/llvm/test/CodeGen/X86/win32-eh-states.ll
+++ b/llvm/test/CodeGen/X86/win32-eh-states.ll
@@ -110,3 +110,5 @@ eh.resume: ; preds = %catch.dispatch.4
; CHECK: movl $3, Lf$frame_escape_{{[0-9]+.*}}
; CHECK: movl $3, (%esp)
; CHECK: calll _may_throw
+
+; CHECK: .safeseh ___ehhandler$f
diff --git a/llvm/test/CodeGen/X86/win32-eh.ll b/llvm/test/CodeGen/X86/win32-eh.ll
index ed8402aeab0..3abaa49653b 100644
--- a/llvm/test/CodeGen/X86/win32-eh.ll
+++ b/llvm/test/CodeGen/X86/win32-eh.ll
@@ -126,3 +126,7 @@ catchall:
; CHECK-LABEL: ___ehhandler$use_CxxFrameHandler3:
; CHECK: movl $L__ehtable$use_CxxFrameHandler3, %eax
; CHECK: jmp ___CxxFrameHandler3 # TAILCALL
+
+; CHECK: .safeseh __except_handler3
+; CHECK: .safeseh __except_handler4
+; CHECK: .safeseh ___ehhandler$use_CxxFrameHandler3
OpenPOWER on IntegriCloud