https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104952
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Note, I guess this is related to PR94366 and r12-438-g1580fc764423bf89e9b which was fixing it for non-SIMT and quite possibly left out the SIMT stuff out. Using the TRUTH_{AND,OR}_EXPR instead of TRUTH_{AND,OR}IF_EXPR ought to be fine, it is only merging the private vars into the original var, so neither has really side-effects, all we want is that we are actually merging orig = (orig != 0) & (private != 0) rather than orig & private etc.