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

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

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

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

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

<pre>
    ```c
static struct { int a; } b, c;
static int d = -1;
void foo();
int main() {
    if (b.a)
        d = 2 | (b.a <= 0);
    for (; b.a; b.a++)
        c = b;
    if (!d)
        foo();
}
```
`llvm-4c2bccfda3892ae13e97b6bfdbc99ec8cf5d095d (trunk) -O3` can not eliminate `foo` but `llvm-llvmorg-14.0.4 -O3` can.

Target: `x86_64-unknown-linux-gnu`

------------------------------------------------

`llvm-4c2bccfda3892ae13e97b6bfdbc99ec8cf5d095d (trunk) -O3 -S -o /dev/stdout case.c`
<details ><summary>Reduced assembly</summary><p>

```asm
main:                                   # @main
        .cfi_startproc
# %bb.0:
        pushq   %rax
        .cfi_def_cfa_offset 16
        cmpl    $0, d(%rip)
        je      .LBB0_1
# %bb.2:
        xorl    %eax, %eax
        popq    %rcx
        .cfi_def_cfa_offset 8
        retq
.LBB0_1:
        .cfi_def_cfa_offset 16
        xorl    %eax, %eax
        callq   foo@PLT
        xorl    %eax, %eax
        popq    %rcx
        .cfi_def_cfa_offset 8
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
```
</p></details>


------------------------------------------------

`llvm-llvmorg-14.0.4 -O3 -S -o /dev/stdout case.c`

<details ><summary>Reduced assembly</summary><p>

```asm
main:                                   # @main
        .cfi_startproc
# %bb.0:
        xorl    %eax, %eax
        retq
.Lfunc_end0:
        .size   main, .Lfunc_end0-main
```
</p></details>

------------------------------------------------

### Bisection
Bisected to: 6990e7477d24ff585ae86549f5280f0be65422a6
Committed by: @alexander-shaposhnikov
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdVkuP2zYQ_jXyhZBAUQ9bBx1iOzkFaJHmbvAxtJlIoiNSjre_vkNJ1tq7QDZFihYoQZCcJz8OZygJq57qqKRTlxHdR_Sd89wbSZzvB-lJtN4S03nCo2yLxJ6IiO2IROpBO6goEmV7EqeL7GKNItraiG0iVi3soNty003ssMPEJ9iMJsgWCQ8GCze0yTtD9d2sgoxd4NF750FV2z6oBMTB0zyx7dhfuJWjW_FgP4GIWKpeqb8-DcZkXtziuJBNc2njXDIhpVY821SMQ5pBtRal0ErIqgK5kbpQtCpU2BJD3n0NMYl_y9CeSN6RznoCjWlNxz0Q5AYIKBODJ7c9wmD7Y5zmCU3yO-tkxjKOn3l_BB9l74LddVMeyjzG_Tr7vYsb0w3X-NgNz_jHMf6b7d72VyNA4j9IbJH7QcEFR-eVxUNL7iCRzziznQLPTePwJt8j5Ya25f0TEp9ADRIU4c5BK5qnkC_oZpEjfQ7TI-apc9dOnDFTsyUBftAilpEop6PB7LJKpDYHrJHen3s7F9ioxwohEoqOF9Xz4E7fcEZRz6-PHhTog9T8YLV24ElaLmLZnpvRKKehMNWYnUVvzkvqovQLBEcft1t6SF9iYPcYrrafvBWAEFiotHG1YLTnG0T5Y4ibRdqD_zYRNwR3G75xurfwSN40AVCoiZz-_vHzv3YSPXTyAJ16uMLEmT9DqKfXbUfu1OK7tHjxUIxZeZ7ycUz2MZtfJuY_Vo6vH4ufLLT_V7m9lSD_5WX_0jWzbOpkaxxIb-yMZCLxfrwNAS6risI6X68Vy7UuNgWHTVnklS7YhmoqAAnG-FyLO9u2xgdr8TR-QXLKG7jyTkEfuxM_W3fqzFd7Wak6U1VW8ZU3voF6D1yRnVVA3s8fMQREPsGxB-fCkvsxBW9vP7m4hEypiS_Yauib-uT92YXIsw_Yj8afBpFI2yIRcnmeYrzxL3hAJI1zAzhcFCXNq9Wpxm-MKEsm1qnWpcgp3UAlCyhLTgut1sWq4QIaV0cF_iCwDr6T0QWuo2K_MjWjjNEyLVJGK0YTyFItCl1lDITKlMZgAN54kwQcCdbWqq9HSGI4OhQ2xnn3LMT6MMcOYNwO_fPBn2xf-xNgt8r2q3H3ekT_F7pkk3k">