diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-06-19 21:48:43 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-06-19 21:48:43 +0000 |
commit | e1c0ae6fda87373a954cf483dec638c0115d4fb1 (patch) | |
tree | 6028cf840f6a9a32647f2d25312dd43ed06e33e2 /clang/lib/AST/ExprCXX.cpp | |
parent | 77a0cfb19aeac98e3db932ed715e2f942085685b (diff) | |
download | bcm5719-llvm-e1c0ae6fda87373a954cf483dec638c0115d4fb1.tar.gz bcm5719-llvm-e1c0ae6fda87373a954cf483dec638c0115d4fb1.zip |
Revert r158700 and dependent patches r158716, r158717, and r158731.
The original r158700 caused crashes in the gcc test suite,
g++.abi/vtable3a.C among others. It also caused failures in the libc++
test suite.
llvm-svn: 158749
Diffstat (limited to 'clang/lib/AST/ExprCXX.cpp')
-rw-r--r-- | clang/lib/AST/ExprCXX.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp index 9aac837eb7e..e4545c152f1 100644 --- a/clang/lib/AST/ExprCXX.cpp +++ b/clang/lib/AST/ExprCXX.cpp @@ -556,6 +556,9 @@ bool CXXDynamicCastExpr::isAlwaysNull() const const CXXRecordDecl *SrcRD = cast<CXXRecordDecl>(SrcType->castAs<RecordType>()->getDecl()); + if (!SrcRD->hasAttr<FinalAttr>()) + return false; + const CXXRecordDecl *DestRD = cast<CXXRecordDecl>(DestType->castAs<RecordType>()->getDecl()); |