ABataev added a comment.

In D71179#1776034 <https://reviews.llvm.org/D71179#1776034>, @jdoerfert wrote:

> > Not always. If we see that the context selector does not match, we can skip 
> > everything between begin/end. It means exactly what I said - 
> > multiversioning is needed only for `construct` because all other traits can 
> > be easily resolved at the compile time. Generally speaking, there are 2 
> > kinds of traits - global traits (like `vendor`, `kind`, `isa`, etc.), which 
> > can be resolved completely statically and do not need multiversioning, and 
> > local traits, like `construct`, which depend on the OpenMP directives and 
> > require something similar to the multiversioning.
>
> The case where the code is skipped is easy, sure. However, if we "could 
> easily resolve" the other case, we could have implemented an #ifdef solution 
> for `math.h/cmath`. This was not the case and still is not. We basically 
> populate the namespace with multiple versions of the same function (with the 
> same name) and then select the appropriate one for each call site.
>
> Instead of trying to argue why this is not needed for some cases, could you 
> argue why we should have multiple schemes to resolve all types of variants? 
> It seems you inherently assume the codegen patching scheme implemented right 
> now is useful even if we need something else to complement it. I don't think 
> so, thus there is little reason for me to distinguish between the types of 
> variants that need multi-version support ant the types that can be 
> implemented with multi-versions but don't need it.


Because each particular problem requires its own solution and it is always a 
bad idea to use the microscope to hammer the nails.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D71179



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

Reply via email to