[cfe-commits] r172150 - in /cfe/trunk: include/clang/Sema/ExternalSemaSource.h include/clang/Sema/MultiplexExternalSemaSource.h include/clang/Sema/Sema.h include/clang/Serialization/ASTBitCodes.h include/clang/Serialization/ASTReader.h lib/Sema/MultiplexExternalSemaSource.cpp lib/Sema/SemaDecl.cpp lib/Serialization/ASTReader.cpp lib/Serialization/ASTWriter.cpp
Rafael EspĂndola
rafael.espindola at gmail.com
Thu Jan 10 17:53:13 PST 2013
thanks!
On 10 January 2013 18:43, Richard Smith <richard-llvm at metafoo.co.uk> 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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list