<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJztWltv2zYU_jXyC2GBou4PfsilKQYM67ZuzwZvktnKkiJSbtJfv0NKtuU4CZw2a1rAgWCK5LnrnO-IQlgj7hdegjk1iFMtfQ4TD197-GL8ham7-DDXhhrFkaoNoh65QsILL492PHLB7CaMEnnhNdwkTxHCxbc0bEezaZRARdN4JLO3HsmfYC-AYrwtgQp56UiG9trxjhchVcB65pFgZNiuo1HbVBNCx_ydNH1Xo72lXno93Fgr1lTVg5CpIaN9q62bdIyNGsdP-41wav2wHkytf4JyiKCaLNq4rKbO7OzcPdHdlFe0LueZYDQSESliLCkuYikpSSXP0zjNaB4HES9IGmexjZ_p-vqz9XL-4SsIgNSpUd0YJCu1VjU1ELcE24DCHusN2impqs266cp5QHzsBxN2_0HSfZ9NaP4RzRtYvRFyA7_aiKY_zvDwSkhDVaUhfO9gpvv1mnb3MPnQm7Y3sGSZd6swb-3wWH1Qvd6u576Rd2Y_K1QlYfQIGQ0gZL9ZVg2r4MamDnrmzyMhms_RpSyBruhrblRTDwm3V3vfylEUpJYX4S3dQOLWw4vntEyUAfuhdF6oJRRfZ9quGdHA0ZGYMR9q5GJH2vZ6des8jjt6dyhByGLJC7psikJLg4Jkt71uNswxRYEtDOoKKe5UuyvTgchKlgebrowOVNFaVIMsPOxmI8FEFF-3bELzuL5PtY2o__vlJV6Sh04HU6c5rSprmk17t7ZlmtCAWbcTlfJRlXdNN9geS2uw801OfGubdhtc_nxws90uwNbt1iqbFEtZi4NH5mv1dZI7aEI2P04DWN4nwQn5NM3gd7VAh3k5SV065G3DPklunk9OumeuGgi-495b2azXozybTdGRJnm6JrlnFtRMlLSEVqoEL_JwWJQHIb3tqYBRHAXZ6t4_nAeGidMNE8chEEchEM79gxAoIWszIpLFWbSRnbZwEkQAy9iWy8qYVltvyA1cpTKrnlmJMLEYPg5zyAJrpg8E6FSwdhU7QUAtx1ywyz60Eem__-PfOUAN_2wJIRz2lwxxAY0lU0bv-akQYH15tLDU92u0jceDpueAvR0g3XUJ1waOsf2prnVuMG_aYH50q3gV3D5j8BmDT8HgAWS-DYMLKaIgjAjNAIZpSHOCgyzIYcqKlEZZGISS5HDQ-mUw-DUOBJv_B5GH6Rt1UKf7H9qV0ljIvcuSZRLNweO6-VLPK1X3d_Oy7ke6VSepQOtGyMpSt41WIzD9VsNDrioprlVnt8Cur67CyA0Y20Jn6Zac8pW0Cy96BsDAtqB10_QAOXDOE0rY4-H7qys4FjvN1CXeoLnXnY2LYjZiHPrYzehXyycukZsg8AMff5voJHqB8I-ygocjxetKvdoZu-4ro6y_IM63Z3XoiUn0HFVIRrKQPDDxOVmv-_7zI-vpR6Hh29VTkUeECyZiXMALVYLjhLK0wDTCQR7GRRyGcSKKPD3X069eTyQcLnSpdg3XqbQvvaDxCyQ1SpJcCBHInAWEJFFIGMahYIzimOV5kck8JySL2YMaPZXtfHp589PL-fPY9fnz2FMZfD6a_cRHs_A7Xu5PxvWf_2j2Zyc3quk1sjFU7n2JBTFnFN6ywCfMQiIYDwkP0zRJJNzwAsaEZ-mj75enMp9715v3rvOXtzO8n-H9EXg_GQB_ZnifiUUo8jCnM9qbVdMt_upp17NZ31WLl8UEpkrrXmq4ieGcHcxWC8ZlHBU44AWkJskSQSn0Q4FxgFkKR_RZRZms9MKLL8HhWn5BToR1Pr6efb8FakEwITiAvyiIceqnQZGHLIsyTCJOM2yzHcq98q0cv-nKWbdwIllfatislDZ6v0k1xLmW0hkMFhplKrm4tl8Grhoh0bvxvyFsbv0ty05ql2bUuD62_UKJNtofP3NAbsyczQtn8H9ar4j1>53131</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Dead Code Elimination Regression at -Oz (trunk vs. 12.0.1)
        </td>
    </tr>

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

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

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

<pre>
    `cat case.c`

```c
static int a, d;
static int *b, *e = &d;
static int **c = &b;
void foo(void);
static int *f(int *g) {
  *e = 0;
  if (!*g)
    foo();
  e = 0;
  return b;
}
int main() {
  int *h = &a, *i, *j = &a;
  *j = 1;
  i = &a;
  *c = i;
  f(h);
}
```
`clang-8dba4d42f50ea0f5eea27ec97578a9514cf27585 (trunk) -Oz` can not eliminate `foo` but `clang-llvmorg-12.0.1 -Oz` can.

