From: Douglas Gregor Date: Tue, 6 Jul 2010 18:29:01 +0000 (+0000) Subject: Remove my egregious hack that forced deserialization of visible X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af57280ff8f5df43c413becfbf2415e0cdce9437;p=clang Remove my egregious hack that forced deserialization of visible declarations when implicitly declaring the default constructor, copy constructor, destructor, and copy-assignment operators of a class. Argiris fixed the underlying problem in r107596. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107681 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 1d0264853c..e99fed3a12 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -4161,17 +4161,6 @@ CXXConstructorDecl *Sema::DeclareImplicitDefaultConstructor( assert(!ClassDecl->hasUserDeclaredConstructor() && "Should not build implicit default constructor!"); - // FIXME: HACK HACK HACK - if (Context.getExternalSource()) { - // This hack ensures that, when using precompiled headers, the lookup - // table in the DeclContext has already loaded the constructor declarations - // so that we can add a new one. The real fix will go into DeclContext, - // when I figure out what that is. - CanQualType T - = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl)); - ClassDecl->lookup(Context.DeclarationNames.getCXXConstructorName(T)); - } - // C++ [except.spec]p14: // An implicitly declared special member function (Clause 12) shall have an // exception-specification. [...] @@ -4647,15 +4636,6 @@ CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) { // operators taking an object instead of a reference are allowed. - // FIXME: HACK HACK HACK - if (Context.getExternalSource()) { - // This hack ensures that, when using precompiled headers, the lookup - // table in the DeclContext has already loaded the assignment operator - // declarations so that we can add a new one. The real fix will go into - // DeclContext, when I figure out what that is. - ClassDecl->lookup(Context.DeclarationNames.getCXXOperatorName(OO_Equal)); - } - // C++ [class.copy]p10: // If the class definition does not explicitly declare a copy // assignment operator, one is declared implicitly. @@ -5088,17 +5068,6 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor( // If the class definition does not explicitly declare a copy // constructor, one is declared implicitly. - // FIXME: HACK HACK HACK - if (Context.getExternalSource()) { - // This hack ensures that, when using precompiled headers, the lookup - // table in the DeclContext has already loaded the constructor declarations - // so that we can add a new one. The real fix will go into DeclContext, - // when I figure out what that is. - CanQualType T - = Context.getCanonicalType(Context.getTypeDeclType(ClassDecl)); - ClassDecl->lookup(Context.DeclarationNames.getCXXConstructorName(T)); - } - // C++ [class.copy]p5: // The implicitly-declared copy constructor for a class X will // have the form