Allow EmitConstantInit() to emit constant initializers for objects with trivial constructors and non-trivial destructors. Test that such objects are ignored by init-order checker.

llvm-svn: 178856
This commit is contained in:
Alexey Samsonov
2013-04-05 07:47:28 +00:00
parent 46b8665ea4
commit cb9efbe6d7
2 changed files with 25 additions and 2 deletions

View File

@@ -1018,8 +1018,7 @@ llvm::Constant *CodeGenModule::EmitConstantInit(const VarDecl &D,
if (const CXXConstructExpr *E =
dyn_cast_or_null<CXXConstructExpr>(D.getInit())) {
const CXXConstructorDecl *CD = E->getConstructor();
if (CD->isTrivial() && CD->isDefaultConstructor() &&
Ty->getAsCXXRecordDecl()->hasTrivialDestructor())
if (CD->isTrivial() && CD->isDefaultConstructor())
return EmitNullConstant(D.getType());
}
}