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

    <tr>
        <th>Summary</th>
        <td>
            wrong code at -Os and above on x86_64-linux-gnu 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    It appears to be a regression from 12.*, and affect the trunk and 13.*.

```
[509] % clangtk -v
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 53602e4c704f7461426d3981dcdca92e892eca99)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
[510] % 
[510] % clangtk -O1 -w small.c; ./a.out
[511] % 
[511] % clangtk -Os -w small.c
[512] % ./a.out
Floating point exception
[513] % 
[513] % cat small.c
int printf (const char *, ...);
volatile int e;
int a, b, c, d, f, g, h, i, j, k, l, m, n, o, *p;
int main() {
  int r = 1;
  short s = 1;
  o = 1;
  if (o) {
    while (b && r) {
      printf("%d\n", l);
      if (h)
        continue;
      while (c++)
        ;
      for (a = 0; a < 6;)
        for (r = 0; r < 9; r++)
          for (; a; a++)
            ;
      s = 2;
    }
    for (j++; j < 1;) {
      r || e;
      d = r;
      if (r < m) {
        k = i = r;
        break;
      }
      if (r)
        r;
    L:;
      short u = r;
      int v = 9 ^ r;
      if (v)
        g = f = r;
      if (r && r <= u)
        printf("%d", 9);
    }
  } else {
    int *w = &r;
    p = w;
  }
  n = e / (s ^ b);
  if (b)
    goto L;
  return 0;
}
```

Compiler Explorer: https://godbolt.org/z/f5E4q1KaM
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1VsuSqzYQ_Rq86TLF27Bgcccep27lprJI9ikB4jEGRISwnfn6dAuMbeyZqlTu2HJbSEenH5KaTkT2T_xdAes6zmQPSkDCgYHkheR9X4kWcikasB3TcL4ZzhZYmwHLc54qUCUHJYf2oAdtlyCmYe0M69skA2tq46P_4luR4e_AcHxIa9YW6gDr4zirn-HIpdZq-6ZlWggMS6W63nBR-R5bUalySMxUNPhQ18fL37qT4g2NMhEAvhtYDvfSjeXlGy-wPSfI3Ci0szRLWeTwEH_YiQwnGnX_yWTBFSqBcxj8FXhrdKoVp3ZdV-1wXhftMOFKyVkGjch4TehO9NV5nPre9orVNc92laQpskukrMb_fnhfX_qiy4f3d-wkVTsu3IsBo5diCKuMKQ6_bLdQjWRMYSgmsqGXRFklFIQ0RVkFYXBjoLMP_yfh5PstZfAFlCZu7c-n3XwB5ddYOm3TH7zG88qzn2XidjauGWpV0UIkMg33xfCsJvA-Q7nOBMPOJ7DzjDtfgLMXnymli29bl4v_bGxOBr_bsD5B32AwzBRpkMvZM1MM6maZ_YTKfqTqb6muSOeCXFDjfcX4Yw7qRNUq4OeUd3o_rkvdJ4rnsZSpe23E0kmUOeWxVOAeQ1oyCVMqNU2TMhDGSsOPgva_5qC1z8P0xAiekEhJZCRyEgWJkkRF4o3EgURNoiHRkhAkUG13R9swTEJOiEaAsZnGQatHG90d2DMaoC-FRP8exsXDSKXdFQtWgFNJzuFUgiLABvIBA1PAtFUORjUz_G2ru9qn6EYPfUZd5ZzIYfpgsHErB76AzyZgGF90W6xb4HNBmxUy7aNFx5G6WwgIt1w7geUVLDU40t0PFM7LNPkoPkI-mDfuhnM3amx214eJ-22iRPY3bZI92r-MPYI3W2ywjFumFcmnwR-dbJ7QARz0uurpaoAEX6aHxeid-bOKh2Dck_2g8mARGn1ch-d24wE_6hk02X_9wK_jg9JCr8k_j8V0sikohBseWB4O-Hi4o-XhvokEdoHXPb8PMLmBV_qk7UGl9yZ1evh0M3ZD2OpJugl7MrvXYUjuLRg9Su7sLwQWiD9uQJKrQbb6tE8p8aJkWfuNrxXRdHgDJbyeu1pIriulRYEnskTUyhQSc9ueKqXcf_X-tn9lv62y2M0iN2IrVamaxycpMFunWIwBpl7K97o4TcSRA5aQy9clrAZZx_-tnKQyq-8H3mPH92zbWZWxl1t5FCW2xTkPeMpD_HKXJVhy-pvE56uaJbhbMb4dcG9bfgJNQfvs71ZV7FgOtdB2Ldu1TS9Jee4lgb1xvY2X2vji5JiYa5PsoDCsZKxNSoaix8m66lV_nWRYpRct51od8rNB4dGP30veZhieflhp7bG2_l_WhTnI">