annotate cross-project-tests/debuginfo-tests/clang_llvm_roundtrip/simplified_template_names.cpp @ 236:c4bab56944e8 llvm-original

LLVM 16
author kono
date Wed, 09 Nov 2022 17:45:10 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
1 // UNSUPPORTED: system-darwin
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
2 // RUN: %clang %target_itanium_abi_host_triple %s -c -o - -gdwarf-4 -Xclang -gsimple-template-names=mangled -Xclang -debug-forward-template-params -std=c++20 \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
3 // RUN: | llvm-dwarfdump --verify -
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
4 // RUN: %clang %target_itanium_abi_host_triple %s -c -o - -gdwarf-4 -Xclang -gsimple-template-names=mangled -Xclang -debug-forward-template-params -std=c++20 -gmlt -fdebug-info-for-profiling \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
5 // RUN: | llvm-dwarfdump --verify -
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
6 // RUN: %clang %target_itanium_abi_host_triple %s -c -o - -gdwarf-4 -Xclang -gsimple-template-names=mangled -Xclang -debug-forward-template-params -std=c++20 -fdebug-types-section \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
7 // RUN: | llvm-dwarfdump --verify -
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
8 // RUN: %clang %target_itanium_abi_host_triple %s -c -o - -gdwarf-5 -Xclang -gsimple-template-names=mangled -Xclang -debug-forward-template-params -std=c++20 -fdebug-types-section \
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
9 // RUN: | llvm-dwarfdump --verify -
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
10
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
11 #include <cstdint>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
12 #include <cstddef>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
13 template<typename ...Ts>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
14 struct t1 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
15 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
16 template<typename ...Ts>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
17 struct t2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
18 struct udt {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
19 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
20 namespace ns {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
21 struct udt {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
22 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
23 namespace inner {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
24 template<typename T> struct ttp { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
25 struct udt { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
26 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
27 template<template<typename> class T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
28 void ttp_user() { }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
29 enum Enumeration : int { Enumerator1, Enumerator2, Enumerator3 = 1 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
30 enum class EnumerationClass { Enumerator1, Enumerator2, Enumerator3 = 1 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
31 enum : int { AnonEnum1, AnonEnum2, AnonEnum3 = 1 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
32 enum EnumerationSmall : unsigned char { kNeg = 0xff };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
33 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
34 template <typename... Ts>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
35 void f1() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
36 t1<Ts...> v1;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
37 t2<Ts...> *v2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
38 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
39 template<bool b, int i>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
40 void f2() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
41 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
42 template<typename T, T ...A>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
43 void f3() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
44 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
45 template<typename T, unsigned = 3>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
46 void f4() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
47 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
48 template<typename T, bool b = false>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
49 struct t3 { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
50 extern template class t3<int>;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
51 template class t3<int>;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
52 struct outer_class {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
53 struct inner_class {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
54 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
55 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
56 int i = 3;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
57 template<unsigned N>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
58 struct t4 { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
59 namespace {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
60 struct t5 { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
61 enum LocalEnum { LocalEnum1 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
62 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
63 template<typename ...T1, typename T2 = int>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
64 void f5() { }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
65 template<typename T1, typename ...T2>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
66 void f6() { }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
67 struct t6 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
68 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
69 void operator<<(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
70 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
71 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
72 void operator<(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
73 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
74 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
75 void operator<=(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
76 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
77 template<typename T = int>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
78 operator t1<float>*() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
79 return nullptr;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
80 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
81 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
82 void operator-(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
83 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
84 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
85 void operator*(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
86 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
87 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
88 void operator/(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
89 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
90 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
91 void operator%(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
92 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
93 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
94 void operator^(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
95 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
96 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
97 void operator&(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
98 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
99 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
100 void operator|(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
101 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
102 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
103 void operator~() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
104 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
105 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
106 void operator!() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
107 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
108 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
109 void operator=(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
110 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
111 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
112 void operator>(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
113 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
114 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
115 void operator,(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
116 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
117 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
118 void operator()() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
119 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
120 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
121 void operator[](int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
122 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
123 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
124 void operator<=>(int) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
125 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
126 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
127 void* operator new(std::size_t, T) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
128 __builtin_unreachable();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
129 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
130 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
131 void operator delete(void*, T) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
132 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
133 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
134 void* operator new[](std::size_t, T) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
135 __builtin_unreachable();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
136 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
137 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
138 void operator delete[](void*, T) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
139 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
140 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
141 int operator co_await() { __builtin_unreachable(); }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
142
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
143 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
144 void operator"" _suff(unsigned long long) {}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
145 template<template<typename...> class T> void f7() { }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
146 template<template<typename...> class T, typename T2> void f8() { }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
147 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
148 struct t7;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
149 using t7i = t7<int>;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
150 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
151 struct
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
152 __attribute__((__preferred_name__(t7i)))
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
153 t7 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
154 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
155 struct t8 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
156 void mem();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
157 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
158 namespace ns {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
159 inline namespace inl {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
160 template<typename T> struct t9 { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
161 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
162 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
163 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
164 void (*f9())() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
165 return nullptr;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
166 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
167 struct t10 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
168 template<typename T = void>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
169 t10() { }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
170 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
171
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
172 template<typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
173 void operator_not_really() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
174 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
175
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
176 template<typename T, T ...A>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
177 struct t11 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
178 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
179
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
180 struct t12 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
181 t11<LocalEnum, LocalEnum1> v1;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
182 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
183
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
184 template<decltype(ns::AnonEnum1)>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
185 void f10() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
186 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
187
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
188 int main() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
189 struct { } A;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
190 auto L = []{};
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
191 f1<int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
192 f1<float>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
193 f1<bool>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
194 f1<double>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
195 f1<long>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
196 f1<short>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
197 f1<unsigned>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
198 f1<unsigned long long>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
199 f1<long long>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
200 f1<udt>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
201 f1<ns::udt>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
202 f1<ns::udt*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
203 f1<ns::inner::udt>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
204 f1<t1<int>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
205 f1<int, float>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
206 f1<int *>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
207 f1<int &>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
208 f1<int &&>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
209 f1<const int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
210 f1<int[3]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
211 f1<void>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
212 f1<outer_class::inner_class>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
213 f1<unsigned long>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
214 f2<true, 3>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
215 f3<ns::Enumeration, ns::Enumerator3, (ns::Enumeration)2>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
216 f3<ns::EnumerationClass, ns::EnumerationClass::Enumerator3, (ns::EnumerationClass)2>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
217 f3<ns::EnumerationSmall, ns::kNeg>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
218 f3<decltype(ns::AnonEnum1), ns::AnonEnum3, (decltype(ns::AnonEnum1))2>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
219 f3<LocalEnum, LocalEnum1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
220 f3<int*, &i>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
221 f3<int*, nullptr>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
222 t4<3> v2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
223 f3<unsigned long, 1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
224 f3<unsigned long long, 1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
225 f3<long, 1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
226 f3<unsigned int, 1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
227 f3<short, 1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
228 f3<unsigned char, (char)0>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
229 f3<signed char, (char)0>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
230 f3<unsigned short, 1, 2>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
231 f3<char, 0, 1, 6, 7, 13, 14, 31, 32, 33, (char)127, (char)128>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
232 f3<__int128, ((__int128)9223372036854775807) * 2>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
233 f4<unsigned int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
234 f1<t3<int>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
235 f1<t3<t3<int>>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
236 f1<decltype(L)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
237 t3<decltype(L)> v1;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
238 f1<t3<t3<decltype(L)>>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
239 f1<int(float)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
240 f1<void(...)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
241 f1<void(int, ...)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
242 f1<const int &>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
243 f1<const int *&>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
244 f1<t5>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
245 f1<decltype(nullptr)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
246 f1<long*, long*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
247 f1<long*, udt*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
248 f1<void *const>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
249 f1<const void *const *>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
250 f1<void()>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
251 f1<void(*)()>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
252 f1<decltype(&L)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
253 f1<decltype(A)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
254 f1<decltype(&A)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
255 f5<t1<int>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
256 f5<>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
257 f6<t1<int>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
258 f1<>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
259 f1<const void*, const void*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
260 f1<t1<int*>*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
261 f1<int *[]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
262 t6 v6;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
263 v6.operator<< <int>(1);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
264 v6.operator< <int>(1);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
265 v6.operator<= <int>(1);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
266 v6.operator t1<float>*();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
267 v6.operator- <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
268 v6.operator* <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
269 v6.operator/ <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
270 v6.operator% <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
271 v6.operator^ <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
272 v6.operator& <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
273 v6.operator| <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
274 v6.operator~ <int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
275 v6.operator! <int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
276 v6.operator= <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
277 v6.operator> <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
278 v6.operator, <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
279 v6.operator() <int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
280 v6.operator[] <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
281 v6.operator<=> <int>(3);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
282 t6::operator new(0, 0);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
283 t6::operator new[](0, 0);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
284 t6::operator delete(nullptr, 0);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
285 t6::operator delete[](nullptr, 0);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
286 v6.operator co_await<int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
287 42_suff;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
288 struct t7 { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
289 f1<t7>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
290 f1<int(&)[3]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
291 f1<int(*)[3]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
292 f7<t1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
293 f8<t1, int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
294 using namespace ns;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
295 ttp_user<inner::ttp>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
296 f1<int*, decltype(nullptr)*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
297 t7i x;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
298 f1<t7i>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
299 f7<ns::inl::t9>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
300 f1<_Atomic(int)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
301 f1<int, long, volatile char>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
302 f1<__attribute__((__vector_size__(sizeof(int) * 2))) int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
303 f1<int *const volatile>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
304 f1<const volatile void>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
305 f1<t1<decltype(L)>>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
306 t10 v3;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
307 f1<void (::udt::*)() const>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
308 f1<void (::udt::*)() volatile &>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
309 f1<void (::udt::*)() const volatile &&>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
310 f9<int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
311 f1<void (*const)()>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
312 f1<char const (&)[1]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
313 f1<void () const &>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
314 f1<void () volatile &&>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
315 f1<void () const volatile>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
316 f1<int *const[1]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
317 f1<int *const(&)[1]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
318 f1<void (::udt::* const&)()>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
319 f1<void (*(int))(float)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
320 f1<t1<int>[1]>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
321 f1<void (*)() noexcept>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
322 f1<void (decltype(A))>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
323 struct t8 { decltype(A) m; };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
324 f1<void(t8, decltype(A))>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
325 f1<void(t8)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
326 operator_not_really<int>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
327 t12 v4;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
328 f1<_BitInt(3)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
329 f1<const unsigned _BitInt(5)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
330 f1<void(t1<>, t1<>)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
331 f1<int t1<>::*>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
332 void fcc() __attribute__((swiftcall));
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
333 f1<decltype(fcc)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
334 int fnrt() __attribute__((noreturn));
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
335 f1<decltype(fnrt)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
336 f10<ns::AnonEnum1>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
337 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
338 void t8::mem() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
339 struct t7 { };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
340 f1<t7>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
341 f1<decltype(&t8::mem)>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
342 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
343 namespace complex_type_units {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
344 void external_function();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
345 namespace {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
346 struct internal_type;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
347 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
348 template <void (*)() = external_function> struct t2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
349 template <typename = t2<>> class t3 {};
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
350 template <typename = internal_type, typename = t3<>>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
351 struct t4 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
352 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
353 struct t5 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
354 t4<> v1;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
355 };
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
356 void f1() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
357 t5 v1;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
358 t3<> v2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
359 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
360 }