<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/129106>129106</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Report error when only some elements in `cbuffer` have `packoffset` annotation
</td>
</tr>
<tr>
<th>Labels</th>
<td>
HLSL
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hekota
</td>
</tr>
</table>
<pre>
DXC has been reporting a warning on the code below for a while. The layout it produces is inconsistent between DXIL and SPIRV. We should make this an error in Clang.
```
cbuffer CB {
float f;
float g : packoffset(c0.z);
}
```
`warning: cannot mix packoffset elements with nonpackoffset elements in a cbuffer`
DXC places the elements without `packoffset` after the elements with explicit layout:
```
; struct CB
; {
;
; float f; ; Offset: 12
; float g; ; Offset: 8
;
; } CB; ; Offset: 0 Size: 16
```
SPIR-V does it differently - the offset of the first element is 0:
```
OpMemberDecorate %type_CB 0 Offset 0
OpMemberDecorate %type_CB 1 Offset 8
```
https://godbolt.org/z/Wq7EhKxEE
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVE1v4zYQ_TXUZWCDomx9HHTwR4wummKLTbG7t4KSRhIbilTJURzn1xdUlCbrTdHFCgJsio9v3rzhjPRedQaxZNs92x4jOVFvXdnjvSUZVba5lMevB-ilhwrRgMPROlKmAwln6Uz4Zw1Qj1DbBqFCbc_QWhf2e6VxDX_0CFpe7ESgCEZnm6lGD8qDMrU1XnlCQ1AhnUOE49cPtyBNA3e_f_j0eQ1fEHxvJ93AIO8RqFcepAF0zjpQBg5amm7N-C68KV9evqurqW3RwWEPLNszvgNotZUELUveLjtgyQ5GWd_btvVITOQ1Xz8xUTzjWHa8YmYpX1IPJ2tpjCUY1OMbEkCNAxrycFbUg7HmvT1lQMKic6Hmu2D3qGWwKLj6DVHwkKX8jdiUg2wJ3fdYwMdRq1rRYj5Lrh1iyR4APLmpJjjsly_PZi25z4jwvFoHP_QE4MdnickOYvEOWfeTZACQv2h9YWXZMWTwo4T_xcvhTj3hrDi9NovvwoVcfYbGhttL0KhQNzSkL7Ca_V_qa9t51Srn_y12uO78-xIAfBx_w6FCd8TaOkkITGzpMuKfhz3wRR38PzR-geZXEXqi0YfA4sTEqbNNZTWtreuYOD0xcfryd3bT__p4cxM1ZdIUSSEjLONsw9N8k6Yi6ssE2zjLZbqthBQbnskii7MCkyLJCl7kVaRKwcWWC5HFRRLzeM2bjOdtlhVJ3myKNGEbjoNUeq31wxBiR8r7CctYFDFPIy0r1H6eQEL8cnt3y4QIs8iVAb-qps6zDdfKk39lIEV6nlrzge0RPs2TaZkL5x4NWKMv4O2A33QcS_lry0EvH_CdlgotLUlZE01Ol1ceKuqnal3bgYlT0LP8rEZn_8KamDjN6XkmTkuGD6X4JwAA__9a2pmw">