When passing a huge parameter using the byval mechanism, a long

sequence of loads and stores was being generated to perform the
copy on the x86 targets if the parameter was less than 4 byte
aligned, causing llc to use up vast amounts of memory and time.
Use a "rep movs" form instead.  PR7170.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118260 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands
2010-11-04 21:16:46 +00:00
parent 42c9b25554
commit 1e92ec6886
2 changed files with 28 additions and 7 deletions

View File

@@ -0,0 +1,11 @@
; RUN: llc < %s
; PR7170
%big = type [131072 x i8]
declare void @foo(%big* byval align 1)
define void @bar(%big* byval align 1 %x) {
call void @foo(%big* byval align 1 %x)
ret void
}