зеркало из https://github.com/microsoft/clang-1.git
Fix PR9941 again, this time for templates.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131640 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
de5c048fed
Коммит
42bef03a0f
|
@ -8200,6 +8200,8 @@ void Sema::ActOnFields(Scope* S,
|
|||
const CXXDestructorDecl *Dtor =
|
||||
DelayedDestructorExceptionSpecChecks.back().first;
|
||||
if (Dtor->getParent() == Record) {
|
||||
// Don't check if we're a template. The spec hasn't been adjusted.
|
||||
if (!Dtor->getParent()->isDependentType())
|
||||
CheckOverridingFunctionExceptionSpec(Dtor,
|
||||
DelayedDestructorExceptionSpecChecks.back().second);
|
||||
DelayedDestructorExceptionSpecChecks.pop_back();
|
||||
|
|
|
@ -132,6 +132,10 @@ struct VX
|
|||
struct VY : VX
|
||||
{ virtual ~VY() {} };
|
||||
|
||||
template<typename T>
|
||||
struct TVY : VX
|
||||
{ virtual ~TVY() {} };
|
||||
|
||||
|
||||
struct VA {
|
||||
B b;
|
||||
|
@ -140,3 +144,28 @@ struct VA {
|
|||
|
||||
struct VB : VA
|
||||
{ virtual ~VB() {} };
|
||||
|
||||
template<typename T>
|
||||
struct TVB : VA
|
||||
{ virtual ~TVB() {} };
|
||||
|
||||
void tinst2() {
|
||||
TVY<int> tvy;
|
||||
TVB<int> tvb;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
struct Sw {
|
||||
T t;
|
||||
~Sw() {}
|
||||
};
|
||||
|
||||
void tsw() {
|
||||
Sw<int> swi;
|
||||
Sw<B> swb;
|
||||
}
|
||||
// CHECK-NOT: define linkonce_odr void @_ZN2SwI1BED1Ev({{.*}} nounwind
|
||||
// CHECK: define linkonce_odr void @_ZN2SwI1BED1Ev({{.*}}
|
||||
// CHECK: _ZTIi
|
||||
// CHECK: __cxa_call_unexpected
|
||||
// CHECK: define linkonce_odr void @_ZN2SwIiED1Ev({{.*}} nounwind
|
||||
|
|
Загрузка…
Ссылка в новой задаче