george.burgess.iv added a comment.

> I'd like to understand this use case a little bit better. If you don't 
> perform the mangling, then choosing which overload gets called is already 
> based on the source order, isn't it? See https://godbolt.org/g/8b10Ns

I think I might have miscommunicated: `transparently_overloadable` only 
enforces no mangling on one function out of the set of functions with the same 
name. So,

  void foo(int) __attribute__((transparently_overloadable));
  void foo(float) __attribute__((overloadable));
  
  void bar() {
    foo(1); // calls @foo
    foo(1f); // calls @_Z3foof
  }



> The logic as to why overloadable is required on every redeclaration makes 
> sense, but also flies in the face of your rational for why you want a new 
> spelling of the same attribute that doesn't need to be on every 
> redeclaration. I worry about this difference being mildly confusing to user.

Yeah, good point. The more I think about that, the more I don't like the 
inconsistency; I'll drop that change.


https://reviews.llvm.org/D32332



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

Reply via email to