[all-commits] [llvm/llvm-project] 5c4fa3: [clang] fix broken canonicalization of DeducedTemp...

Matheus Izvekov via All-commits all-commits at lists.llvm.org
Wed Jun 12 11:53:49 PDT 2024


  Branch: refs/heads/users/mizvekov/clang-fix-61317
  Home:   https://github.com/llvm/llvm-project
  Commit: 5c4fa3ce2ce23fdaf877b71b2775244d15a149d3
      https://github.com/llvm/llvm-project/commit/5c4fa3ce2ce23fdaf877b71b2775244d15a149d3
  Author: Matheus Izvekov <mizvekov at gmail.com>
  Date:   2024-06-12 (Wed, 12 Jun 2024)

  Changed paths:
    M clang/include/clang/AST/ASTContext.h
    M clang/include/clang/AST/TemplateName.h
    M clang/include/clang/AST/Type.h
    M clang/lib/AST/ASTContext.cpp
    M clang/lib/AST/TemplateName.cpp
    M clang/unittests/AST/CMakeLists.txt
    A clang/unittests/AST/ProfilingTest.cpp

  Log Message:
  -----------
  [clang] fix broken canonicalization of DeducedTemplateSpecializationType

This reverts the functional elements of commit 3e78fa860235431323aaf08c8fa922d75a7cfffa
and redoes it, by fixing the true root cause of #61317.

A TemplateName can be non-canonical; profiling it based on the canonical
name would result in inconsistent preservation of as-written information
in the AST.

The true problem in #61317 is that we would not consider the methods
with requirements expression which contain DTSTs as the same
in relation to merging of declarations when importing modules.

The expressions would never match because they contained DTSTs pointing
to different redeclarations of the same class template, but since
canonicalization for them was broken, their canonical types would not
match either.

---

No changelog entry because #61317 was already claimed as fixed in
previous release.



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