summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/tbaa-struct.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2012-09-28 21:58:29 +0000
committerDan Gohman <gohman@apple.com>2012-09-28 21:58:29 +0000
commit22695fcec3b206eec0e04c52a089c8b4c520d24b (patch)
tree07972f1110fb073ede511d9e524d54e5663777e7 /clang/test/CodeGen/tbaa-struct.cpp
parent3852b3e1891939f4cc008025494b07894a408707 (diff)
downloadbcm5719-llvm-22695fcec3b206eec0e04c52a089c8b4c520d24b.tar.gz
bcm5719-llvm-22695fcec3b206eec0e04c52a089c8b4c520d24b.zip
Add basic support for adding !tbaa.struct metadata on llvm.memcpy calls for
struct assignment. llvm-svn: 164853
Diffstat (limited to 'clang/test/CodeGen/tbaa-struct.cpp')
-rw-r--r--clang/test/CodeGen/tbaa-struct.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/CodeGen/tbaa-struct.cpp b/clang/test/CodeGen/tbaa-struct.cpp
new file mode 100644
index 00000000000..6bff3370bf5
--- /dev/null
+++ b/clang/test/CodeGen/tbaa-struct.cpp
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 -emit-llvm -o - -O1 %s | FileCheck %s
+//
+// Check that we generate !tbaa.struct metadata for struct copies.
+struct A {
+ short s;
+ int i;
+ char c;
+ int j;
+};
+
+void copy(struct A *a, struct A *b) {
+ *a = *b;
+}
+
+// CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %{{.*}}, i8* %{{.*}}, i64 16, i32 4, i1 false), !tbaa.struct [[TS:!.*]]
+// CHECK: [[TS]] = metadata !{i64 0, i64 2, metadata !{{.*}}, i64 4, i64 4, metadata !{{.*}}, i64 8, i64 1, metadata !{{.*}}, i64 12, i64 4, metadata !{{.*}}}
OpenPOWER on IntegriCloud