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