1 // RUN: %clang_cc1 -triple x86_64-linux -O1 -disable-llvm-passes %s \ 2 // RUN: -emit-llvm -o - | FileCheck %s 3 // 4 // Check that we generate correct TBAA information for lvalues constructed 5 // with use of casts. 6 7 struct V { 8 unsigned n; 9 }; 10 11 struct S { 12 char bytes[4]; 13 }; 14 15 void foo(S *p) { 16 // CHECK-LABEL: _Z3fooP1S 17 // CHECK: store i32 5, {{.*}}, !tbaa [[TAG_V_n:!.*]] 18 ((V*)p->bytes)->n = 5; 19 } 20 21 // CHECK-DAG: [[TAG_V_n]] = !{[[TYPE_V:!.*]], [[TYPE_int:!.*]], i64 0} 22 // CHECK-DAG: [[TYPE_V]] = !{!"_ZTS1V", !{{.*}}, i64 0} 23 // CHECK-DAG: [[TYPE_int]] = !{!"int", !{{.*}}, i64 0} 24