1*67e74705SXin Li // RUN: %clang_cc1 -triple i686-pc-win32 -disable-llvm-optzns -emit-llvm -o - -O1 %s | FileCheck %s 2*67e74705SXin Li // 3*67e74705SXin Li // Test that TBAA works in the Microsoft C++ ABI. We used to error out while 4*67e74705SXin Li // attempting to mangle RTTI. 5*67e74705SXin Li 6*67e74705SXin Li struct StructA { 7*67e74705SXin Li int a; 8*67e74705SXin Li }; 9*67e74705SXin Li 10*67e74705SXin Li struct StructB : virtual StructA { 11*67e74705SXin Li StructB(); 12*67e74705SXin Li }; 13*67e74705SXin Li StructB()14*67e74705SXin LiStructB::StructB() { 15*67e74705SXin Li a = 42; 16*67e74705SXin Li // CHECK: store i32 42, i32* {{.*}}, !tbaa [[TAG_A_i32:!.*]] 17*67e74705SXin Li } 18*67e74705SXin Li 19*67e74705SXin Li // CHECK: [[TYPE_INT:!.*]] = !{!"int", [[TYPE_CHAR:!.*]], i64 0} 20*67e74705SXin Li // CHECK: [[TYPE_CHAR]] = !{!"omnipotent char", ! 21*67e74705SXin Li // CHECK: [[TAG_A_i32]] = !{[[TYPE_A:!.*]], [[TYPE_INT]], i64 0} 22*67e74705SXin Li // CHECK: [[TYPE_A]] = !{!"?AUStructA@@", [[TYPE_INT]], i64 0} 23