Fix up return statements in unmasked regions

This commit is contained in:
Anton Mitrokhin
2015-12-21 20:13:47 +03:00
parent ac8fef0f22
commit d862672664

View File

@@ -2972,6 +2972,12 @@ UnmaskedStmt::EmitCode(FunctionEmitContext *ctx) const {
stmts->EmitCode(ctx);
// Do not restore old mask if our basic block is over. This happends if we emit code
// for something like 'unmasked{return;}', for example.
if (ctx->GetCurrentBasicBlock() == NULL)
return;
ctx->SetInternalMask(oldInternalMask);
ctx->SetFunctionMask(oldFunctionMask);
}