aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/WebAssembly
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly')
-rw-r--r--llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll116
-rw-r--r--llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll12
-rw-r--r--llvm/test/CodeGen/WebAssembly/ref-test-func.ll30
-rw-r--r--llvm/test/CodeGen/WebAssembly/returned.ll4
4 files changed, 89 insertions, 73 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll b/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll
index a27650f..7a90d28 100644
--- a/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll
+++ b/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll
@@ -37,52 +37,52 @@ define hidden void @copy(ptr noundef %va) {
; CHECK-NEXT: %va.addr = alloca ptr, align 4
; CHECK-NEXT: %cp = alloca ptr, align 4
; CHECK-NEXT: store ptr %va, ptr %va.addr, align 4
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %cp)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %cp)
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr %cp, ptr %va.addr, i32 4, i1 false)
; CHECK-NEXT: %0 = load ptr, ptr %cp, align 4
; CHECK-NEXT: call void @valist(ptr noundef %0)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %cp)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %cp)
; CHECK-NEXT: ret void
;
entry:
%va.addr = alloca ptr, align 4
%cp = alloca ptr, align 4
store ptr %va, ptr %va.addr, align 4
- call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %cp)
+ call void @llvm.lifetime.start.p0(ptr nonnull %cp)
call void @llvm.va_copy.p0(ptr nonnull %cp, ptr nonnull %va.addr)
%0 = load ptr, ptr %cp, align 4
call void @valist(ptr noundef %0)
- call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %cp)
+ call void @llvm.lifetime.end.p0(ptr nonnull %cp)
ret void
}
-declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)
+declare void @llvm.lifetime.start.p0(ptr nocapture)
declare void @llvm.va_copy.p0(ptr, ptr)
declare void @valist(ptr noundef)
-declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)
+declare void @llvm.lifetime.end.p0(ptr nocapture)
define hidden void @start_once(...) {
; CHECK-LABEL: define {{[^@]+}}@start_once(ptr %varargs) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %s = alloca ptr, align 4
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %s)
; CHECK-NEXT: store ptr %varargs, ptr %s, align 4
; CHECK-NEXT: %0 = load ptr, ptr %s, align 4
; CHECK-NEXT: call void @valist(ptr noundef %0)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %s)
; CHECK-NEXT: ret void
;
entry:
%s = alloca ptr, align 4
- call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s)
+ call void @llvm.lifetime.start.p0(ptr nonnull %s)
call void @llvm.va_start.p0(ptr nonnull %s)
%0 = load ptr, ptr %s, align 4
call void @valist(ptr noundef %0)
call void @llvm.va_end.p0(ptr %s)
- call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s)
+ call void @llvm.lifetime.end.p0(ptr nonnull %s)
ret void
}
@@ -95,23 +95,23 @@ define hidden void @start_twice(...) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %s0 = alloca ptr, align 4
; CHECK-NEXT: %s1 = alloca ptr, align 4
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s0)
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s1)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %s0)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %s1)
; CHECK-NEXT: store ptr %varargs, ptr %s0, align 4
; CHECK-NEXT: %0 = load ptr, ptr %s0, align 4
; CHECK-NEXT: call void @valist(ptr noundef %0)
; CHECK-NEXT: store ptr %varargs, ptr %s1, align 4
; CHECK-NEXT: %1 = load ptr, ptr %s1, align 4
; CHECK-NEXT: call void @valist(ptr noundef %1)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s1)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s0)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %s1)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %s0)
; CHECK-NEXT: ret void
;
entry:
%s0 = alloca ptr, align 4
%s1 = alloca ptr, align 4
- call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s0)
- call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s1)
+ call void @llvm.lifetime.start.p0(ptr nonnull %s0)
+ call void @llvm.lifetime.start.p0(ptr nonnull %s1)
call void @llvm.va_start.p0(ptr nonnull %s0)
%0 = load ptr, ptr %s0, align 4
call void @valist(ptr noundef %0)
@@ -120,8 +120,8 @@ entry:
%1 = load ptr, ptr %s1, align 4
call void @valist(ptr noundef %1)
call void @llvm.va_end.p0(ptr %s1)
- call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s1)
- call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s0)
+ call void @llvm.lifetime.end.p0(ptr nonnull %s1)
+ call void @llvm.lifetime.end.p0(ptr nonnull %s0)
ret void
}
@@ -129,11 +129,11 @@ define hidden void @single_i32(i32 noundef %x) {
; CHECK-LABEL: define {{[^@]+}}@single_i32(i32 noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %single_i32.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -147,11 +147,11 @@ define hidden void @single_double(double noundef %x) {
; CHECK-LABEL: define {{[^@]+}}@single_double(double noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %single_double.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_double.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store double %x, ptr %0, align 8
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -163,11 +163,11 @@ define hidden void @single_v4f32(<4 x float> noundef %x) {
; CHECK-LABEL: define {{[^@]+}}@single_v4f32(<4 x float> noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %single_v4f32.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v4f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <4 x float> %x, ptr %0, align 16
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -179,11 +179,11 @@ define hidden void @single_v8f32(<8 x float> noundef %x) {
; CHECK-LABEL: define {{[^@]+}}@single_v8f32(<8 x float> noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %single_v8f32.vararg, align 32
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v8f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <8 x float> %x, ptr %0, align 32
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -195,11 +195,11 @@ define hidden void @single_v16f32(<16 x float> noundef %x) {
; CHECK-LABEL: define {{[^@]+}}@single_v16f32(<16 x float> noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %single_v16f32.vararg, align 64
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v16f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <16 x float> %x, ptr %0, align 64
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -211,11 +211,11 @@ define hidden void @single_v32f32(<32 x float> noundef %x) {
; CHECK-LABEL: define {{[^@]+}}@single_v32f32(<32 x float> noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %single_v32f32.vararg, align 128
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 128, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v32f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <32 x float> %x, ptr %0, align 128
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 128, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -227,13 +227,13 @@ define hidden void @i32_double(i32 noundef %x, double noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@i32_double(i32 noundef %x, double noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %i32_double.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_double.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_double.vararg, ptr %vararg_buffer, i32 0, i32 2
; CHECK-NEXT: store double %y, ptr %1, align 8
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -245,13 +245,13 @@ define hidden void @double_i32(double noundef %x, i32 noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@double_i32(double noundef %x, i32 noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %double_i32.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %double_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store double %x, ptr %0, align 8
; CHECK-NEXT: %1 = getelementptr inbounds nuw %double_i32.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 %y, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -265,13 +265,13 @@ define hidden void @i32_libcS(i32 noundef %x, ptr noundef byval(%struct.libcS) a
; CHECK-NEXT: %IndirectAlloca = alloca %struct.libcS, align 8
; CHECK-NEXT: %vararg_buffer = alloca %i32_libcS.vararg, align 16
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr %IndirectAlloca, ptr %y, i64 24, i1 false)
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_libcS.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_libcS.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store ptr %IndirectAlloca, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -285,13 +285,13 @@ define hidden void @libcS_i32(ptr noundef byval(%struct.libcS) align 8 %x, i32 n
; CHECK-NEXT: %IndirectAlloca = alloca %struct.libcS, align 8
; CHECK-NEXT: %vararg_buffer = alloca %libcS_i32.vararg, align 16
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr %IndirectAlloca, ptr %x, i64 24, i1 false)
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %libcS_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store ptr %IndirectAlloca, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %libcS_i32.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 %y, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -303,13 +303,13 @@ define hidden void @i32_v4f32(i32 noundef %x, <4 x float> noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@i32_v4f32(i32 noundef %x, <4 x float> noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %i32_v4f32.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v4f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v4f32.vararg, ptr %vararg_buffer, i32 0, i32 2
; CHECK-NEXT: store <4 x float> %y, ptr %1, align 16
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -321,13 +321,13 @@ define hidden void @v4f32_i32(<4 x float> noundef %x, i32 noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@v4f32_i32(<4 x float> noundef %x, i32 noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %v4f32_i32.vararg, align 16
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %v4f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <4 x float> %x, ptr %0, align 16
; CHECK-NEXT: %1 = getelementptr inbounds nuw %v4f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 %y, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -339,13 +339,13 @@ define hidden void @i32_v8f32(i32 noundef %x, <8 x float> noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@i32_v8f32(i32 noundef %x, <8 x float> noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %i32_v8f32.vararg, align 32
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v8f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v8f32.vararg, ptr %vararg_buffer, i32 0, i32 2
; CHECK-NEXT: store <8 x float> %y, ptr %1, align 32
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -357,13 +357,13 @@ define hidden void @v8f32_i32(<8 x float> noundef %x, i32 noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@v8f32_i32(<8 x float> noundef %x, i32 noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %v8f32_i32.vararg, align 32
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 36, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %v8f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <8 x float> %x, ptr %0, align 32
; CHECK-NEXT: %1 = getelementptr inbounds nuw %v8f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 %y, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 36, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -375,13 +375,13 @@ define hidden void @i32_v16f32(i32 noundef %x, <16 x float> noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@i32_v16f32(i32 noundef %x, <16 x float> noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %i32_v16f32.vararg, align 64
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 128, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v16f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v16f32.vararg, ptr %vararg_buffer, i32 0, i32 2
; CHECK-NEXT: store <16 x float> %y, ptr %1, align 64
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 128, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -393,13 +393,13 @@ define hidden void @v16f32_i32(<16 x float> noundef %x, i32 noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@v16f32_i32(<16 x float> noundef %x, i32 noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %v16f32_i32.vararg, align 64
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 68, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %v16f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <16 x float> %x, ptr %0, align 64
; CHECK-NEXT: %1 = getelementptr inbounds nuw %v16f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 %y, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 68, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -411,13 +411,13 @@ define hidden void @i32_v32f32(i32 noundef %x, <32 x float> noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@i32_v32f32(i32 noundef %x, <32 x float> noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %i32_v32f32.vararg, align 128
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 256, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v32f32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %0, align 4
; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v32f32.vararg, ptr %vararg_buffer, i32 0, i32 2
; CHECK-NEXT: store <32 x float> %y, ptr %1, align 128
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 256, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -429,13 +429,13 @@ define hidden void @v32f32_i32(<32 x float> noundef %x, i32 noundef %y) {
; CHECK-LABEL: define {{[^@]+}}@v32f32_i32(<32 x float> noundef %x, i32 noundef %y) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %v32f32_i32.vararg, align 128
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 132, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %0 = getelementptr inbounds nuw %v32f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store <32 x float> %x, ptr %0, align 128
; CHECK-NEXT: %1 = getelementptr inbounds nuw %v32f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 %y, ptr %1, align 4
; CHECK-NEXT: call void @vararg(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 132, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -448,11 +448,11 @@ define hidden void @fptr_single_i32(i32 noundef %x) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %vararg_buffer = alloca %fptr_single_i32.vararg, align 16
; CHECK-NEXT: %0 = load volatile ptr, ptr @vararg_ptr, align 4
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %1 = getelementptr inbounds nuw %fptr_single_i32.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i32 %x, ptr %1, align 4
; CHECK-NEXT: call void %0(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
@@ -468,11 +468,11 @@ define hidden void @fptr_libcS(ptr noundef byval(%struct.libcS) align 8 %x) {
; CHECK-NEXT: %vararg_buffer = alloca %fptr_libcS.vararg, align 16
; CHECK-NEXT: %0 = load volatile ptr, ptr @vararg_ptr, align 4
; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr %IndirectAlloca, ptr %x, i64 24, i1 false)
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer)
; CHECK-NEXT: %1 = getelementptr inbounds nuw %fptr_libcS.vararg, ptr %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store ptr %IndirectAlloca, ptr %1, align 4
; CHECK-NEXT: call void %0(ptr %vararg_buffer)
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %vararg_buffer)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer)
; CHECK-NEXT: ret void
;
entry:
diff --git a/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll b/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll
index 0f968de..3264fe9 100644
--- a/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll
+++ b/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll
@@ -18,7 +18,7 @@ define void @test_static() {
; CHECK-NEXT: i32 1, label %[[ENTRY_SPLIT_SPLIT:.*]]
; CHECK-NEXT: ]
; CHECK: [[ENTRY_SPLIT]]:
-; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[X]])
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]])
; CHECK-NEXT: call void @__wasm_setjmp(ptr @buf, i32 1, ptr [[FUNCTIONINVOCATIONID]])
; CHECK-NEXT: br label %[[ENTRY_SPLIT_SPLIT]]
; CHECK: [[ENTRY_SPLIT_SPLIT]]:
@@ -31,7 +31,7 @@ define void @test_static() {
; CHECK: [[_NOEXC:.*:]]
; CHECK-NEXT: ret void
; CHECK: [[ELSE]]:
-; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[X]])
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]])
; CHECK-NEXT: ret void
; CHECK: [[CATCH_DISPATCH_LONGJMP]]:
; CHECK-NEXT: [[TMP0:%.*]] = catchswitch within none [label %catch.longjmp] unwind to caller
@@ -53,7 +53,7 @@ define void @test_static() {
;
entry:
%x = alloca i32, align 4
- call void @llvm.lifetime.start.p0(i64 4, ptr %x)
+ call void @llvm.lifetime.start.p0(ptr %x)
%call = call i32 @setjmp(ptr @buf) returns_twice
%cmp = icmp eq i32 %call, 0
br i1 %cmp, label %if, label %else
@@ -63,7 +63,7 @@ if:
ret void
else:
- call void @llvm.lifetime.end.p0(i64 4, ptr %x)
+ call void @llvm.lifetime.end.p0(ptr %x)
ret void
}
@@ -114,7 +114,7 @@ define void @test_dynamic(i32 %size) {
;
entry:
%x = alloca i32, i32 %size, align 4
- call void @llvm.lifetime.start.p0(i64 -1, ptr %x)
+ call void @llvm.lifetime.start.p0(ptr %x)
%call = call i32 @setjmp(ptr @buf) returns_twice
%cmp = icmp eq i32 %call, 0
br i1 %cmp, label %if, label %else
@@ -124,6 +124,6 @@ if:
ret void
else:
- call void @llvm.lifetime.end.p0(i64 -1, ptr %x)
+ call void @llvm.lifetime.end.p0(ptr %x)
ret void
}
diff --git a/llvm/test/CodeGen/WebAssembly/ref-test-func.ll b/llvm/test/CodeGen/WebAssembly/ref-test-func.ll
index ea2453f..4fda253 100644
--- a/llvm/test/CodeGen/WebAssembly/ref-test-func.ll
+++ b/llvm/test/CodeGen/WebAssembly/ref-test-func.ll
@@ -31,7 +31,7 @@ define void @test_fpsig_return_i32(ptr noundef %func) local_unnamed_addr #0 {
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, i32 0)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, i32 poison)
tail call void @use(i32 noundef %res) #3
ret void
}
@@ -48,7 +48,7 @@ define void @test_fpsig_return_i64(ptr noundef %func) local_unnamed_addr #0 {
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, i64 0)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, i64 poison)
tail call void @use(i32 noundef %res) #3
ret void
}
@@ -65,7 +65,7 @@ define void @test_fpsig_return_f32(ptr noundef %func) local_unnamed_addr #0 {
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, float 0.)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, float poison)
tail call void @use(i32 noundef %res) #3
ret void
}
@@ -82,7 +82,7 @@ define void @test_fpsig_return_f64(ptr noundef %func) local_unnamed_addr #0 {
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, double 0.)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, double poison)
tail call void @use(i32 noundef %res) #3
ret void
}
@@ -100,7 +100,7 @@ define void @test_fpsig_param_i32(ptr noundef %func) local_unnamed_addr #0 {
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, token poison, double 0.)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, token poison, double poison)
tail call void @use(i32 noundef %res) #3
ret void
}
@@ -118,7 +118,7 @@ define void @test_fpsig_multiple_params_and_returns(ptr noundef %func) local_unn
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, i32 0, i64 0, float 0., double 0., token poison, i64 0, float 0., i64 0)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, i32 poison, i64 poison, float poison, double poison, token poison, i64 poison, float poison, i64 poison)
tail call void @use(i32 noundef %res) #3
ret void
}
@@ -137,10 +137,26 @@ define void @test_fpsig_ptrs(ptr noundef %func) local_unnamed_addr #0 {
; CHECK-NEXT: call use
; CHECK-NEXT: # fallthrough-return
entry:
- %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, ptr null, token poison, ptr null, ptr null)
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, ptr poison, token poison, ptr poison, ptr poison)
tail call void @use(i32 noundef %res) #3
ret void
}
+define void @test_reference_types(ptr noundef %func) local_unnamed_addr #0 {
+; CHECK-LABEL: test_reference_types:
+; CHK32: .functype test_reference_types (i32) -> ()
+; CHK64: .functype test_reference_types (i64) -> ()
+; CHECK-NEXT: # %bb.0: # %entry
+; CHECK-NEXT: local.get 0
+; CHK64-NEXT: i32.wrap_i64
+; CHECK-NEXT: table.get __indirect_function_table
+; CHECK-NEXT: ref.test (funcref, externref) -> (externref)
+; CHECK-NEXT: call use
+; CHECK-NEXT: # fallthrough-return
+entry:
+ %res = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, ptr addrspace(10) poison, token poison, ptr addrspace(20) poison, ptr addrspace(10) poison)
+ tail call void @use(i32 noundef %res) #3
+ ret void
+}
declare void @use(i32 noundef) local_unnamed_addr #1
diff --git a/llvm/test/CodeGen/WebAssembly/returned.ll b/llvm/test/CodeGen/WebAssembly/returned.ll
index aef75d8..bad9d60 100644
--- a/llvm/test/CodeGen/WebAssembly/returned.ll
+++ b/llvm/test/CodeGen/WebAssembly/returned.ll
@@ -99,8 +99,8 @@ define void @test() {
; CHECK-NEXT: return
entry:
%a = alloca i32
- call void @llvm.lifetime.start.p0(i64 4, ptr %a)
+ call void @llvm.lifetime.start.p0(ptr %a)
%ret = call ptr @returns_arg(ptr %a)
- call void @llvm.lifetime.end.p0(i64 4, ptr %a)
+ call void @llvm.lifetime.end.p0(ptr %a)
ret void
}