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;