summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorMehdi Amini <mehdi.amini@apple.com>2015-03-14 22:19:33 +0000
committerMehdi Amini <mehdi.amini@apple.com>2015-03-14 22:19:33 +0000
commitb344ac9afe6a2a270cceeea14926873ed58ee507 (patch)
tree195fe12aa2a659f33dee719171420c206c5d5b91 /llvm/test/Transforms
parent4a121fab4e98ea21af0b98a9f5586cd1e62eede4 (diff)
downloadbcm5719-llvm-b344ac9afe6a2a270cceeea14926873ed58ee507.tar.gz
bcm5719-llvm-b344ac9afe6a2a270cceeea14926873ed58ee507.zip
Update InstCombine to transform aggregate stores into scalar stores.
Summary: This is a first step toward getting proper support for aggregate loads and stores. Test Plan: Added unittests Reviewers: reames, chandlerc Reviewed By: chandlerc Subscribers: majnemer, joker.eph, chandlerc, llvm-commits Differential Revision: http://reviews.llvm.org/D7780 Patch by Amaury Sechet From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 232284
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/unpack-fca.ll31
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/unpack-fca.ll b/llvm/test/Transforms/InstCombine/unpack-fca.ll
new file mode 100644
index 00000000000..5f63330b931
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/unpack-fca.ll
@@ -0,0 +1,31 @@
+; RUN: opt -instcombine -S < %s | FileCheck %s
+
+target datalayout = "e-i64:64-f80:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+%A__vtbl = type { i8*, i32 (%A*)* }
+%A = type { %A__vtbl* }
+
+@A__vtblZ = constant %A__vtbl { i8* null, i32 (%A*)* @A.foo }
+
+declare i32 @A.foo(%A* nocapture %this)
+
+declare i8* @allocmemory(i64)
+
+define void @structA() {
+body:
+ %0 = tail call i8* @allocmemory(i64 32)
+ %1 = bitcast i8* %0 to %A*
+; CHECK: store %A__vtbl* @A__vtblZ
+ store %A { %A__vtbl* @A__vtblZ }, %A* %1, align 8
+ ret void
+}
+
+define void @structOfA() {
+body:
+ %0 = tail call i8* @allocmemory(i64 32)
+ %1 = bitcast i8* %0 to { %A }*
+; CHECK: store %A__vtbl* @A__vtblZ
+ store { %A } { %A { %A__vtbl* @A__vtblZ } }, { %A }* %1, align 8
+ ret void
+}
OpenPOWER on IntegriCloud