aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/tbaa-vec.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-12-02 12:46:48 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-12-02 12:46:48 +0000
commitb5ea630dfd1a0d3e5c08d8959158608dd213d9aa (patch)
tree414ded0ca2d2732345c4d423b8f3cd326d9097e8 /test/CodeGen/tbaa-vec.cpp
parent4bc3002fe03f32a9d85720bece65eeda40c75742 (diff)
Notes
Diffstat (limited to 'test/CodeGen/tbaa-vec.cpp')
-rw-r--r--test/CodeGen/tbaa-vec.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/CodeGen/tbaa-vec.cpp b/test/CodeGen/tbaa-vec.cpp
new file mode 100644
index 000000000000..5f61b934f00e
--- /dev/null
+++ b/test/CodeGen/tbaa-vec.cpp
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -triple x86_64-apple-darwin -O1 -disable-llvm-passes %s -emit-llvm -o - | FileCheck %s
+// Test TBAA metadata generated by front-end (vector types are always treated as mayalias).
+
+typedef float __m128 __attribute__ ((__vector_size__ (16)));
+
+struct A {
+ __m128 a, b;
+};
+
+void foo(A *a, __m128 v) {
+ // CHECK-LABEL: define void @_Z3fooP1ADv4_f
+ a->a = v;
+ // CHECK: store <4 x float> %v, <4 x float>* %{{.*}}, align 16, !tbaa [[TAG_char:!.*]]
+ // CHECK: store <4 x float> %{{.*}}, <4 x float>* %{{.*}}, align 16, !tbaa [[TAG_char]]
+}
+
+// CHECK: [[TYPE_char:!.*]] = !{!"omnipotent char", [[TAG_cxx_tbaa:!.*]],
+// CHECK: [[TAG_cxx_tbaa]] = !{!"Simple C++ TBAA"}
+// CHECK: [[TAG_char]] = !{[[TYPE_char]], [[TYPE_char]], i64 0}
+