diff options
author | Duncan Sands <baldrick@free.fr> | 2010-11-04 21:16:46 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2010-11-04 21:16:46 +0000 |
commit | 1e92ec688624d17b552c88afc956f61da4948cbb (patch) | |
tree | d57525ff5824f627b43923e2d7f3a21c77349598 /test/CodeGen/Generic | |
parent | 42c9b2555407a8aae2d81bf820dc95d16f4993c5 (diff) | |
download | external_llvm-1e92ec688624d17b552c88afc956f61da4948cbb.zip external_llvm-1e92ec688624d17b552c88afc956f61da4948cbb.tar.gz external_llvm-1e92ec688624d17b552c88afc956f61da4948cbb.tar.bz2 |
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
Diffstat (limited to 'test/CodeGen/Generic')
-rw-r--r-- | test/CodeGen/Generic/2010-11-04-BigByval.ll | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/test/CodeGen/Generic/2010-11-04-BigByval.ll b/test/CodeGen/Generic/2010-11-04-BigByval.ll new file mode 100644 index 0000000..df2ca4c --- /dev/null +++ b/test/CodeGen/Generic/2010-11-04-BigByval.ll @@ -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 +} |