annotate gcc/testsuite/g++.dg/cpp2a/lambda-mangle.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 // Test lambda mangling
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 // { dg-do compile { target c++2a } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 // { dg-require-weak "" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 // { dg-options "-fno-inline" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 template<typename T> struct R {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 static int x;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 // "int i;" makes the op() non-constexpr in C++17. In C++20, it does not.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 template<typename T> int R<T>::x = []{int i; return 1;}();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 template int R<int>::x;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 // Type of lambda in intializer of R<int>::x: N1RIiE1xMUlvE_E
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 // Corresponding operator(): _ZNK1RIiE1xMUlvE_clEv
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 // { dg-final { scan-assembler-not "_ZNK1RIiE1xMUlvE_clEv" } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 // { dg-final { scan-assembler-not "weak\[^\n\r\]*_?_ZNK1RIiE1xMUlvE_clEv" } }