[prev in list] [next in list] [prev in thread] [next in thread] 

List:       llvm-bugs
Subject:    [llvm-bugs] [Bug 63625] Dead Code Elimination Regression when using __builtin_unreachable (trunk vs 
From:       LLVM Bugs via llvm-bugs <llvm-bugs () lists ! llvm ! org>
Date:       2023-06-30 16:44:09
Message-ID: 20230630164409.2bd2e046dd109ff4 () email ! llvm ! org
[Download RAW message or body]

[Attachment #2 (text/html)]

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

    <tr>
        <th>Summary</th>
        <td>
            Dead Code Elimination Regression when using __builtin_unreachable (trunk \
vs 16)  </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>
    https://godbolt.org/z/oecxca7hK

Given the following code:

```C
void foo(void);
static char e = 3, i;
static unsigned f = 6;
static int g, h = -1L;
static char(a)(char b, char c) { return c == 0 ?: b / c; }
static short(d)(short c) {
 if (!(((c) &gt;= -1) &amp;&amp; ((c) &lt;= 0))) {
        __builtin_unreachable();
 }
    return 0;
}
int main() {
    char j = 0;
    if (0 &gt;= f) {
        e = 0;
        for (; e; ++e) {
            foo();
 j = a(1, j) != g;
        }
        d(4);
    }
 d(i);
    d(h);
    a(0, -1L);
    f = 0;
}

```
clang-trunk -O2 does not eliminate the call to foo:

```asm
main:                                   # @main
# %bb.0:
	pushq	%rax
	cmpb	$1, f(%rip)
	jne	.LBB0_3
# %bb.1:
	xorl	%eax, %eax
	.p2align	4, 0x90
.LBB0_2: # =&gt;This Inner Loop Header: Depth=1
	movb	%al, e(%rip)
	callq	foo@PLT
	movzbl	e(%rip), %eax
	incb	%al
	jmp	.LBB0_2
.LBB0_3:
	movb	$1, f(%rip)
	xorl	%eax, %eax
	popq	%rcx
	retq
.Lfunc_end0:
```

clang-16.0.6 -O2 eliminates the call to foo:

```asm
main: # @main
# %bb.0:
	movb	$1, f(%rip)
	xorl	%eax, %eax
	retq
.Lfunc_end0:
```

Bisects to 946b32680311f43a349d0199f9e286f385cd9847 (@floatshadow )
</pre>
<img width="1px" height="1px" alt="" \
src="http://email.email.llvm.org/o/eJysVl9v4zYM_zTMi9BApmzHfsjDpWm2YQU2DPdeyBIdq3MknyW \
33X36QXKaJrncNhxmBInEPz-SP1KxpPdmb4nWUGyg2C7kFDo3rkNHoSOn3bhonP5r3YUweBCfAHeAu73TjevD0 \
o17wN1XwJ0j9abkqvsV-Bb4p_n7J_NCloWOWOv63r0au2fKaYo4Z2ZQ8vlzP-9fnNGsdQ6wikvAGsRmVvkgg1F \
MdXJkxEBsmQC8Z-baYLKpKs3aZFRe640NbB89u6S_yx5vhQCsZIyOVQrYRIe0UoA1g9WGjRSm0TIVUSIQZyB2I \
D6xhgHumAKxYbDaXiD7zo0BsNIzdNqeEGdLZloGWAFm6Tt-ZgPxMKebNlgCluxCfZ-SSMD1JeLxeXpqJtMHY58 \
mO5JUnWx6ShAfJH9kHD2OJfKT-qSNJB6ksbP7ZaxE0zOb0xFnirky_l5KezNLuuEYn9aNqV6xYZSoxQ3ghm5iz \
PbuurY5JwlYZbGdzzOTWRTuv4l3QUR8NGCVX-BdWEW1uVZHYXctjAnwmEAcvStde1X9Cf_quMxb1Uu7vwvjZP9 \
kd78h0448sy4w6s3BWBkonUAl-54Flyj5zvGT_jBLUlPFBZPfeQAFg5wnhxksCrBomiU_C1MPk---AK8Bi1G-n \
cTqMDRJmqdmtKlZxWiGSMm70bMl4PXycbPhT-I6SnYe5c2N_RyE5FsEPK7e9csBZW_2FnidRzV_q48kzugYi07 \
Y8TQ_fO6MZ79YSyN7dG5gP5PUNEabLQ2hA7HNTtAH9zJXUsg-QtPNUmITIg2xCTn__fHzuf_XJiZ_6fhtDcaqj \
0Anig7DiSI8r0ic03PK8Z_Y_jcOBze8N1J9SEcKX97jtpNVT2T12QBcTuz53Gblki_LNLinefU_PLD_dRz_FyZ \
-oOaN8aSCj2XVedkILCsusqzNhRR5rXlW121NWJWtqAql6ypfpf-7nLe9k8F3UrtXBlgv9FroWtRyQeusrKosF \
3nBF926zKqi1IIU14USWLZqVayKnFZqhW1ZZQuzRo6Cl4JnZZ7zeomNRuJ5qXXG67bNIed0kKZf9v3LIb7hF8b \
7idalKLFY9LKh3qfLAqKlV5aUgBjvDuM6-tw1095Dznvjg_9ACSb0tN6S1OzeaWIPx3YbZ9kftB_J-7h87ciyycerws13VeRj_rN78SwrIxfT2F_fT0zopmap3AFwFzM4_twNo3smFQB3KW8PuEt1_R0AAP__a0RaGQ">



[Attachment #3 (text/plain)]

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic