Slightly generalize transformation of memmove(a,a,n) so that it also applies

to memcpy. (Such a memcpy is technically illegal, but in practice is safe
and is generated by struct self-assignment in C code.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91621 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Friedman
2009-12-17 21:07:31 +00:00
parent 88cd3582b6
commit 0c826d98b3
2 changed files with 13 additions and 1 deletions

View File

@@ -0,0 +1,10 @@
; RUN: opt < %s -instcombine -S | FileCheck %s
declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
define void @test4(i8* %a) {
tail call void @llvm.memcpy.i32( i8* %a, i8* %a, i32 100, i32 1 )
ret void
}
; CHECK: define void @test4
; CHECK-NEXT: ret void