
This implements the same overload resolution behavior as GCC, as described in https://wg21.link/p3606 (section 1-2, not 3) If during overload resolution, there is a non-template candidate that would be always be picked - because each of the argument is a perfect match (ie the source and target types are the same), we do not perform deduction for any template candidate that might exists. The goal is to be able to merge https://github.com/llvm/llvm-project/pull/122423 without being too disruptive. This change means that the selection of the best viable candidate and template argument deduction become interleaved. To avoid rewriting half of Clang we store in OverloadCandidateSet enough information to be able to deduce template candidates from OverloadCandidateSet::BestViableFunction. Which means the lifetime of any object used by template argument must outlive a call to Add*Template*Candidate. This two phase resolution is not performed for some initialization as there are cases where template candidate are better match in these cases per the standard. It's also bypassed for code completion. The change has a nice impact on compile times https://llvm-compile-time-tracker.com/compare.php?from=719b029c16eeb1035da522fd641dfcc4cee6be74&to=bf7041045c9408490c395230047c5461de72fc39&stat=instructions%3Au Fixes https://github.com/llvm/llvm-project/issues/62096 Fixes https://github.com/llvm/llvm-project/issues/74581 Reapplies https://github.com/llvm/llvm-project/pull/133426
346 lines
15 KiB
C++
346 lines
15 KiB
C++
// RUN: %clang_cc1 -templight-dump -Wno-unused-value %s 2>&1 | FileCheck %s
|
|
|
|
void a(long) {
|
|
[] {};
|
|
}
|
|
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(lambda at .*templight-empty-entries-fix.cpp:4:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:4:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:4:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(lambda at .*templight-empty-entries-fix.cpp:4:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:4:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:4:3'$}}
|
|
|
|
template <int = 0> void a(long) { a(0); }
|
|
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+a$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:35'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template non-type parameter 0 of a$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:15'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template non-type parameter 0 of a$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:15'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+a$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:35'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'a<0>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:35'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'a<0>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:35'$}}
|
|
|
|
template <int> struct b { typedef int c; };
|
|
template <bool d = true, class = typename b<d>::c> void a(long) { a(0); }
|
|
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+a$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:67'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:16'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:16'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template type parameter 1 of a$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:32'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'b<1>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:59:23'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:43'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'b<1>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:59:23'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:43'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'b<1>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:59:23'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:43'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'b<1>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:59:23'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:43'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'b<1>'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:59:23'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:43'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'b<1>'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:59:23'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:43'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template type parameter 1 of a$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:32'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+a$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:67'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'a<true, int>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:67'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'a<true, int>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:60:57'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:67'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+a$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:67'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template non-type parameter 0 of a$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:15'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template non-type parameter 0 of a$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:15'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+a$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:20:25'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:60:67'$}}
|
|
|
|
template <bool = true> void d(int = 0) { d(); }
|
|
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:42'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template non-type parameter 0 of d$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:16'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template non-type parameter 0 of d$}}
|
|
// CHECK: {{^kind:[ ]+DefaultTemplateArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:16'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:42'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'d<true>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:42'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'d<true>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:42'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'unnamed function parameter 0 of d<true>'$}}
|
|
// CHECK: {{^kind:[ ]+DefaultFunctionArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:35'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:42'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'unnamed function parameter 0 of d<true>'$}}
|
|
// CHECK: {{^kind:[ ]+DefaultFunctionArgumentInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:35'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:171:42'$}}
|
|
|
|
void e() {
|
|
struct {
|
|
} f;
|
|
}
|
|
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(unnamed struct at .*templight-empty-entries-fix.cpp:223:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:224:5'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(unnamed struct at .*templight-empty-entries-fix.cpp:223:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:224:5'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(unnamed struct at .*templight-empty-entries-fix.cpp:223:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:224:5'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(unnamed struct at .*templight-empty-entries-fix.cpp:223:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:224:5'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(unnamed struct at .*templight-empty-entries-fix.cpp:223:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'\(unnamed struct at .*templight-empty-entries-fix.cpp:223:3\)'$}}
|
|
// CHECK: {{^kind:[ ]+Memoization$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:223:3'$}}
|
|
|
|
|
|
template <template<typename> class>
|
|
void d();
|
|
|
|
template <typename T> struct C;
|
|
|
|
void foo() {
|
|
d<C>();
|
|
}
|
|
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+ExplicitTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:266:6'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template template parameter 0 of d$}}
|
|
// CHECK: {{^kind:[ ]+PriorTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:265:35'$}}
|
|
// CHECK: {{^poi:[ ]+''$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template template parameter 0 of d$}}
|
|
// CHECK: {{^kind:[ ]+PriorTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:265:35'$}}
|
|
// CHECK: {{^poi:[ ]+''$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template template parameter 0 of d$}}
|
|
// CHECK: {{^kind:[ ]+PartialOrderingTTP$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:265:35'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:5'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+unnamed template template parameter 0 of d$}}
|
|
// CHECK: {{^kind:[ ]+PartialOrderingTTP$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:265:35'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:5'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+ExplicitTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:266:6'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:266:6'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+DeducedTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:266:6'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'d<C>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:266:6'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+'d<C>'$}}
|
|
// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:266:6'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+ExplicitTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+Begin$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|
|
// CHECK-LABEL: {{^---$}}
|
|
// CHECK: {{^name:[ ]+d$}}
|
|
// CHECK: {{^kind:[ ]+ExplicitTemplateArgumentSubstitution$}}
|
|
// CHECK: {{^event:[ ]+End$}}
|
|
// CHECK: {{^orig:[ ]+'.*templight-empty-entries-fix.cpp:171:29'$}}
|
|
// CHECK: {{^poi:[ ]+'.*templight-empty-entries-fix.cpp:271:3'$}}
|