HLSL: workaround FXC sometimes failing with 'not all control paths return a result' in functions with discard

To fix this, we trick the compiler by wrapping the function body with an
if (true) { <function body> } followed by returning an unused value of
the return type.

Bug: tint:1081
Change-Id: I763bf768f40d07a1045f0a70017bb40d488c8428
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/68822
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
Antonio Maiorano
2021-11-10 14:38:34 +00:00
committed by Tint LUCI CQ
parent bb1a9930c1
commit 8bc1a3045d
12 changed files with 320 additions and 6 deletions

View File

@@ -2166,6 +2166,7 @@ bool Resolver::Statement(const ast::Statement* stmt) {
}
return false;
}
current_function_->SetHasDiscard();
return true;
}
if (stmt->Is<ast::FallthroughStatement>()) {