Reid Kleckner | 891b271 | 2018-07-20 20:55:00 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 %s -std=c++14 -triple=i686-pc-windows-msvc -debug-info-kind=limited -gcodeview -emit-llvm -o - | FileCheck %s |
| 2 | |
| 3 | // Don't emit static data member debug info for variable templates. |
| 4 | // PR38004 |
| 5 | |
| 6 | struct TestImplicit { |
| 7 | template <typename T> |
| 8 | static const __SIZE_TYPE__ size_var = sizeof(T); |
| 9 | }; |
| 10 | int instantiate_test1() { return TestImplicit::size_var<int> + TestImplicit::size_var<TestImplicit>; } |
| 11 | TestImplicit gv1; |
| 12 | |
| 13 | // CHECK: ![[empty:[0-9]+]] = !{} |
| 14 | |
| 15 | // CHECK: ![[A:[^ ]*]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "TestImplicit", |
| 16 | // CHECK-SAME: elements: ![[empty]] |
| 17 | |
| 18 | template <typename T> bool vtpl; |
| 19 | struct TestSpecialization { |
| 20 | template <typename T, typename U> static const auto sdm = vtpl<T>; |
| 21 | template <> static const auto sdm<int, int> = false; |
| 22 | } gv2; |
| 23 | |
| 24 | // CHECK: ![[A:[^ ]*]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "TestSpecialization", |
| 25 | // CHECK-SAME: elements: ![[empty]] |
| 26 | |
| 27 | template <class> bool a; |
| 28 | template <typename> struct b; |
| 29 | struct TestPartial { |
| 30 | template <typename... e> static auto d = a<e...>; |
| 31 | template <typename... e> static auto d<b<e...>> = d<e...>; |
| 32 | } c; |
| 33 | |
| 34 | // CHECK: ![[A:[^ ]*]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "TestPartial", |
| 35 | // CHECK-SAME: elements: ![[empty]] |