llvm.org GIT mirror llvm / release_90 test / CodeGen / WebAssembly / lower-em-sjlj-longjmp-only.ll
release_90

Tree @release_90 (Download .tar.gz)

lower-em-sjlj-longjmp-only.ll @release_90raw · history · blame

; 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 }