summaryrefslogtreecommitdiffstats
path: root/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
commitb22c7dc707cf3770ff3b5e5f11f11fd0aaa06d9b (patch)
tree229206e36c039731daa063a9a194205dc31f904b /test/CodeGen/tbaa-struct.cpp
parent72ab27732ea7a42d756a1e79727f86fbe391b42b (diff)
Add basic support for adding !tbaa.struct metadata on llvm.memcpy calls for
struct assignment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164853 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/tbaa-struct.cpp')
-rw-r--r--test/CodeGen/tbaa-struct.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/CodeGen/tbaa-struct.cpp b/test/CodeGen/tbaa-struct.cpp
new file mode 100644
index 0000000000..6bff3370bf
--- /dev/null
+++ b/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 !{{.*}}}