[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