<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/66982>66982</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            miss optimization for bit field
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            missed-optimization
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          HerrCai0907
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/9fnTY53qY

```c++
struct A {
    unsigned a : 8;
    unsigned b : 8;
    unsigned c : 8;
 unsigned d : 8;
};
void foo(void)
{
    (*((struct A *)100)).c = 0x4;
}
```

in x86 clang -03
```
        push    rbp
 mov     rbp, rsp
        mov     eax, 100
        mov     ecx, dword ptr [rax]
        and     ecx, -16711681
        or      ecx, 262144
        mov     eax, 100
        mov     dword ptr [rax], ecx
        pop     rbp
        ret
```

in x86 gcc -03
```
        push    rbp
        mov     rbp, rsp
        mov eax, 100
        mov     BYTE PTR [rax+2], 4
        nop
 pop     rbp
        ret
```



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVE1v6zgM_DX0hUgg098HH5JmjT0uFr30KFlyooVjeSW5L6-__kGu08ZB0AI1BEngDKnhGCB3Th8HpWrI9pAdIj75k7H138raJ65ZxYpIGPm7Pnk_Okh2QA1QczRSmN5vjT0CNW9ATdUNzy9Z8v8LsAOw3bLn7H21QPuw5qjzdmo97hCKJYKIOA2zEIkcIdlhCckjUHwFtvfgByLvECgOH_dXoyV2xgCV4QpUXTk3bwCVQLt5Lz_1h0gVMxZyqNqG9w_ILunqnbUTt_boAS9ljm3PhyNuWPKQiss3Tu4UTivGBTibV7xG6AmtG9cZV1zxS8CDzsd4O-Pyl7ESR28Rsr3lF8gOaz4f5C1_E-dFHOdlvGYZi7csyilO058Je6SInubKa2vMiGtrls8q_739x7b9gfl3Ur_6B9-1uX95_gv_ef732iXtaen0zrfBXKv_sOP3PZJ1Iquk4pGq47zKqCjiMotOdaViJhJBFYmkFHGnlOBUEKk876hjbaRrYpSwimKWx1WabVOScZnmUomSKSpSSJk6c91v-_71HKZDpJ2bVJ3nVUlRz4Xq3TxpiM7aOSU3ZvT6rN-412YACo1Htg7ZGzEdHaSs1867z3pe-17VIRlvU7EzFoX22GnVy2iy_f3E0v40iW1rzkBNqLYcm9Ga_1TrgZpZqgNqZrV_AgAA__-1fFVb">