blob: 5945be5c73a26064c9300b06ffb704b7254bd546 [file] [log] [blame]
Anders Carlsson064ccbe2011-01-29 22:39:23 +00001// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o %t
Anders Carlssoncaea35d2011-01-29 19:52:22 +00002// RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t
3// RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t
Anders Carlssoncaea35d2011-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
John McCall57420b32014-02-08 03:26:05 +000010 // CHECK-TEST1: @_ZTIN5Test11AE = linkonce_odr hidden constant
Anders Carlsson49f17532011-01-29 22:10:32 +000011 // CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant
John McCall57420b32014-02-08 03:26:05 +000012 // CHECK-TEST1: @_ZTIPN5Test11AE = linkonce_odr hidden constant
Anders Carlssoncaea35d2011-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
John McCall57420b32014-02-08 03:26:05 +000024 // CHECK-TEST2: @_ZTIN5Test21AE = linkonce_odr constant
Anders Carlssoncaea35d2011-01-29 19:52:22 +000025 struct A { };
Anders Carlssoncaea35d2011-01-29 19:52:22 +000026 void f() {
27 (void)typeid(A);
28 }
29}