blob: 5945be5c73a26064c9300b06ffb704b7254bd546 [file] [log] [blame]
Anders Carlsson806f9a32011-01-29 22:39:23 +00001// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o %t
Anders Carlsson3361cff2011-01-29 19:52:22 +00002// RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t
3// RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t
Anders Carlsson3361cff2011-01-29 19:52:22 +00004
5#include <typeinfo>
6
7namespace Test1 {
8 // A is explicitly marked hidden, so all RTTI data should also be marked hidden.
9 // CHECK-TEST1: @_ZTSN5Test11AE = linkonce_odr hidden constant
Stephen Hines651f13c2014-04-23 16:59:28 -070010 // CHECK-TEST1: @_ZTIN5Test11AE = linkonce_odr hidden constant
Anders Carlsson907c8282011-01-29 22:10:32 +000011 // CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant
Stephen Hines651f13c2014-04-23 16:59:28 -070012 // CHECK-TEST1: @_ZTIPN5Test11AE = linkonce_odr hidden constant
Anders Carlsson3361cff2011-01-29 19:52:22 +000013 struct __attribute__((visibility("hidden"))) A { };
14
15 void f() {
16 (void)typeid(A);
17 (void)typeid(A *);
18 }
19}
20
21namespace Test2 {
22 // A is weak, so its linkage should be linkoce_odr, but not marked hidden.
23 // CHECK-TEST2: @_ZTSN5Test21AE = linkonce_odr constant
Stephen Hines651f13c2014-04-23 16:59:28 -070024 // CHECK-TEST2: @_ZTIN5Test21AE = linkonce_odr constant
Anders Carlsson3361cff2011-01-29 19:52:22 +000025 struct A { };
Anders Carlsson3361cff2011-01-29 19:52:22 +000026 void f() {
27 (void)typeid(A);
28 }
29}