erichkeane planned changes to this revision.
erichkeane added a comment.

In D126818#3551504 <https://reviews.llvm.org/D126818#3551504>, @erichkeane 
wrote:

> Note this was mentioned as a 'must also do' in my discussion on deferred 
> constraints with @rsmith, however as this already fails, I don't see this as 
> a prerequisite.  However, I think this is easy enough to just do.
>
> THAT SAID: The proposal on the itanium-abi github wasn't particularly clear 
> as to which of the following three options were the 'right' answer.  I'm 
> hoping @rjmccall can decide whether this is acceptable:
>
> Option 1: Change the mangling of ALL friend functions.  I determined this is 
> likely an ABI break on otherwise 'settled' code, and figured we wouldn't want 
> to do this.
>
> Option 2: Change the mangling for ALL constrained friend functions.  This 
> seemed easy enough to do, AND changes the mangling for things only covered by 
> 'experimental' concepts support.  So I think changing the ABI for current 
> things is OK here.
>
> Option 3: Change the mangling for constrained friend functions that fall 
> under temp.friend p9.  The only difference between this and Option2 is that 
> this would need to check the 'template friend function depends on containing 
> scope'.  I don't believe this is necessary so long as we are consistent with 
> it.  Presumably this could end up with multiple symbols for functions that 
> are the 'same declaration' by rule in separate translation units, such as:
>
>   struct Base{};
>   template<int N>
>   struct S {
>     template<typename U>
>     friend void func(Base&) requires(U::value) {}
>   };
>   void uses() {
>     S<1> s;
>     S<2> s2; // This is an error during Sema, since 'func' is a duplicate 
> here.
>     func(s); // all S<N>s SHOULD end up with the same declaration, but in 
> different TUs they might end up with different copies here?
>   }
>
> In typing this comment up, I believe I got the 'option' wrong here.  Should I 
> have gone with #3 above?   I'm going to think about it overnight (and hope 
> you reviewer folks can chime in!) and get to it in the morning.

After thinking about it, I'm about 99% sure I made the wrong choice here.  I 
should have gone with #3.  That likely requires the infrastructure from the 
deferred concepts patch, so I'll get that ready, then rebase this to be ready.


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

https://reviews.llvm.org/D126818

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to