[PATCH] D83025: [clang] Include type specifiers in typo correction when checking isCXXDeclarationSpecifiers.

Alexandre Ganea via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 11 13:40:25 PST 2020


aganea added a comment.

In D83025#2389486 <https://reviews.llvm.org/D83025#2389486>, @hokein wrote:

> In D83025#2389140 <https://reviews.llvm.org/D83025#2389140>, @aganea wrote:
>
>> We're seeing the same issue mentionned in PR45498 <https://bugs.llvm.org/show_bug.cgi?id=45498>, but with the repro below. `git bisect` points to this patch. Could anyone please possibly confirm? Simply build clang with `-DLLVM_ENABLE_ASSERTIONS=ON`.
>>
>>   // compile with: clang-cl /c a.cpp
>>   template < a > struct b;
>>   template < bool a, class > using c = b< a >;
>>   template < class > using d = void ;
>>   template < class, class, class = void >
>>   bool e template < class f, class g >
>>   bool e< f, g, d< decltype(h(g())) > > template < class f, class g >
>>   void i(f, g ) {
>>     e< f, g >
>>   }
>>   template < class _BidIt2, c< e< _BidIt, _BidIt2 >, int > = 0 >
>>   void h(_BidIt2) short do_tolower__Last {
>>     i(do_tolower__First, do_tolower__Last)
>>   }
>
> thanks for the testcase. I'm not sure the patch is the root cause -- from the Bugzilla thread, the issue was reported in April which is prior to this patch.
>
> btw, the issue seems to be gone on the trunk, I don't reproduce them with clang building from the trunk, I guess it might be fixed by some patches after llvm-11.

Thanks for getting back! Just for the record, bisecting between the `llvmorg-12-init` git tag and rG637f19c36b3 <https://reviews.llvm.org/rG637f19c36b323cc3ab597f6ef138db53be395949> leads to this fix: D87853 <https://reviews.llvm.org/D87853>.

  commit cffb0dd54d41d8e249d2009467c4beb5b681ba26
  Author: Bruno Cardoso Lopes <bruno.cardoso at gmail.com>
  Date:   Mon Oct 12 15:58:52 2020 -0700
  
      [SemaTemplate] Stop passing insertion position around during VarTemplate instantiation
  
      They can get stale at use time because of updates from other recursive
      specializations. Instead, rely on the existence of previous declarations to add
      the specialization.
  
      Differential Revision: https://reviews.llvm.org/D87853

I was able to cherry-pick it cleanly on release/11.x and that solves our issue.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D83025



More information about the cfe-commits mailing list