[libcxx-commits] [PATCH] D111283: [clang] template / auto deduction deduces common sugar

Alexander Kornienko via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Sep 13 01:05:35 PDT 2022


alexfh added a comment.

In D111283#3785259 <https://reviews.llvm.org/D111283#3785259>, @alexfh wrote:

> In D111283#3785240 <https://reviews.llvm.org/D111283#3785240>, @alexfh wrote:
>
>> In D111283#3783627 <https://reviews.llvm.org/D111283#3783627>, @alexfh wrote:
>>
>>> Hi Matheus, an early heads up: this commit is causing clang crashes on some of our code. I'll post more details a bit later.
>>
>> The stack trace of the failure looks like this:
>
> And the assertions-enabled build of clang prints this:
>
>   Unexpected sugar-free: TemplateTypeParm
>   UNREACHABLE executed at llvm-project/clang/lib/AST/ASTContext.cpp:12383!

Reduced test case:

  $ cat q.cc
  struct a {
    int b;
  };
  template <typename c, typename d> using e = c d::*;
  struct f {
    long b() const;
    template <typename c> c g(e<c, a>) const;
    a h;
  };
  template <typename c, typename d, typename... i>
  void j(e<c, d>, const d *, i...);
  template <typename c, typename d> c j(e<c, d>, const d *);
  template <typename c> c f::g(e<c, a> k) const { return j(k, &h); }
  long f::b() const { return g(&a::b); }



  $ ./clang-after q.cc
  ...
  1.      <eof> parser at end of file
  2.      q.cc:13:28: instantiating function definition 'f::g<int>'
  ...
  clang-after: error: unable to execute command: Trace/breakpoint trap
  clang-after: error: clang frontend command failed due to signal (use -v to see invocation)

Please fix or revert soon.

Thanks!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111283/new/

https://reviews.llvm.org/D111283



More information about the libcxx-commits mailing list