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