forked from OSchip/llvm-project
[WebAssembly] Combine emscripten SjLj tests
Summary: Combine a test in lower-em-sjlj-longjmp-only.ll into lower-em-sjlj.ll, because the test command is the same and I don't see any reason it should be a separate file. Also converted tabs into spaces and fixed indentations in lower-em-sjlj-sret.ll. (lower-em-sjlj.ll uses a different test command (llc), so it couldn't be combined) Reviewers: dschuff Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66728 llvm-svn: 369974
This commit is contained in:
parent
69400f867d
commit
1266191d6f
|
@ -1,24 +0,0 @@
|
|||
; RUN: opt < %s -wasm-lower-em-ehsjlj -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||
target triple = "wasm32-unknown-unknown"
|
||||
|
||||
%struct.__jmp_buf_tag = type { [6 x i32], i32, %struct.__sigset_t }
|
||||
%struct.__sigset_t = type { [32 x i32] }
|
||||
|
||||
@buffer = global [1 x %struct.__jmp_buf_tag] zeroinitializer, align 16
|
||||
|
||||
; Tests if program does not crash when there's no setjmp function calls in the
|
||||
; module.
|
||||
|
||||
; CHECK: call void @emscripten_longjmp_jmpbuf
|
||||
define void @longjmp_only() {
|
||||
entry:
|
||||
call void @longjmp(%struct.__jmp_buf_tag* getelementptr inbounds ([1 x %struct.__jmp_buf_tag], [1 x %struct.__jmp_buf_tag]* @buffer, i32 0, i32 0), i32 1) #1
|
||||
unreachable
|
||||
}
|
||||
|
||||
; Function Attrs: noreturn nounwind
|
||||
declare void @longjmp(%struct.__jmp_buf_tag*, i32) #1
|
||||
|
||||
attributes #1 = { noreturn nounwind }
|
|
@ -15,11 +15,11 @@ entry:
|
|||
%env = alloca [1 x %struct.__jmp_buf_tag], align 16
|
||||
%arraydecay = getelementptr inbounds [1 x %struct.__jmp_buf_tag], [1 x %struct.__jmp_buf_tag]* %env, i32 0, i32 0
|
||||
%call = call i32 @setjmp(%struct.__jmp_buf_tag* %arraydecay) #0
|
||||
; This is the function pointer to pass to invoke.
|
||||
; It needs to be the first argument (that's what we're testing here)
|
||||
; CHECK: i32.const $push[[FPTR:[0-9]+]]=, returns_struct
|
||||
; This is the sret stack region (as an offset from the stack pointer local)
|
||||
; CHECK: call "__invoke_{i32.i32}", $pop[[FPTR]]
|
||||
; This is the function pointer to pass to invoke.
|
||||
; It needs to be the first argument (that's what we're testing here)
|
||||
; CHECK: i32.const $push[[FPTR:[0-9]+]]=, returns_struct
|
||||
; This is the sret stack region (as an offset from the stack pointer local)
|
||||
; CHECK: call "__invoke_{i32.i32}", $pop[[FPTR]]
|
||||
%ret = call {i32, i32} @returns_struct()
|
||||
ret {i32, i32} %ret
|
||||
}
|
||||
|
|
|
@ -216,6 +216,16 @@ entry:
|
|||
ret i8 *%alloc
|
||||
}
|
||||
|
||||
; Tests if program does not crash when there's no setjmp function calls in the
|
||||
; module.
|
||||
@buffer = global [1 x %struct.__jmp_buf_tag] zeroinitializer, align 16
|
||||
define void @longjmp_only() {
|
||||
entry:
|
||||
; CHECK: call void @emscripten_longjmp_jmpbuf
|
||||
call void @longjmp(%struct.__jmp_buf_tag* getelementptr inbounds ([1 x %struct.__jmp_buf_tag], [1 x %struct.__jmp_buf_tag]* @buffer, i32 0, i32 0), i32 1) #1
|
||||
unreachable
|
||||
}
|
||||
|
||||
declare void @foo()
|
||||
; Function Attrs: returns_twice
|
||||
declare i32 @setjmp(%struct.__jmp_buf_tag*) #0
|
||||
|
|
Loading…
Reference in New Issue