<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/104257>104257</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Use unmangled name in `dx.resources` metadata to match DXC
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hekota
</td>
</tr>
</table>
<pre>
For [sample shader](https://godbolt.org/z/eK4K71r1s)
```
RWBuffer<int> In : register(u0);
RWBuffer<int> Out : register(u1);
[numthreads(8,1,1)]
void main(uint GI : SV_GroupIndex) {
Out[GI] = In[GI] * In[GI];
}
```
DXC writes the resource type name in metadata unmangled and the resource variable name is stored in the following node:
```
!dx.resources = !{!25}
...
!25 = !{null, !26, null, null}
!26 = !{!27, !29}
!27 = !{i32 0, %"class.RWBuffer<int>"* undef, !"In", i32 0, i32 0, i32 1, i32 10, i1 false, i1 false, i1 false, !28}
!28 = !{i32 0, i32 4}
!29 = !{i32 1, %"class.RWBuffer<int>"* undef, !"Out", i32 0, i32 1, i32 1, i32 10, i1 false, i1 false, i1 false, !28}
```
Clang writes mangled name that contains both the type and variable name:
```
!dx.resources = !{!35}
...
!36 = !{!37, !39}
!37 = !{i32 0, ptr @"?In@@3V?$RWBuffer@H@hlsl@@A", !"", i32 0, i32 0, i32 1, i32 10, i1 false, i1 false, i1 false, !38}
!38 = !{i32 0, i32 4}
!39 = !{i32 1, ptr @"?Out@@3V?$RWBuffer@H@hlsl@@A", !"", i32 0, i32 1, i32 1, i32 10, i1 false, i1 false, i1 false, !38}
```
Should Clang match DXC?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0ld2uozYQx59muLE2sscQ4IKLfJSz0a5UqUfd7l1lghPcGjuyzTm7ffrK5JNstqq6p1ICYzP_YWb8EyO8V3sjZQXZErJ1IobQWVd18k8bRNLY9mtVW0cgW3rRH7QkvhOtdJCtAYsuhIMHvgCsAeu9bRurw8y6PWD9F2AtP6QfcuaYByyBroEuYE5Pv3H5y2_LYbeTDvhKmQD8J7IxBPiCOLlXPkgHWAw0qvnye4qfh_CNhN1KTtdsaYY-dE6K1gMWBeCKHf9lrGZ0erGqJb1QJgZRJpCnzRj7-dPvT84Oh41p5RfAkkB-Ck7i-yFbPm0gWxPga7Ix1yUubpbXhPL1w24cr-vPK_LqVJCehE4SJ70d3FaS8PUgiRG9JMqQXgbRiiDIYHph9lq2RJh2KngRTolGn0We-GCdbKM8-u2s1vZVmT0xtpXxFG-7dZcZsvbL7BzZj3UCstgFZJhdCprNZhcBZjduZtAacBVXOI_GeWO8X_oRn94Fz8-ycuKW37gpjoQe3TJA3Grh_ewbUAAxnsdgWrk7xQTEjRn3V-QSZGKwi3HcYmQntJf_ZMfsikmuxaNco5FO3Mo7N_YfS4pAPqiJvV1Nj7BdaWH2Z3DPTI7khU4EsrUmCGU8aWzoRv5GniO0E05_gEP-mEN-RxQ_E8UnRPGHRB2CI5DS2E9eb0w0U8o_Aa8B08t5pPQ9pLTTXh8dFqf-H8_jfwCMTwDj_w4w_hCwSYURnbcq8Qd549_l7bmzg27JEbhehG1H1p9XwOukrXhb8lIksmI58nnO0nmRdFUjxU6Wc56XyHLJaZMzRpnI6W7XpIxliaqQYkoLlkYQ0mJWNiUrd2JbYkHzbSYgpbIXSs-0funjhEuU94OsGE0xyxMtGqn9OEMRjXwl49PYlWyduCqK3jXD3kNKtfLBX8MEFfQ4fN9_fP4YZ8avXt581M_fe5jTW_BhTq8jINhrF5LB6epuLKvQDc1sa3vAOr73dHt3cPYPuQ2A9ZitB6xP5bxU-HcAAAD__1ihKPI">