diff options
| author | Derek Schuff <dschuff@google.com> | 2016-05-10 17:44:48 +0000 |
|---|---|---|
| committer | Derek Schuff <dschuff@google.com> | 2016-05-10 17:44:48 +0000 |
| commit | 060fd220932100462411c582e8866f55b55f7a09 (patch) | |
| tree | 8bf954da2d76ab62363d7f27fdef5d3f3edf2075 /clang/lib/CodeGen | |
| parent | cc42df4a3024d9785ac17867db0b3af5f25285e9 (diff) | |
| download | bcm5719-llvm-060fd220932100462411c582e8866f55b55f7a09.tar.gz bcm5719-llvm-060fd220932100462411c582e8866f55b55f7a09.zip | |
Clean up condition, add ARM to test
llvm-svn: 269086
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGDeclCXX.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp index 47db5440042..967e57893b2 100644 --- a/clang/lib/CodeGen/CGDeclCXX.cpp +++ b/clang/lib/CodeGen/CGDeclCXX.cpp @@ -89,14 +89,15 @@ static void EmitDeclDestroy(CodeGenFunction &CGF, const VarDecl &D, // Special-case non-array C++ destructors, if they have the right signature // that can be directly registered with __cxa_atexit. If __cxa_atexit is // disabled via a flag, a different helper function is generated anyway. - const CXXRecordDecl *record = nullptr; - if (dtorKind == QualType::DK_cxx_destructor && - (record = type->getAsCXXRecordDecl()) && - (!CGM.getCXXABI().HasThisReturn( - GlobalDecl(record->getDestructor(), Dtor_Complete)) || - !CGM.getCodeGenOpts().CXAAtExit)) { - assert(!record->hasTrivialDestructor()); - CXXDestructorDecl *dtor = record->getDestructor(); + const CXXRecordDecl *Record = type->getAsCXXRecordDecl(); + bool CanRegisterDestructor = Record && + !CGM.getCXXABI().HasThisReturn(GlobalDecl( + Record->getDestructor(), Dtor_Complete)); + + if (dtorKind == QualType::DK_cxx_destructor && Record && + (CanRegisterDestructor || !CGM.getCodeGenOpts().CXAAtExit)) { + assert(!Record->hasTrivialDestructor()); + CXXDestructorDecl *dtor = Record->getDestructor(); function = CGM.getAddrOfCXXStructor(dtor, StructorType::Complete); argument = llvm::ConstantExpr::getBitCast( |

