summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/WebAssembly
diff options
context:
space:
mode:
authorJF Bastien <jfb@google.com>2016-01-26 20:22:42 +0000
committerJF Bastien <jfb@google.com>2016-01-26 20:22:42 +0000
commit1a6c7608b1f47dadf7adae8dbc1fb8345f7ff15e (patch)
tree574ee329cac3ed73909e74f1e955bf5eaf6878ee /llvm/test/CodeGen/WebAssembly
parentbacf7e4f397f5863e52a0fad4155abd9a6b84b8c (diff)
downloadbcm5719-llvm-1a6c7608b1f47dadf7adae8dbc1fb8345f7ff15e.tar.gz
bcm5719-llvm-1a6c7608b1f47dadf7adae8dbc1fb8345f7ff15e.zip
WebAssembly: don't optimize memcpy/memmove/memcpy to frame index
r258781 optimized memcpy/memmove/memcpy so the intrinsic call can return its first argument, but missed the frame index case. Teach it to ignore that case so C code doesn't assert out in these cases. llvm-svn: 258851
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly')
-rw-r--r--llvm/test/CodeGen/WebAssembly/mem-intrinsics.ll11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/mem-intrinsics.ll b/llvm/test/CodeGen/WebAssembly/mem-intrinsics.ll
index ba2f1e702af..bb7e8dd26d8 100644
--- a/llvm/test/CodeGen/WebAssembly/mem-intrinsics.ll
+++ b/llvm/test/CodeGen/WebAssembly/mem-intrinsics.ll
@@ -58,3 +58,14 @@ define void @set_no(i8* %dst, i8 %src, i32 %len) {
call void @llvm.memset.p0i8.i32(i8* %dst, i8 %src, i32 %len, i32 1, i1 false)
ret void
}
+
+; CHECK-LABEL: frame_index:
+; CHECK: i32.call $discard=, memset@FUNCTION, $3, $pop1, $pop0{{$}}
+; CHECK: return{{$}}
+define void @frame_index() {
+entry:
+ %a = alloca [2048 x i8], align 16
+ %0 = getelementptr inbounds [2048 x i8], [2048 x i8]* %a, i32 0, i32 0
+ call void @llvm.memset.p0i8.i32(i8* %0, i8 256, i32 1024, i32 16, i1 false)
+ ret void
+}
OpenPOWER on IntegriCloud