1806f9a3d08c08acd79fe92a335ae24cbc271e626Anders Carlsson// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o %t 23361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson// RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t 33361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson// RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t 43361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson 53361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson#include <typeinfo> 63361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson 73361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlssonnamespace Test1 { 83361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson // A is explicitly marked hidden, so all RTTI data should also be marked hidden. 93361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson // CHECK-TEST1: @_ZTSN5Test11AE = linkonce_odr hidden constant 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-TEST1: @_ZTIN5Test11AE = linkonce_odr hidden constant 11907c828b080332854826a87451e838930f4be788Anders Carlsson // CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-TEST1: @_ZTIPN5Test11AE = linkonce_odr hidden constant 133361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson struct __attribute__((visibility("hidden"))) A { }; 143361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson 153361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson void f() { 163361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson (void)typeid(A); 173361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson (void)typeid(A *); 183361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson } 193361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson} 203361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson 213361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlssonnamespace Test2 { 223361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson // A is weak, so its linkage should be linkoce_odr, but not marked hidden. 233361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson // CHECK-TEST2: @_ZTSN5Test21AE = linkonce_odr constant 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-TEST2: @_ZTIN5Test21AE = linkonce_odr constant 253361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson struct A { }; 263361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson void f() { 273361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson (void)typeid(A); 283361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson } 293361cff6021195dc29aa9082ff8a0e5628de5f31Anders Carlsson} 30