<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110703>110703</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DirectX] Validate that our translation of a resource's undef global variable's type emits valid DXIL
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:DirectX
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bogner
</td>
</tr>
</table>
<pre>
In DXIL, the resource metadata includes a ["Pointer to a global constant symbol with the original shape of resource and element type."](https://github.com/microsoft/DirectXShaderCompiler/blob/main/docs/DXIL.rst#metadata-resource-records). In non-library shaders, this is an undef value of a type based on the resource's template parameter, like so:
```llvm
%"class.RWBuffer<float4>" = type { <4 x float> }
!... = !{i32 0, %"class.RWBuffer<float>"* undef, !"", i32 0, i32 0, i32 1, i32 10, i1 false, i1 false, i1 false, !7}
````
Currently in DXILResourceAnalysis, we simply emit an undef value of an opaque pointer type here. We need to make sure that when this is emitted to DXIL the type we emit for the pointer doesn't break consumers and the validator. The type does not necessarily need to be recovered correctly for this, and something like `i8*` might be fine since most consumers don't actually read this.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VMFu4zgM_Rr5QtSw6bhODz60yQQoMIfF7GKnV9qiY21lySvJ6frvF7KSdgoMChitIlCPj-R7JO_V2TC3on4S9TGjJYzWtZ09G3ZZZ-XaPhs4vjx_F3iAMDI49nZxPcPEgSQFAmV6vUj2QBBREP-wygR2ECwQnLXtSENvjQ9kAvh16qyGNxXGDc86dVaGNPiRZgY7fGQgI4E1T2wChHXmXCCK-ihwP4Ywe1E9CjwJPJ1VGJcu7-0k8DSp3llvhyDwdFSO-_Dy50iS3cFOs9LsBJ46bbsYSsoIPEnb-xj88vw9dz4IrG6l3d2o3DnurZNe4EMOzwaMNXdadY7cGnlLdj71R3lQHsjAYiQPcCG9bDXRVgB05FmCNZ86KbDxEHiaNQWGmRxNHCLPA2j1yuBtrLQ4iuL2975In9aX6XqFtUDsNXmf__j5tAwDO1EdBm0p7ET1TSCCqI6JhWieQFSHHfwHW4CovoFojjekMs_zLVhgKZonVSEUkcxXOVIKgY-p8BReblcYf7yDfDqU74d0VcJA2vNXZ4Fl88H11oj4_dKgw-Icm6BXUEm8P66tfjSkV6-2Yb0xeDXNegWeVPjdzAzYmf5dGOaboGP3Rnacw08GwyyjxieKQ1ocQxgpwNvI5l0JETqksMhjm_uG8sYp7WDddnlLIS17I7AJ0Dmm1803y8TOb26IkRfSSlKwLoe_bmjxFRgbwHDP3pNTen3n10Wp9fbCjiX01kVP6PWaOfUiYns7cRiVOSfViftC7QXGHsOkzmOIOIMysWsm2t_68As7aRNr6sNCWq_gmOSGn2eyreRD9UAZt2WDzb6oHpo6G1tuyqHb398X-92-wZ6qGmVT7IaHruPdbn-fqRYL3JVFUZZNhXWd99jgUFBf77HECguxK3gipfPohNy6c6a8X7gty6IpqkxTx9q3aSt11L-ykaJ6vK6FtE0y18bHd91y9mJXaOWD_4ALKuhtOd7e1Ef4Ow3gOm67OAiOjNcUlDXJ7J-snWR13YMXcoo6fTV9nF2UgU9T3TSSLU63Xyy4zfTp393s7D_cx1W31R3X2LX0S4v_BwAA__-ohOU2">