150
|
1 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s
|
|
2
|
|
3 // PR39118
|
|
4 // Make sure that attributes are properly applied to explicit template
|
|
5 // instantiations.
|
|
6
|
|
7 #define HIDDEN __attribute__((__visibility__("hidden")))
|
|
8 #define VISIBLE __attribute__((__visibility__("default")))
|
|
9
|
|
10 namespace ns HIDDEN {
|
|
11 struct A { };
|
|
12 template <typename T> struct B { static A a; };
|
|
13 template <typename T> A B<T>::a;
|
|
14
|
|
15 // CHECK: @_ZN2ns1BIiE1aE = weak_odr global
|
|
16 // CHECK-NOT: hidden
|
|
17 template VISIBLE A B<int>::a;
|
|
18 }
|
|
19
|
|
20 struct C { };
|
|
21 template <typename T> struct D { static C c; };
|
|
22 template <typename T> C D<T>::c;
|
|
23
|
|
24 // CHECK-DAG: @_ZN1DIiE1cB3TAGE
|
|
25 template __attribute__((abi_tag("TAG"))) C D<int>::c;
|