All of these pass the current mask to FunctionEmitContext::SetBlockEntryMask() so that when a break/continue/return is encountered, it can test to see if all lanes have followed that path and then return; this in turn ensures that we never run statements with an all-off execution mask. These functions were passing the function internal mask, not the full mask, and thus could end up executing code with the mask all off if some lanes were disabled by an outer function. (The new tests test this case.)
610 B
610 B