`clang-8dba4d42f50ea0f5eea27ec97578a9514cf27585 (trunk) -Oz -S -o /dev/stdout case.c`
<details ><summary>Output</summary><p>

```asm
        .text
        .file   "case.c"
        .globl  main                            # -- Begin function main
        .type   main,@function
main:                                   # @main
        .cfi_startproc
# %bb.0:
        pushq   %rax
        .cfi_def_cfa_offset 16
        movb    $1, a(%rip)
        movq    e(%rip), %rax
        andl    $0, (%rax)
        cmpb    $0, a(%rip)
        jne     .LBB0_2
# %bb.1:
        callq   foo
.LBB0_2:
        andq    $0, e(%rip)
        xorl    %eax, %eax
        popq    %rcx
        .cfi_def_cfa_offset 8
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .type   a,@object                       # @a
        .local  a
        .comm   a,1,4
        .type   e,@object                       # @e
        .data
        .p2align        3
e:
        .quad   d
        .size   e, 8

        .type   d,@object                       # @d
        .local  d
        .comm   d,4,4
        .ident  "clang version 14.0.0 (https://github.com/llvm/llvm-project.git 8dba4d42f50ea0f5eea27ec97578a9514cf27585)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
        .addrsig_sym d
```
</p></details>

`clang-llvmorg-12.0.1 -Oz -S -o /dev/stdout case.c`
<details ><summary>Output</summary><p>

```asm
        .text
        .file   "case.c"
        .globl  main                            # -- Begin function main
        .type   main,@function
main:                                   # @main
        .cfi_startproc
# %bb.0:
        movb    $1, a(%rip)
        movq    e(%rip), %rax
        andl    $0, (%rax)
        andq    $0, e(%rip)
        xorl    %eax, %eax
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .type   a,@object                       # @a
        .local  a
        .comm   a,1,4
        .type   e,@object                       # @e
        .data
        .p2align        3
e:
        .quad   d
        .size   e, 8

        .type   d,@object                       # @d
        .local  d
        .comm   d,4,4
        .ident  "clang version 12.0.1 (https://github.com/llvm/llvm-project.git fed41342a82f5a3a9201819a82bf7a48313e296b)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
        .addrsig_sym d
```
</p></details>


`clang-8dba4d42f50ea0f5eea27ec97578a9514cf27585 (trunk) -v`
<details ><summary>Output</summary><p>

```
clang version 14.0.0 (https://github.com/llvm/llvm-project.git 8dba4d42f50ea0f5eea27ec97578a9514cf27585)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/compiler_cache/clang-8dba4d42f50ea0f5eea27ec97578a9514cf27585/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/11.1.0
Selected GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/11.1.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
```
</p></details>

`clang-llvmorg-12.0.1 -v`
<details ><summary>Output</summary><p>

```
clang version 12.0.1 (https://github.com/llvm/llvm-project.git fed41342a82f5a3a9201819a82bf7a48313e296b)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/compiler_cache/clang-f942cdbd50f40f6056ab7f0a401935f53356df97/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/11.1.0
Selected GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/11.1.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
```
</p></details>

### Bisection
Started with 669ddd1e9b1226432b003dbba05b99f8e992285b
`clang-669ddd1e9b1226432b003dbba05b99f8e992285b -Oz -S -o /dev/stdout case.c`
<details ><summary>Output</summary><p>

```asm
        .text
        .file   "case.c"
        .globl  main                            # -- Begin function main
        .type   main,@function
main:                                   # @main
        .cfi_startproc
# %bb.0:
        pushq   %rax
        .cfi_def_cfa_offset 16
        movb    $1, a(%rip)
        movq    e(%rip), %rax
        andl    $0, (%rax)
        cmpb    $0, a(%rip)
        jne     .LBB0_2
# %bb.1:
        callq   foo
.LBB0_2:
        andq    $0, e(%rip)
        xorl    %eax, %eax
        popq    %rcx
        .cfi_def_cfa_offset 8
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .type   a,@object                       # @a
        .local  a
        .comm   a,1,4
        .type   e,@object                       # @e
        .data
        .p2align        3
e:
        .quad   d
        .size   e, 8

        .type   d,@object                       # @d
        .local  d
        .comm   d,4,4
        .ident  "clang version 13.0.0 (https://github.com/llvm/llvm-project.git 669ddd1e9b1226432b003dbba05b99f8e992285b)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
        .addrsig_sym d
```
</p></details>
Previous commit: b15cbaf5a03d0b32dbc32c37766e32ccf66e6c87

`clang-b15cbaf5a03d0b32dbc32c37766e32ccf66e6c87 -Oz -S -o /dev/stdout case.c`
<details ><summary>Output</summary><p>

