<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJztWVlz2zYQ_jXUC0YcArwf9GDZcaYznaZt2mcNCCwpJBTJEKDj-Nd3QVIUZSeObOdwOtZoRGKxJ7D74VBWy08rJ_IEN0RwDa7AhuNdON7Z-IvN_iuGtjZtJwzhxInXA4UQVRmSOf5RW8zaelu3hsiJ4sQXRBtulCBAHP_C6qIOOycUeyauq1pJkte1wxL76rB06hqFxZa3JMd-7DvyJyc9kdpwUGwkk1HbXBMhLZiurYg39254sWHsuKruGpgGoZgpyu-oLvrgYEYZwp1LFW521_I06FNTlLwqlonMeCADlocecC8PATiLQaRxGCc8DWkgchaHSWjDRxer99bv5ZsbVICzW5GqNgRKtVMVN-hK5NkBwb6sM2QyUpZXu7otltRzPZfOxN1befE0n8jyLVnWSL2UcIW_2si6u5uE_rkEw1WpceReYUt3ux1vP2HjTWeaziDJCk9UbDf28bkU5nq3p6eugWtzaOWqBHw6jI0OMHboLMo6K_HFJgO55-MwnyyXZA0F8uVdJYyqqyGFDmY_NTCqwox3Am_PN7D0dP_sPiszYyh-rF3kaoPF0ZqmrceC7flYmGUupvjZxNp0evuhjzhs-fWxBgn5RuR8U-e5BkNoNHWLXVP2QoFn6xUctg76tA9b1UylhhzvKhul-_t67W3YbUfo3BHBy9I6YlOxp-2FZjzXdTuYDQF9RcPj2xRM3exjEffHkky9WPcf9gbtHGygkkcj5Gp1M5sqMmNb3h11JB_G_ITpmyfMq0qS4zSYZQoMaVJn7wAh595cgIOw5IYfWg3jpSpQdzrOBRwFWtZVgU96grfeNX26XL8e4It3kqB3ELyBtj4EMZsj6FePib7vVRIqM5a1BStyBa22NUkDxDbPQtLWmEbb0WCX-C2U2XaZK-odNiwQjo8lzq0dfxcZyKmIZ-thDiMaxhm2ZBexGNzXf_y7xHoV7y0jzrP9ZcOEo8UiU0Yf5LmU6H3x-SWih8FmAMAeU3vQvIuEX8L4_xEc_0ow_DVke_Yo9eUSG1LrcSUGuc9ERCnnjAYSeBKGfhRALmMsvZCCCEH4eRw8wxL7Frujq-9TcEPzJyFhb_sf3hZgbGVdJ9EmCpYYcVV_rJalqrrrZVF1I9-2BS7JrpZQWu6m1mosit8qnM2yBHmhWtuFft30qx27RGcbBI52I7jYgiU8aA5QINsXzGXdYbrjplcqaffKr8_P8VjTW-Z9hg2WO93acVGZHTGBMHU5xtWIWUjsklKXut7jVEfBA5S_hRInB-S31Xo-ObvrSqNsvKjOtQcXhD5UdQ-Xz0Y2n91y8T5d33Z5-5H19KNg7-fVU5TmjPlpFlDGecpyP0vCGEIvDcIslDIQScL8jNOXevrV64n5w5es1bSy9ibt3gYtfsSkJjwKUgaMxZRCEOYUIi-gkR_TPM5CwdIMQkTeBG7V6KliL5vTlzuClzuCx98RfN-7gYfeCTz4LuA73gHQJ-x8Twa9Z3RA-bOFK1V3mmBoO9XvGvKApWmAy3kimQdxEudAZc6zKOUYRoiFl4KXRMnRoO4R_FThFwR_uV74SoiPuF54SvWenPbPonoXcuXL1E_5gncG4XL1V8fbLlt0bbl6WPDYVFp3oPEl9KnvLbarIPFzSDMPAoGrRCZS5sUyCZMkTYXIE7koeQalXjnhGiOr4CPpVdgow4vF0z1QK-Yx5lH8-AGjzPXwFJRSP0xA4mE9FHbxwlQrXavHxWPdol31KrOu0NhZKm30oZNrHOEKoHcYPTTKlLC6sMefczz-kFfj_182if6GogXd5xM3PUztr2HIlXbHsxwmwaL3edU7_B_xX_Zy>53130</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Dead Code Elimination Regression at -Oz (trunk vs. 10.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
struct a {
  int b;
  int c;
  short d;
} static e = {1, 1};
void foo(void);
static char f() {
  if (!e.c)
    foo();
  return 0;
}
int main() {
  struct a g;
  f();
  g = e;
  e = g;
  g.b;
}
```
`clang-8dba4d42f50ea0f5eea27ec97578a9514cf27585 (trunk) -Oz` can not eliminate `foo` but `clang-llvmorg-10.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
        cmpl    $0, e+4(%rip)
        jne     .LBB0_2
# %bb.1:
        callq   foo
.LBB0_2:
        xorl    %eax, %eax
        popq    %rcx
        .cfi_def_cfa_offset 8
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .type   e,@object                       # @e
        .data
        .p2align        2
e:
        .long   1                               # 0x1
        .long   1                               # 0x1
        .short  0                               # 0x0
        .zero   2
        .size   e, 12

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

`clang-llvmorg-10.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:
        xorl    %eax, %eax
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .ident  "clang version 10.0.1 (https://github.com/llvm/llvm-project.git ef32c611aa214dea855364efd7ba451ec5ec3f74)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
```
</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-10.0.1 -v`
<details ><summary>Output</summary><p>

```
clang version 10.0.1 (https://github.com/llvm/llvm-project.git ef32c611aa214dea855364efd7ba451ec5ec3f74)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /zdata/compiler_cache/clang-69f2239b412aa92f3b857e50945b5dd4c8823ba1/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 a6492e22711e45f1e60416371f7b5c29be5f508e
`clang-a6492e22711e45f1e60416371f7b5c29be5f508e -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
        cmpl    $0, e+4(%rip)
        jne     .LBB0_2
# %bb.1:
        callq   foo
.LBB0_2:
        xorl    %eax, %eax
        popq    %rcx
        .cfi_def_cfa_offset 8
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .type   e,@object               # @e
        .data
        .p2align        2
e:
        .long   1                       # 0x1
        .long   1                       # 0x1
        .short  0                       # 0x0
        .zero   2
        .size   e, 12

        .ident  "clang version 11.0.0 (https://github.com/llvm/llvm-project.git a6492e22711e45f1e60416371f7b5c29be5f508e)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
```
</p></details>
Previous commit: f42994f228d20e787fe1dfab69ab5c59ca9e0868

`clang-f42994f228d20e787fe1dfab69ab5c59ca9e0868 -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:
        xorl    %eax, %eax
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
        .cfi_endproc
                                        # -- End function
        .ident  "clang version 11.0.0 (https://github.com/llvm/llvm-project.git f42994f228d20e787fe1dfab69ab5c59ca9e0868)"
        .section        ".note.GNU-stack","",@progbits
        .addrsig
```
</p></details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztGdly2zbwa6gXjDgEeD_owbLjTGc6Tdu0zxoQWFBIKJIhQcfx13dBUhRlJ45s53A61mhE7mJv7C4OZZX8tHIiT3BDBG_BFQg43oXjnY2_CPZfMcCtaTphCCdOvB4whOjSkMzxj2Axg9tt1RgiJ4wTX5DWcKMFAeL4F1YWddg5oTgyUV1VWhJVVQ5L7KvD0mloZBZb3hCF4zh2ZI8iPZJad5BtRJNR2lwSIQ2YrimJN7dueLFu7Lgu7yqYgpDPBKk7ovPeOZhhBnfnXLmb3dU8BX0CRcHLfJnIjAcyYCr0gHsqBOAsBpHGYZzwNKSBUCwOk9C6jyaW763dyzc3KABntyRlZQgUeqdLbtCUyLMBwbGsM2RSUhRXu6rJl9RzPZfO2N1befE0m8jyLVlWiL2UcIW_rZFVdzcJ_XMJhuuixci9QqjtdjvefELgTWfqziDKMk9YhGv7-FwK83a3x6eugWtzgJQuAJ8OY6MBjB0G86LKCnyxyUDu-TjMJ8slWUOOdKorhdFVOaTQQe2nGkZRmPFO4O3pBpIe75_dp2WmDNmPpQulN1gcjambaizYno6FWeZiip9NpHXXbj_0HocNvz6WIEFthOKbSqkWDKHRNCx2ddEzBZ6tV3DYOujTPmx0PZUaUrwrrZfu7-u1t2G3DaFzQwQvCmuITcUet2ea0VxXzaA2BLQVFY9vkzNVvfdF3O9LMo1i3X_YK7RzsIFSHkXIbfXNbKrIjGx5N-qIPsT8hOmbJ8yrUpLjNJhlCgxpUmXvAFvOvbkAB2bJDT9ANeOFzlF2Os4FHDlaVGWOT3qCtd41fTpfvx7gi3cSo3dgvIGmOjgxmyPoV48Jvx_VEkozlrVtVuQKmtbWJA2wt3m2JW2NqVsbDXaJ31ybbZe5otohYBvh-Fji3Nr4u0hATu14th7mbaSFcYYt2sVeDO7rP_5dYr2K95YQ59n-smHCUWOeadMe-LmUaH3--SWib4P10AD7nto3zbud8Es9_n_Ujn-lNvy1zvbsu9SXS2xIrceVGCifiYhSzhkNJPAkDP0oACVjLL2QgghB-CoOnmGJfYvd0dX3KbgB_EmdsNf9D29yMLayrpNoEwVL9LisPpbLQpfd9TIvu5Fu2wCXZFdJKCx1XbV6LIrfSpzNogB5oRs7hHbd9Ksdu0Rja2wczUZwsQWLeNAcIEO2L5jLqsN0x02v1NLulV-fn-OxptfM-wwbNHdtY-OiMxsxgW3qcvSrFjOX2CWlLnW9x4mOggcIfwsFTg7Ibyv1fDJ21xVGW39RnGsPLtj6UNQ9VD4byXx2y8T7ZH3b5e1H1tOPans_r56iVDHmp1lAGecpU36WhDGEXhqEWShlIJKE-RmnL_X0q9cT84cvWetpZe1V2r0NavyISU14FKQMGIsphSBUFCIvoJEfUxVnoWBpBiF23gRu1eipbC-b05c7gpc7gsffEXzfu4GH3gk8-C7gO94B0CfsfE9ues_ogPJnA1e66lqCru10v2tQAUvTAJfzRDIP4iRWQKXiWZRydCPEwkvBS6LkKKj7Dn4q80sHf7le-IqLj7heeEr1npz2z6J6F3Lly9RP-cJoU8Dqwm7lz3ErT16N_-XYgPwNeQNtHxtu-pLbXymQq9YdzyXo0KJritXDYoagbtsOWnwJfep7i-0qifAwwtJYCQ5-ChLXz4TSWMUqyITgfFHwDIp25YRrDEgJH0kvwgYnvFjoFfMY8yh-_IBR5np49EmpHyYg8YQeCrtiYX4VrrXDxbPcoln1JmVd3uJgoVvTHgY5Op6XAL06lM87g-vK6q-ON1226DWvesv_A0X_4eg">