Index: clang/lib/AST/Interp/ByteCodeExprGen.h =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.h +++ clang/lib/AST/Interp/ByteCodeExprGen.h @@ -364,14 +364,16 @@ if (!RDecl) continue; - if (const auto *DtorDecl = RDecl->getDestructor()) { - const Function *Dtor = this->Ctx->getFunction(DtorDecl); - if (Dtor && Dtor->isConstexpr()) { - assert(Dtor->hasThisPointer()); - assert(Dtor->getNumParams() == 1); - // Emit destructor call. - this->Ctx->emitGetPtrLocal(Local.Offset, DtorDecl); - this->Ctx->emitCall(Dtor, DtorDecl); + if (!RDecl->hasSimpleDestructor()) { + if (const auto *DtorDecl = RDecl->getDestructor()) { + const Function *Dtor = this->Ctx->getFunction(DtorDecl); + if (Dtor && Dtor->isConstexpr()) { + assert(Dtor->hasThisPointer()); + assert(Dtor->getNumParams() == 1); + // Emit destructor call. + this->Ctx->emitGetPtrLocal(Local.Offset, DtorDecl); + this->Ctx->emitCall(Dtor, DtorDecl); + } } } }