```asm
        .text
        .file   "case.c"
        .globl  main                            # -- Begin function main
        .type   main,@function
main:                                   # @main
        .cfi_startproc
# %bb.0:
        movb    $1, a(%rip)
        movq    e(%rip), %rax
        andl    $0, (%rax)
        andq    $0, e(%rip)
        xorl    %eax, %eax
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .type   a,@object                       # @a
        .local  a
        .comm   a,1,4
        .type   e,@object                       # @e
        .data
        .p2align        3
e:
        .quad   d
        .size   e, 8

        .type   d,@object                       # @d
        .local  d
        .comm   d,4,4
        .ident  "clang version 13.0.0 (https://github.com/llvm/llvm-project.git b15cbaf5a03d0b32dbc32c37766e32ccf66e6c87)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
        .addrsig_sym d
```
</p></details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWVtv2zYU_jXyC2GBInV98EMuTTFgWLd1ezZ4k8xWlhSJcpP--h1Ssi3HSeC0WdMCDgRTJM9d53zUUXgt7xdejAUzSLBO-QImHr728MX4C1N3iWHeGWa0QLoyiHnkCkmPXh7teOSC200YFfLoNdzETxHCJbY0fEezqbVEeV17JLW3HsmeYM-BYrwtgAp5yUiG9trxjhchncN66pFgZNiuo1HbVBNCx_ytMn1bob2lXnI93Fgr1kxXg5CpIaN9q62bbIyNHsdP-w06tX5YD6bWP0E5RFBPFm1cVlNndnbunuhuKkpWFfNUchbKkOQRVgznkVKMJEpkSZSkLIuCUOQkidLIxs-0ffXZejn_8BUEQOpUqKoNUqVe64oZiFuMbUBhj_cG7ZSU5WZdt8U8ID72gwm7_yDpvs8mNP-I5jWs3ki1gd_OyLo_znB6JZVhuuwgfO9g1vXrNWvvYfKhN01vYMky71Zh3tjhsfpg3Xq7nvlG3Zn9LNelgtEjZDSAkP1mUda8hBubOuiZP49QNJ-jS1UAXd5Xwui6GhJur_a-UaMoSC0vxFu6gcSt04vntEyUAfuhdJHrJRRfa5q2HtHA0ZGIcx9q5GJH2vTd6tZ5HLXs7lCCVPlS5GxZ53mnDAri3fa63nDHFAa2MJgrpKjVza5MByIrWR1sujI6UMUqWQ6y8LCbjgQTUWLd8AnN4_o-VTai_u-Xl3hJHjodTJ0WrCytaTbt3dqWaUIDZt1OVKpHVd7V7WB7pKzBzjc18a2pm21wxfPBTXe7AFu3W6tsUixVJQ8emd_pr5PcQROy-XEawPI-CU7Ip2kGv6skOszLSeqyIW9r_kkJ83xysj1zWUPwHffeynq9HuXZbAqPNKnTNak9s2RmoqQhrNQFeJHRYVEdhPS2ZxJGeRRkq3v_cB4YJk83TB6HQB6FQDr3D0KgparMiEgWZ9FGtZ2FkyAEWMa2XFbGNJ31htzAVWiz6rmVCBOL4eMwhyywZvpAgE4Fa1exEwTs1JgLdtmHY0T57__4dw5QIz5bQgiH_SVDXEBjwbXp9vxMSrC-OFpYdvdrtI3Hg0PPAXszQLo7JdwxcIztT51a5wPmTQ-YH31UvApunzH4jMGnYPAAMt-GwbmSYUBDwlKAYUZZRnCQBhlMeZ6wMKUBVSSDRuuXweDXaAg2_w8iD9M3OkGd7n9YWyhjIfcujZdxOAePq_pLNS911d_Ni6of6VatYhKta6lKS93UnR6B6bcKHnJZKnmtW7sFdn11FUZuwNgGTpZ2KZhYKbvwomcADHwLWjd1D5ADfZ7U0raH76-uoC12mplLvEFz37U2LprbiAk4x25GvxoxcYncBIEf-PjbRMfhC4R_VCU8HCVfV-rVzth1Xxpt_QVxvu3V4UyMw-eoKBnJKHlg4nOyXvf950fW049Cw7erpzwLiZBcRjiHF6oYRzHjSY5ZiIOMRnlEaRTLPEvO9fSr1xOhw4Uu9e7AdSrtSy9o_AJJjeI4k1IGKuMBIXFICceYSs4ZjniW5anKMkLSiD-o0VPZzt3Lm3cv589j1-fPY09l8Lk1-4lbM_odL_cn4_rP35r92aqNrvsO2Rhq977Eg0hwBm9Z4BPmlEguKBE0SeJYwY3IYYxFmjz6fnkq8_nsevOz6_zl7QzvZ3h_BN5PBsCfGd5nckFlRjM2M9qUanFtu9wr6HLRu_E_-zZOf6uiVZ0LGTMOk7df29Cm88eWHfyc9W25eFkoYaq7rlcd3ETQngez1ULlJAxVQigNwwAHeSyiLKRpkiuRsATzWcm4KruFF11CnCr1BTkRNmbR9UwvCCbQ98NfGEQ48ZMgzyhPwxSTULAU2xSHGi99a4dft8WsXTiTeF90sFnqznT7TQaOF5VSTh3IZ71Z1e3ir561PZ85zQtn-X-8BXKz">