writer/hlsl: Simplify emission logic, clean up output

And fix issues where global variables would not be emitted unless they were transitively referenced by an entry point.

This change requires crbug.com/tint/697 to be fixed before landing.

Change-Id: I712bd9d369e08c9a3cdfb0f114c3609584f91f28
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/54241
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.hlsl b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.hlsl
index 310f67b..eb90843 100644
--- a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.hlsl
@@ -1,13 +1,13 @@
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9e3ec5() {
   arg_0[int2(0, 0)] = int4(0, 0, 0, 0);
 }
 
+struct tint_symbol {
+  float4 value : SV_Position;
+};
+
 tint_symbol vertex_main() {
   textureStore_9e3ec5();
   const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
@@ -24,4 +24,3 @@
   textureStore_9e3ec5();
   return;
 }
-