mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
26ba4c13a7
This mostly reverts commit r222062 and replaces it with a new enum. At some point this enum will grow at least for other MSVC EH personalities. Also beefs up the way we were sniffing the personality function. Previously we would emit the Itanium LSDA despite using __C_specific_handler. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D6987 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226920 91177308-0d34-0410-b5e6-96231b3b80d8
46 lines
1.4 KiB
LLVM
Executable File
46 lines
1.4 KiB
LLVM
Executable File
; RUN: llc -mtriple=x86_64-windows-msvc < %s | FileCheck %s
|
|
|
|
@str_recovered = internal unnamed_addr constant [10 x i8] c"recovered\00", align 1
|
|
|
|
declare void @crash()
|
|
|
|
define i32 @main() {
|
|
entry:
|
|
invoke void @crash()
|
|
to label %invoke.cont unwind label %lpad
|
|
|
|
invoke.cont: ; preds = %entry
|
|
%call = call i32 @puts(i8* getelementptr inbounds ([10 x i8]* @str_recovered, i64 0, i64 0))
|
|
call void @abort()
|
|
ret i32 0
|
|
|
|
lpad: ; preds = %entry
|
|
%0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
|
cleanup
|
|
%1 = extractvalue { i8*, i32 } %0, 0
|
|
%2 = extractvalue { i8*, i32 } %0, 1
|
|
%call2 = invoke i32 @puts(i8* getelementptr inbounds ([10 x i8]* @str_recovered, i64 0, i64 0))
|
|
to label %invoke.cont1 unwind label %terminate.lpad
|
|
|
|
invoke.cont1: ; preds = %lpad
|
|
resume { i8*, i32 } %0
|
|
|
|
terminate.lpad: ; preds = %lpad
|
|
%3 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
|
catch i8* null
|
|
call void @abort()
|
|
unreachable
|
|
}
|
|
|
|
; CHECK: main:
|
|
|
|
; FIXME: No handlers yet!
|
|
; CHECK: .seh_handlerdata
|
|
; CHECK-NEXT: .long 0
|
|
|
|
declare i32 @__C_specific_handler(...)
|
|
|
|
declare i32 @puts(i8*)
|
|
|
|
declare void @abort()
|