[all-commits] [llvm/llvm-project] 2b94aa: [clang] mangle placeholder for deduced type as a t...

Matheus Izvekov via All-commits all-commits at lists.llvm.org
Tue Aug 27 21:04:59 PDT 2024


  Branch: refs/heads/users/mizvekov/clang-fix-GH106182
  Home:   https://github.com/llvm/llvm-project
  Commit: 2b94aa10a911162aff67a32ba623b0afd664761b
      https://github.com/llvm/llvm-project/commit/2b94aa10a911162aff67a32ba623b0afd664761b
  Author: Matheus Izvekov <mizvekov at gmail.com>
  Date:   2024-08-28 (Wed, 28 Aug 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/AST/ItaniumMangle.cpp
    A clang/test/CodeGenCXX/GH106182.cpp

  Log Message:
  -----------
  [clang] mangle placeholder for deduced type as a template-prefix

As agreed on https://github.com/itanium-cxx-abi/cxx-abi/issues/109
these placeholders should be mangled as a `template-prefix` production.

```
    <template-prefix> ::= <template unqualified-name>           # global template
                      ::= <prefix> <template unqualified-name>  # nested template
                      ::= <template-param>                      # template template parameter
                      ::= <substitution>
```

Previous to this patch, the template template parameter case was not
handled, and template template parameters were incorrectly being handled
as unqualified-names.

Before #95202, DeducedTemplateType was not canonicalized correctly,
so that template template parameter declarations were retained
uncanonicalized.

After #95202 patch, we correctly canonicalize them, but now this leads
to handling these TTPs as anonymous entities, where the implementation
correctly doesn't expect an anonymous declaration of this kind,
leading to a crash.

Fixes #106182.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list