[hlsl][ir] Skip promoting lets to lets

In the `PromoteInitializers` transform, if a let is used as a value, we
may determine that the value needs to be hoisted to a new let. But, this
ends up just creating a let of a let. Skip creating the duplicate let in
this case.

Bug: 369450791
Change-Id: I45178ec0029b13019314ab189df8073781a9dd9b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/211817
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/test/tint/samples/cube.wgsl.expected.ir.dxc.hlsl b/test/tint/samples/cube.wgsl.expected.ir.dxc.hlsl
index 8a866c9..bd056e4 100644
--- a/test/tint/samples/cube.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/samples/cube.wgsl.expected.ir.dxc.hlsl
@@ -52,14 +52,12 @@
 vtx_main_outputs vtx_main(vtx_main_inputs inputs) {
   VertexInput v_5 = {inputs.VertexInput_cur_position, inputs.VertexInput_color};
   VertexOutput v_6 = vtx_main_inner(v_5);
-  VertexOutput v_7 = v_6;
-  VertexOutput v_8 = v_6;
-  vtx_main_outputs v_9 = {v_7.vtxFragColor, v_8.Position};
-  return v_9;
+  vtx_main_outputs v_7 = {v_6.vtxFragColor, v_6.Position};
+  return v_7;
 }
 
 frag_main_outputs frag_main(frag_main_inputs inputs) {
-  frag_main_outputs v_10 = {frag_main_inner(inputs.fragColor)};
-  return v_10;
+  frag_main_outputs v_8 = {frag_main_inner(inputs.fragColor)};
+  return v_8;
 }