<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">