[PATCH] D124158: [Clang][Attr] Skip adding noundef attribute to arguments when function has convergent attribute

Johannes Doerfert via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 27 14:50:46 PDT 2022

jdoerfert added a comment.

In D124158#3477649 <https://reviews.llvm.org/D124158#3477649>, @efriedma wrote:

> The issue you're describing sounds like it's specific to @__shfl_sync.  In general, in C++, you aren't allowed to read from an uninitialized variable; see [basic.indet] in the standard.  But if your testcase doesn't have undefined behavior, CUDA language rules must somehow allow this particular builtin function to take undef variables as input.  (Is this documented somewhere?)
> That isn't related to the "convergent" attribute; the transform you're describing doesn't break convergence rules.

I concur, especially on the last part. So far I have not seen why this is tied in any way to convergent. It might be a shfl oddity in which case the proper solution is to `freeze` all shuffle arguments in clang.

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list