-; RUN: analyze %s -datastructure-gc -dsgc-check-flags=X:SMR
+; RUN: analyze %s -datastructure-gc -dsgc-check-flags=Xn:SMR
+; RUN: analyze %s -datastructure-gc -dsgc-check-flags=X:SM
-declare void %llvm.memcpy(sbyte*, sbyte*, uint, uint)
+declare void %llvm.memcpy.i32(sbyte*, sbyte*, uint, uint)
+declare void %llvm.memmove.i32(sbyte*, sbyte*, uint, uint)
void %test() {
%X = alloca int
%x = cast int* %X to sbyte*
%y = cast int* %Y to sbyte*
store int 4, int* %X
- call void %llvm.memcpy(sbyte* %x, sbyte* %y, uint 4, uint 4)
+ call void %llvm.memcpy.i32(sbyte* %x, sbyte* %y, uint 4, uint 4)
+ ret void
+}
+
+void %test2() {
+ %Xn = alloca int
+ %Yn = alloca int
+ %xn = cast int* %Xn to sbyte*
+ %yn = cast int* %Yn to sbyte*
+ store int 4, int* %Xn
+ call void %llvm.memmove.i32(sbyte* %xn, sbyte* %yn, uint 4, uint 4)
ret void
}