writer/hlsl: Initialize output local variable
Failing to initialize this can lead to uninitialized variable errors in the FXC compiler.
Change-Id: Ic4e7ee0aab889241923382f83058e3a9a567be5b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/46265
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index a2d7fe4..f969e5f 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -1891,8 +1891,8 @@
if (has_outdata) {
make_indent(out);
- out << outdata->second.struct_name << " " << outdata->second.var_name << ";"
- << std::endl;
+ out << outdata->second.struct_name << " " << outdata->second.var_name
+ << " = (" << outdata->second.struct_name << ")0;" << std::endl;
}
generating_entry_point_ = true;
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 0153af2..cc4da75 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -140,7 +140,7 @@
};
main_out main(tint_symbol_2 tint_symbol_3) {
- main_out tint_out;
+ main_out tint_out = (main_out)0;
const float foo = tint_symbol_3.foo;
tint_out.bar = foo;
return tint_out;
@@ -183,7 +183,7 @@
};
frag_main_out frag_main(tint_symbol_2 tint_symbol_3) {
- frag_main_out tint_out;
+ frag_main_out tint_out = (frag_main_out)0;
const float foo = tint_symbol_3.foo;
tint_out.bar = foo;
return tint_out;
@@ -228,7 +228,7 @@
};
frag_main_out frag_main(tint_symbol_2 tint_symbol_3) {
- frag_main_out tint_out;
+ frag_main_out tint_out = (frag_main_out)0;
const float4 coord = tint_symbol_3.coord;
tint_out.depth = coord.x;
return tint_out;
@@ -522,7 +522,7 @@
}
ep_1_out ep_1(tint_symbol_2 tint_symbol_3) {
- ep_1_out tint_out;
+ ep_1_out tint_out = (ep_1_out)0;
const float foo = tint_symbol_3.foo;
tint_out.bar = sub_func_ep_1(tint_out, 1.0f, foo);
return tint_out;
@@ -568,7 +568,7 @@
}
ep_1_out ep_1() {
- ep_1_out tint_out;
+ ep_1_out tint_out = (ep_1_out)0;
tint_out.depth = sub_func(1.0f);
return tint_out;
}
@@ -630,7 +630,7 @@
}
ep_1_out ep_1(tint_symbol_2 tint_symbol_3) {
- ep_1_out tint_out;
+ ep_1_out tint_out = (ep_1_out)0;
const float4 coord = tint_symbol_3.coord;
tint_out.depth = sub_func_ep_1(tint_out, 1.0f, coord);
return tint_out;
@@ -763,7 +763,7 @@
};
ep_1_out ep_1() {
- ep_1_out tint_out;
+ ep_1_out tint_out = (ep_1_out)0;
tint_out.bar = 1.0f;
if ((1 == 1)) {
return tint_out;