[all-commits] [llvm/llvm-project] 997a71: PR48434: Work around crashes due to deserializatio...

Richard Smith via All-commits all-commits at lists.llvm.org
Wed Dec 9 12:28:01 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 997a719d5a70100fcbbec1e51ce44cd66041bddc
      https://github.com/llvm/llvm-project/commit/997a719d5a70100fcbbec1e51ce44cd66041bddc
  Author: Richard Smith <richard at metafoo.co.uk>
  Date:   2020-12-09 (Wed, 09 Dec 2020)

  Changed paths:
    M clang/include/clang/AST/ASTContext.h
    M clang/include/clang/AST/Type.h
    M clang/include/clang/AST/TypeProperties.td
    M clang/lib/AST/ASTContext.cpp
    M clang/lib/AST/Type.cpp
    M clang/test/PCH/cxx-templates.cpp
    M clang/test/PCH/cxx-templates.h

  Log Message:
  -----------
  PR48434: Work around crashes due to deserialization cycles via typedefs.

Ensure that we can deserialize a TypedefType even while in the middle of
deserializing its TypedefDecl, by removing the need to look at the
TypedefDecl while constructing the TypedefType.

This fixes all the currently-known failures for PR48434, but it's not a
complete fix, because we can still trigger deserialization cycles, which
are not supposed to happen.


  Commit: 2a2c228c7ada0a5d77c48b4d445ab0013ca0ae19
      https://github.com/llvm/llvm-project/commit/2a2c228c7ada0a5d77c48b4d445ab0013ca0ae19
  Author: Richard Smith <richard at metafoo.co.uk>
  Date:   2020-12-09 (Wed, 09 Dec 2020)

  Changed paths:
    M clang/include/clang/Basic/Attr.td
    M clang/include/clang/Basic/AttrDocs.td
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/lib/AST/TypePrinter.cpp
    M clang/lib/Sema/SemaDeclAttr.cpp
    M clang/lib/Sema/SemaTemplate.cpp
    M clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
    A clang/test/PCH/decl-attrs.cpp
    M clang/test/SemaTemplate/attributes.cpp
    M clang/utils/TableGen/ClangAttrEmitter.cpp
    M libcxx/include/__config
    M libcxx/include/iosfwd
    M libcxx/include/regex
    M libcxx/include/string
    M libcxx/include/string_view

  Log Message:
  -----------
  Add new 'preferred_name' attribute.

This attribute permits a typedef to be associated with a class template
specialization as a preferred way of naming that class template
specialization. This permits us to specify that (for example) the
preferred way to express 'std::basic_string<char>' is as 'std::string'.

The attribute is applied to the various class templates in libc++ that have
corresponding well-known typedef names.

This is a re-commit. The previous commit was reverted because it exposed
a pre-existing bug that has since been fixed / worked around; see
PR48434.

Differential Revision: https://reviews.llvm.org/D91311


  Commit: 4ae8651c59241bca0c1ea5adaf8f06b292696b6f
      https://github.com/llvm/llvm-project/commit/4ae8651c59241bca0c1ea5adaf8f06b292696b6f
  Author: Richard Smith <richard at metafoo.co.uk>
  Date:   2020-12-09 (Wed, 09 Dec 2020)

  Changed paths:
    M clang/test/PCH/decl-attrs.cpp

  Log Message:
  -----------
  Add another test for PR48434.


Compare: https://github.com/llvm/llvm-project/compare/baef18dffba1...4ae8651c5924


More information about the All-commits mailing list