thanks!
On 10 January 2013 18:43, Richard Smith <[email protected]> wrote: > Author: rsmith > Date: Thu Jan 10 17:43:47 2013 > New Revision: 172150 > > URL: http://llvm.org/viewvc/llvm-project?rev=172150&view=rev > Log: > Truth in advertising: LocallyScopedExternalDecls actually only contains > external declarations with C language linkage. > > Modified: > cfe/trunk/include/clang/Sema/ExternalSemaSource.h > cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/include/clang/Serialization/ASTBitCodes.h > cfe/trunk/include/clang/Serialization/ASTReader.h > cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/lib/Serialization/ASTReader.cpp > cfe/trunk/lib/Serialization/ASTWriter.cpp > > Modified: cfe/trunk/include/clang/Sema/ExternalSemaSource.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/ExternalSemaSource.h?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Sema/ExternalSemaSource.h (original) > +++ cfe/trunk/include/clang/Sema/ExternalSemaSource.h Thu Jan 10 17:43:47 2013 > @@ -130,7 +130,7 @@ > /// declarations to the given vector of declarations. Note that this > routine > /// may be invoked multiple times; the external source should take care not > /// to introduce the same declarations repeatedly. > - virtual void ReadLocallyScopedExternalDecls( > + virtual void ReadLocallyScopedExternCDecls( > SmallVectorImpl<NamedDecl *> &Decls) {} > > /// \brief Read the set of referenced selectors known to the > > Modified: cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h (original) > +++ cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h Thu Jan 10 > 17:43:47 2013 > @@ -309,14 +309,14 @@ > /// introduce the same declarations repeatedly. > virtual void ReadDynamicClasses(SmallVectorImpl<CXXRecordDecl*> &Decls); > > - /// \brief Read the set of locally-scoped external declarations known to > the > + /// \brief Read the set of locally-scoped extern "C" declarations known to > the > /// external Sema source. > /// > /// The external source should append its own locally-scoped external > - /// declarations to the given vector of declarations. Note that this > routine > - /// may be invoked multiple times; the external source should take care not > + /// declarations to the given vector of declarations. Note that this > routine > + /// may be invoked multiple times; the external source should take care not > /// to introduce the same declarations repeatedly. > - virtual void > ReadLocallyScopedExternalDecls(SmallVectorImpl<NamedDecl*>&Decls); > + virtual void > ReadLocallyScopedExternCDecls(SmallVectorImpl<NamedDecl*>&Decls); > > /// \brief Read the set of referenced selectors known to the > /// external Sema source. > > Modified: cfe/trunk/include/clang/Sema/Sema.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Sema/Sema.h (original) > +++ cfe/trunk/include/clang/Sema/Sema.h Thu Jan 10 17:43:47 2013 > @@ -301,35 +301,35 @@ > llvm::SmallPtrSet<const Decl*, 4> ParsingInitForAutoVars; > > /// \brief A mapping from external names to the most recent > - /// locally-scoped external declaration with that name. > + /// locally-scoped extern "C" declaration with that name. > /// > /// This map contains external declarations introduced in local > - /// scoped, e.g., > + /// scopes, e.g., > /// > /// \code > - /// void f() { > + /// extern "C" void f() { > /// void foo(int, int); > /// } > /// \endcode > /// > - /// Here, the name "foo" will be associated with the declaration on > + /// Here, the name "foo" will be associated with the declaration of > /// "foo" within f. This name is not visible outside of > /// "f". However, we still find it in two cases: > /// > - /// - If we are declaring another external with the name "foo", we > - /// can find "foo" as a previous declaration, so that the types > - /// of this external declaration can be checked for > - /// compatibility. > + /// - If we are declaring another global or extern "C" entity with > + /// the name "foo", we can find "foo" as a previous declaration, > + /// so that the types of this external declaration can be checked > + /// for compatibility. > /// > /// - If we would implicitly declare "foo" (e.g., due to a call to > /// "foo" in C when no prototype or definition is visible), then > /// we find this declaration of "foo" and complain that it is > /// not visible. > - llvm::DenseMap<DeclarationName, NamedDecl *> LocallyScopedExternalDecls; > + llvm::DenseMap<DeclarationName, NamedDecl *> LocallyScopedExternCDecls; > > - /// \brief Look for a locally scoped external declaration by the given > name. > + /// \brief Look for a locally scoped extern "C" declaration by the given > name. > llvm::DenseMap<DeclarationName, NamedDecl *>::iterator > - findLocallyScopedExternalDecl(DeclarationName Name); > + findLocallyScopedExternCDecl(DeclarationName Name); > > typedef LazyVector<VarDecl *, ExternalSemaSource, > &ExternalSemaSource::ReadTentativeDefinitions, 2, 2> > > Modified: cfe/trunk/include/clang/Serialization/ASTBitCodes.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTBitCodes.h?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Serialization/ASTBitCodes.h (original) > +++ cfe/trunk/include/clang/Serialization/ASTBitCodes.h Thu Jan 10 17:43:47 > 2013 > @@ -368,9 +368,9 @@ > /// \brief Record code for the array of tentative definitions. > TENTATIVE_DEFINITIONS = 9, > > - /// \brief Record code for the array of locally-scoped external > + /// \brief Record code for the array of locally-scoped extern "C" > /// declarations. > - LOCALLY_SCOPED_EXTERNAL_DECLS = 10, > + LOCALLY_SCOPED_EXTERN_C_DECLS = 10, > > /// \brief Record code for the table of offsets into the > /// Objective-C method pool. > > Modified: cfe/trunk/include/clang/Serialization/ASTReader.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTReader.h?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Serialization/ASTReader.h (original) > +++ cfe/trunk/include/clang/Serialization/ASTReader.h Thu Jan 10 17:43:47 2013 > @@ -638,11 +638,11 @@ > /// \brief Fields containing data that is used for semantic analysis > //@{ > > - /// \brief The IDs of all locally scoped external decls in the chain. > + /// \brief The IDs of all locally scoped extern "C" decls in the chain. > /// > /// Sema tracks these to validate that the types are consistent across all > - /// local external declarations. > - SmallVector<uint64_t, 16> LocallyScopedExternalDecls; > + /// local extern "C" declarations. > + SmallVector<uint64_t, 16> LocallyScopedExternCDecls; > > /// \brief The IDs of all dynamic class declarations in the chain. > /// > @@ -1488,7 +1488,7 @@ > > virtual void ReadDynamicClasses(SmallVectorImpl<CXXRecordDecl *> &Decls); > > - virtual void ReadLocallyScopedExternalDecls( > + virtual void ReadLocallyScopedExternCDecls( > SmallVectorImpl<NamedDecl *> &Decls); > > virtual void ReadReferencedSelectors( > > Modified: cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp (original) > +++ cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp Thu Jan 10 17:43:47 > 2013 > @@ -238,10 +238,10 @@ > Sources[i]->ReadDynamicClasses(Decls); > } > > -void MultiplexExternalSemaSource::ReadLocallyScopedExternalDecls( > +void MultiplexExternalSemaSource::ReadLocallyScopedExternCDecls( > SmallVectorImpl<NamedDecl*> > &Decls) { > for(size_t i = 0; i < Sources.size(); ++i) > - Sources[i]->ReadLocallyScopedExternalDecls(Decls); > + Sources[i]->ReadLocallyScopedExternCDecls(Decls); > } > > void MultiplexExternalSemaSource::ReadReferencedSelectors( > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Thu Jan 10 17:43:47 2013 > @@ -4004,7 +4004,7 @@ > return FixedTInfo; > } > > -/// \brief Register the given locally-scoped external C declaration so > +/// \brief Register the given locally-scoped extern "C" declaration so > /// that it can be found later for redeclarations > void > Sema::RegisterLocallyScopedExternCDecl(NamedDecl *ND, > @@ -4013,15 +4013,15 @@ > assert(ND->getLexicalDeclContext()->isFunctionOrMethod() && > "Decl is not a locally-scoped decl!"); > // Note that we have a locally-scoped external with this name. > - LocallyScopedExternalDecls[ND->getDeclName()] = ND; > + LocallyScopedExternCDecls[ND->getDeclName()] = ND; > > if (!Previous.isSingleResult()) > return; > > NamedDecl *PrevDecl = Previous.getFoundDecl(); > > - // If there was a previous declaration of this variable, it may be > - // in our identifier chain. Update the identifier chain with the new > + // If there was a previous declaration of this entity, it may be in > + // our identifier chain. Update the identifier chain with the new > // declaration. > if (S && IdResolver.ReplaceDecl(PrevDecl, ND)) { > // The previous declaration was found on the identifer resolver > @@ -4045,20 +4045,20 @@ > } > > llvm::DenseMap<DeclarationName, NamedDecl *>::iterator > -Sema::findLocallyScopedExternalDecl(DeclarationName Name) { > +Sema::findLocallyScopedExternCDecl(DeclarationName Name) { > if (ExternalSource) { > // Load locally-scoped external decls from the external source. > SmallVector<NamedDecl *, 4> Decls; > - ExternalSource->ReadLocallyScopedExternalDecls(Decls); > + ExternalSource->ReadLocallyScopedExternCDecls(Decls); > for (unsigned I = 0, N = Decls.size(); I != N; ++I) { > llvm::DenseMap<DeclarationName, NamedDecl *>::iterator Pos > - = LocallyScopedExternalDecls.find(Decls[I]->getDeclName()); > - if (Pos == LocallyScopedExternalDecls.end()) > - LocallyScopedExternalDecls[Decls[I]->getDeclName()] = Decls[I]; > + = LocallyScopedExternCDecls.find(Decls[I]->getDeclName()); > + if (Pos == LocallyScopedExternCDecls.end()) > + LocallyScopedExternCDecls[Decls[I]->getDeclName()] = Decls[I]; > } > } > > - return LocallyScopedExternalDecls.find(Name); > + return LocallyScopedExternCDecls.find(Name); > } > > /// \brief Diagnose function specifiers on a declaration of an identifier > that > @@ -4798,8 +4798,8 @@ > // an extern "C" variable, look for a non-visible extern "C" > // declaration with the same name. > llvm::DenseMap<DeclarationName, NamedDecl *>::iterator Pos > - = findLocallyScopedExternalDecl(NewVD->getDeclName()); > - if (Pos != LocallyScopedExternalDecls.end()) > + = findLocallyScopedExternCDecl(NewVD->getDeclName()); > + if (Pos != LocallyScopedExternCDecls.end()) > Previous.addDecl(Pos->second); > } > > @@ -6151,8 +6151,8 @@ > // an extern "C" function, look for a non-visible extern "C" > // declaration with the same name. > llvm::DenseMap<DeclarationName, NamedDecl *>::iterator Pos > - = findLocallyScopedExternalDecl(NewFD->getDeclName()); > - if (Pos != LocallyScopedExternalDecls.end()) > + = findLocallyScopedExternCDecl(NewFD->getDeclName()); > + if (Pos != LocallyScopedExternCDecls.end()) > Previous.addDecl(Pos->second); > } > > @@ -8291,8 +8291,8 @@ > // this name as a function or variable. If so, use that > // (non-visible) declaration, and complain about it. > llvm::DenseMap<DeclarationName, NamedDecl *>::iterator Pos > - = findLocallyScopedExternalDecl(&II); > - if (Pos != LocallyScopedExternalDecls.end()) { > + = findLocallyScopedExternCDecl(&II); > + if (Pos != LocallyScopedExternCDecls.end()) { > Diag(Loc, diag::warn_use_out_of_scope_declaration) << Pos->second; > Diag(Pos->second->getLocation(), diag::note_previous_declaration); > return Pos->second; > > Modified: cfe/trunk/lib/Serialization/ASTReader.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTReader.cpp Thu Jan 10 17:43:47 2013 > @@ -2119,9 +2119,9 @@ > } > break; > > - case LOCALLY_SCOPED_EXTERNAL_DECLS: > + case LOCALLY_SCOPED_EXTERN_C_DECLS: > for (unsigned I = 0, N = Record.size(); I != N; ++I) > - LocallyScopedExternalDecls.push_back(getGlobalDeclID(F, Record[I])); > + LocallyScopedExternCDecls.push_back(getGlobalDeclID(F, Record[I])); > break; > > case SELECTOR_OFFSETS: { > @@ -5961,14 +5961,14 @@ > } > > void > -ASTReader::ReadLocallyScopedExternalDecls(SmallVectorImpl<NamedDecl *> > &Decls) { > - for (unsigned I = 0, N = LocallyScopedExternalDecls.size(); I != N; ++I) { > - NamedDecl *D > - = dyn_cast_or_null<NamedDecl>(GetDecl(LocallyScopedExternalDecls[I])); > +ASTReader::ReadLocallyScopedExternCDecls(SmallVectorImpl<NamedDecl *> > &Decls) { > + for (unsigned I = 0, N = LocallyScopedExternCDecls.size(); I != N; ++I) { > + NamedDecl *D > + = dyn_cast_or_null<NamedDecl>(GetDecl(LocallyScopedExternCDecls[I])); > if (D) > Decls.push_back(D); > } > - LocallyScopedExternalDecls.clear(); > + LocallyScopedExternCDecls.clear(); > } > > void ASTReader::ReadReferencedSelectors( > > Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=172150&r1=172149&r2=172150&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Thu Jan 10 17:43:47 2013 > @@ -798,7 +798,7 @@ > RECORD(STATISTICS); > RECORD(TENTATIVE_DEFINITIONS); > RECORD(UNUSED_FILESCOPED_DECLS); > - RECORD(LOCALLY_SCOPED_EXTERNAL_DECLS); > + RECORD(LOCALLY_SCOPED_EXTERN_C_DECLS); > RECORD(SELECTOR_OFFSETS); > RECORD(METHOD_POOL); > RECORD(PP_COUNTER_VALUE); > @@ -3506,18 +3506,18 @@ > } > } > > - // Build a record containing all of the locally-scoped external > + // Build a record containing all of the locally-scoped extern "C" > // declarations in this header file. Generally, this record will be > // empty. > - RecordData LocallyScopedExternalDecls; > + RecordData LocallyScopedExternCDecls; > // FIXME: This is filling in the AST file in densemap order which is > // nondeterminstic! > for (llvm::DenseMap<DeclarationName, NamedDecl *>::iterator > - TD = SemaRef.LocallyScopedExternalDecls.begin(), > - TDEnd = SemaRef.LocallyScopedExternalDecls.end(); > + TD = SemaRef.LocallyScopedExternCDecls.begin(), > + TDEnd = SemaRef.LocallyScopedExternCDecls.end(); > TD != TDEnd; ++TD) { > if (!TD->second->isFromASTFile()) > - AddDeclRef(TD->second, LocallyScopedExternalDecls); > + AddDeclRef(TD->second, LocallyScopedExternCDecls); > } > > // Build a record containing all of the ext_vector declarations. > @@ -3749,10 +3749,10 @@ > Stream.EmitRecord(WEAK_UNDECLARED_IDENTIFIERS, > WeakUndeclaredIdentifiers); > > - // Write the record containing locally-scoped external definitions. > - if (!LocallyScopedExternalDecls.empty()) > - Stream.EmitRecord(LOCALLY_SCOPED_EXTERNAL_DECLS, > - LocallyScopedExternalDecls); > + // Write the record containing locally-scoped extern "C" definitions. > + if (!LocallyScopedExternCDecls.empty()) > + Stream.EmitRecord(LOCALLY_SCOPED_EXTERN_C_DECLS, > + LocallyScopedExternCDecls); > > // Write the record containing ext_vector type names. > if (!ExtVectorDecls.empty()) > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
