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
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to