Author: jyasskin Date: Tue Jun 29 10:27:35 2010 New Revision: 107143 URL: http://llvm.org/viewvc/llvm-project?rev=107143&view=rev Log: Delete assert in ComputeKeyFunction. The function runs fine without it, since there's an explicit guard on isPolymorphic, and virtual bases don't affect the key function calculation. This allows people to call ASTContext::getKeyFunction on arbitrary classes.
Modified: cfe/trunk/include/clang/AST/ASTContext.h cfe/trunk/lib/AST/RecordLayoutBuilder.cpp Modified: cfe/trunk/include/clang/AST/ASTContext.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=107143&r1=107142&r2=107143&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/ASTContext.h (original) +++ cfe/trunk/include/clang/AST/ASTContext.h Tue Jun 29 10:27:35 2010 @@ -976,8 +976,9 @@ const ASTRecordLayout & getASTObjCImplementationLayout(const ObjCImplementationDecl *D); - /// getKeyFunction - Get the key function for the given record decl. - /// The key function is, according to the Itanium C++ ABI section 5.2.3: + /// getKeyFunction - Get the key function for the given record decl, or NULL + /// if there isn't one. The key function is, according to the Itanium C++ ABI + /// section 5.2.3: /// /// ...the first non-pure virtual function that is not inline at the point /// of class definition. Modified: cfe/trunk/lib/AST/RecordLayoutBuilder.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/RecordLayoutBuilder.cpp?rev=107143&r1=107142&r2=107143&view=diff ============================================================================== --- cfe/trunk/lib/AST/RecordLayoutBuilder.cpp (original) +++ cfe/trunk/lib/AST/RecordLayoutBuilder.cpp Tue Jun 29 10:27:35 2010 @@ -1415,8 +1415,6 @@ const CXXMethodDecl * RecordLayoutBuilder::ComputeKeyFunction(const CXXRecordDecl *RD) { - assert(RD->isDynamicClass() && "Class does not have any virtual methods!"); - // If a class isn't polymorphic it doesn't have a key function. if (!RD->isPolymorphic()) return 0; _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits