annotate clang/test/SemaCXX/attr-on-explicit-template-instantiation.cpp @ 221:79ff65ed7e25

LLVM12 Original
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 15 Jun 2021 19:15:29 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 // PR39118
anatofuz
parents:
diff changeset
4 // Make sure that attributes are properly applied to explicit template
anatofuz
parents:
diff changeset
5 // instantiations.
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 #define HIDDEN __attribute__((__visibility__("hidden")))
anatofuz
parents:
diff changeset
8 #define VISIBLE __attribute__((__visibility__("default")))
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 namespace ns HIDDEN {
anatofuz
parents:
diff changeset
11 struct A { };
anatofuz
parents:
diff changeset
12 template <typename T> struct B { static A a; };
anatofuz
parents:
diff changeset
13 template <typename T> A B<T>::a;
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 // CHECK: @_ZN2ns1BIiE1aE = weak_odr global
anatofuz
parents:
diff changeset
16 // CHECK-NOT: hidden
anatofuz
parents:
diff changeset
17 template VISIBLE A B<int>::a;
anatofuz
parents:
diff changeset
18 }
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 struct C { };
anatofuz
parents:
diff changeset
21 template <typename T> struct D { static C c; };
anatofuz
parents:
diff changeset
22 template <typename T> C D<T>::c;
anatofuz
parents:
diff changeset
23
anatofuz
parents:
diff changeset
24 // CHECK-DAG: @_ZN1DIiE1cB3TAGE
anatofuz
parents:
diff changeset
25 template __attribute__((abi_tag("TAG"))) C D<int>::c;