aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/X86
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-04-25 00:26:43 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-04-25 00:26:43 +0000
commit2749c72f30a6d424a09a0f8dc87e42e103d8315b (patch)
tree71c4f16a49651bc2a6f734e3374c1ec03829fa5c /test/CodeGen/X86
parent13f7a405082ad154394b2f85e297668cf4ec8292 (diff)
downloadexternal_llvm-2749c72f30a6d424a09a0f8dc87e42e103d8315b.zip
external_llvm-2749c72f30a6d424a09a0f8dc87e42e103d8315b.tar.gz
external_llvm-2749c72f30a6d424a09a0f8dc87e42e103d8315b.tar.bz2
Fix bug in x86 memcpy / memset lowering. If there are trailing bytes not handled by rep instructions, a new memcpy / memset is introduced for them. However, since source / destination addresses are already adjusted, their offsets should be zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50239 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r--test/CodeGen/X86/2008-04-24-MemCpyBug.ll12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/CodeGen/X86/2008-04-24-MemCpyBug.ll b/test/CodeGen/X86/2008-04-24-MemCpyBug.ll
new file mode 100644
index 0000000..09fdc70
--- /dev/null
+++ b/test/CodeGen/X86/2008-04-24-MemCpyBug.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc -march=x86 | not grep 120
+; Don't accidentally add the offset twice for trailing bytes.
+
+ %struct.S63 = type { [63 x i8] }
+@g1s63 = external global %struct.S63 ; <%struct.S63*> [#uses=1]
+
+declare void @test63(%struct.S63* byval align 4 ) nounwind
+
+define void @testit63_entry_2E_ce() nounwind {
+ tail call void @test63( %struct.S63* byval align 4 @g1s63 ) nounwind
+ ret void
+}