[clang] [llvm] [IR] Mark convergence intrins as has-side-effect (PR #134844)
Sameer Sahasrabuddhe via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 9 03:31:33 PDT 2025
ssahasra wrote:
> When a callee is marked as convergent, some targets like HLSL/SPIR-V add a convergent token to the call.
This is valid if both functions are marked as convergent.
I didn't understand the validity part. Why is the caller required to be convergent in order to add a token to a callsite?
> ADCE/BDCE and other DCE passes were allowed to remove convergence intrinsics when their token were unused. This meant a leaf function could lose all its convergence intrinsics. This would allow further optimization to remove the convergent attribute from the callee.
Seems right to me.
> Issue was the caller was not updated, and we now had a convergence token attached to a call function calling a non-convergent function.
Seems correct again.
> Would you be OK with me patching the several DCE functions to not drop convergence intrinsics instead?
Why is DCE dropping convergence intrinsics? Is it because it cannot see the operand bundles as legit uses?
https://github.com/llvm/llvm-project/pull/134844
More information about the llvm-commits
mailing list