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;
  }
}
```

Reply via email to