https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127018
--- Comment #2 from Sam James <sjames at gcc dot gnu.org> ---
Smaller:
```
int decode_endpoint_y0, decode_endpoint_cem_index;
enum { CEM_HDR_LUM_LARGE_RANGE, CEM_LDR_LUM_ALPHA_DIRECT };
char decode_endpoint_pE_3, decode_endpoint_pE_1, decode_endpoint_pE_0;
void decode_endpoint(int (*pEndpoints)[2]) {
int v0 = decode_endpoint_pE_0, v1 = decode_endpoint_pE_1;
int &e0_r = pEndpoints[0][0], &e0_b = pEndpoints[2][0],
&e0_a = pEndpoints[3][0];
int &e1_r = pEndpoints[0][1], &e1_b = pEndpoints[2][1],
&e1_a = pEndpoints[3][1];
switch (decode_endpoint_cem_index) {
case CEM_LDR_LUM_ALPHA_DIRECT:
e0_b = v0;
e1_b = v1;
e0_a = e1_a = decode_endpoint_pE_3;
for (;;)
;
case CEM_HDR_LUM_LARGE_RANGE:
int y1;
if (v0) {
decode_endpoint_y0 = v0 << 4;
y1 = v1 << 4;
}
e0_r = decode_endpoint_y0;
e1_r = y1;
e0_b = decode_endpoint_y0;
e1_b = y1;
}
}
```