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