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