From ebccbafd97ed0abedcca152bfeaec1d7a5435538 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Mon, 26 Aug 2019 21:41:17 +0000 Subject: [PATCH] [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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369974 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../WebAssembly/lower-em-sjlj-longjmp-only.ll | 24 ------------------- .../CodeGen/WebAssembly/lower-em-sjlj-sret.ll | 10 ++++---- test/CodeGen/WebAssembly/lower-em-sjlj.ll | 10 ++++++++ 3 files changed, 15 insertions(+), 29 deletions(-) delete mode 100644 test/CodeGen/WebAssembly/lower-em-sjlj-longjmp-only.ll diff --git a/test/CodeGen/WebAssembly/lower-em-sjlj-longjmp-only.ll b/test/CodeGen/WebAssembly/lower-em-sjlj-longjmp-only.ll deleted file mode 100644 index 7d31c8ced3f..00000000000 --- a/test/CodeGen/WebAssembly/lower-em-sjlj-longjmp-only.ll +++ /dev/null @@ -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 } diff --git a/test/CodeGen/WebAssembly/lower-em-sjlj-sret.ll b/test/CodeGen/WebAssembly/lower-em-sjlj-sret.ll index d93eed82a27..eab3b53d578 100644 --- a/test/CodeGen/WebAssembly/lower-em-sjlj-sret.ll +++ b/test/CodeGen/WebAssembly/lower-em-sjlj-sret.ll @@ -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 } diff --git a/test/CodeGen/WebAssembly/lower-em-sjlj.ll b/test/CodeGen/WebAssembly/lower-em-sjlj.ll index 75f6b7d2bbc..5dfdd440fbc 100644 --- a/test/CodeGen/WebAssembly/lower-em-sjlj.ll +++ b/test/CodeGen/WebAssembly/lower-em-sjlj.ll @@ -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 -- 2.40.0