1*67e74705SXin Li // RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o %t 2*67e74705SXin Li // RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t 3*67e74705SXin Li // RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t 4*67e74705SXin Li 5*67e74705SXin Li #include <typeinfo> 6*67e74705SXin Li 7*67e74705SXin Li namespace Test1 { 8*67e74705SXin Li // A is explicitly marked hidden, so all RTTI data should also be marked hidden. 9*67e74705SXin Li // CHECK-TEST1: @_ZTSN5Test11AE = linkonce_odr hidden constant 10*67e74705SXin Li // CHECK-TEST1: @_ZTIN5Test11AE = linkonce_odr hidden constant 11*67e74705SXin Li // CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant 12*67e74705SXin Li // CHECK-TEST1: @_ZTIPN5Test11AE = linkonce_odr hidden constant 13*67e74705SXin Li struct __attribute__((visibility("hidden"))) A { }; 14*67e74705SXin Li f()15*67e74705SXin Li void f() { 16*67e74705SXin Li (void)typeid(A); 17*67e74705SXin Li (void)typeid(A *); 18*67e74705SXin Li } 19*67e74705SXin Li } 20*67e74705SXin Li 21*67e74705SXin Li namespace Test2 { 22*67e74705SXin Li // A is weak, so its linkage should be linkoce_odr, but not marked hidden. 23*67e74705SXin Li // CHECK-TEST2: @_ZTSN5Test21AE = linkonce_odr constant 24*67e74705SXin Li // CHECK-TEST2: @_ZTIN5Test21AE = linkonce_odr constant 25*67e74705SXin Li struct A { }; f()26*67e74705SXin Li void f() { 27*67e74705SXin Li (void)typeid(A); 28*67e74705SXin Li } 29*67e74705SXin Li } 30