jhuber6 wrote:

> sincos() is just one example. There are several other cases that can trigger 
> this issue. fold_rootn() generates new function calls for square and cubic 
> roots, fold_pow() does a similar thing for specific powers (ex 2), etc.
> 
> We did try disabling -amdgpu-prelink, and it did lead to a significant 
> performance difference for a couple of key applications
> 
> With this approach we're also hoping to cover future optimizations added that 
> may fall under this category

This approach assumes that whatever the function call was transformed into also 
exists in the same library, which isn't necessarily true. This is related to a 
whole host of problems with handling known runtime library calls inside of 
bitcode. It's possible that we could use some module metadata to indicate when 
these sorts of transformations are legal within LLVM-IR. I've had similar 
issues with LTO, where a `sin` call gets turned into `llvm.sin.f64` which then 
no longer links with the `sin` function implemented in an LTO library. Then 
when the backend runs it will turn back into `sin` but will not be resolved.

https://github.com/llvm/llvm-project/pull/69371
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to