[PATCH] D125349: [Sema] Fix crash for C11 atomic in gnu++ mode

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 8 10:35:57 PDT 2022


rjmccall added a comment.

This seems like the right idea to me, yeah.  It doesn't look like the patch handles `volatile _Atomic` correctly, though.

I know we do a lot of candidate prefiltering, and that that can be difficult because of uesr-defined conversions.  How do those things interact with qualifiers?  Like, I notice the existing code is adding both `(T &, T)` and `(volatile T &, T)` when the LHS is `volatile`; is there a reason that's necessary?  Because we can't actually convert the LHS to remove those qualifiers, and adding combinatoric candidates could get very expensive if we start doing it for arbitrary extended qualifiers, which it feels like we ought to.  (You could certainly have e.g. a `volatile _Atomic __myaddrspace` l-value.)  If this is only necessary when the LHS has a user-defined conversion, then maybe we could at least not do it in the normal case just because the RHS is an overloaded type.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D125349



More information about the cfe-commits mailing list