rjmccall added a comment.

In D96802#2569810 <https://reviews.llvm.org/D96802#2569810>, @varungandhi-apple 
wrote:

>> The TargetInfo classes are already target-architecture-specific, so it's 
>> somewhat strange for them all to funnel to a single function that then 
>> immediately switches on the target architecture.
>
> IMO ideally, the whole thing would be stored as a table of Target x 
> CallingConvention. Each entry of the table would have a 
> CallingConvCheckResult. That way, you can quickly figure out both:
>
> - which targets is a calling convention supported for
> - what calling conventions are supported for a particular target
>
> Certainly, that's not the state of the code right now. So I do agree with 
> your point that it looks a bit strange. However, given that things are 
> somewhat in flux for `CC_SwiftAsync`, I think it is valuable to centralize 
> the information for it in one place instead of spreading it out over multiple 
> files.

I don't see why.  I can't really imagine adding a second dimension to the 
decision here — there's no reason to ever make this OS-dependent, for example — 
and so the only likely evolution is adding support for a new architecture, 
which means adding another case to your centralized function instead of just 
changing how the CC is handled in the target-specific function.  And for this 
patch, just implementing the new case as `return CCCR_Error` seems much more 
obvious than calling a centralized function which just switches out again.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96802

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

Reply via email to