mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
Teach the new SROA a new trick. Now we zap any memcpy or memmoves which
are in fact identity operations. We detect these and kill their partitions so that even splitting is unaffected by them. This is particularly important because Clang relies on emitting identity memcpy operations for struct copies, and these fold away to constants very often after inlining. Fixes the last big performance FIXME I have on my plate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165285 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -862,8 +862,7 @@ define void @PR13916.1() {
|
||||
; Ensure that we handle overlapping memcpy intrinsics correctly, especially in
|
||||
; the case where there is a directly identical value for both source and dest.
|
||||
; CHECK: @PR13916.1
|
||||
; FIXME: We shouldn't leave this alloca around.
|
||||
; CHECK: alloca
|
||||
; CHECK-NOT: alloca
|
||||
; CHECK: ret void
|
||||
|
||||
entry:
|
||||
@@ -878,8 +877,7 @@ define void @PR13916.2() {
|
||||
; different pointer value chains, but during rewriting we coalesce them into the
|
||||
; same value.
|
||||
; CHECK: @PR13916.2
|
||||
; FIXME: We shouldn't leave this alloca around.
|
||||
; CHECK: alloca
|
||||
; CHECK-NOT: alloca
|
||||
; CHECK: ret void
|
||||
|
||||
entry:
|
||||
|
||||
Reference in New Issue
Block a user