https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117189
Bug ID: 117189
Summary: [avr] DSE removing instruction that is not dead
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: gjl at gcc dot gnu.org
Target Milestone: ---
typedef int __attribute__((mode(SI))) __attribute__((vector_size (16))) vecint;
typedef int __attribute__((mode(SI))) siint;
vecint i = { 150, 100, 150, 200 };
vecint j = { 10, 13, 20, 30 };
vecint k;
int main (void)
{
k = i / j;
/* k = {15, 7, 7, 6} */
if (k[0] != 15 || k[1] != 7)
__builtin_abort ();
k = i & j;
/* k = {2, 4, 20, 8} */
if (k[1] != 4)
__builtin_abort ();
return 0;
}
$ avr-gcc -mmcu=atmega128 -O1 -mlra
is running into abort with current trunk.
Target: avr
Configured with: ../../source/gcc-master/configure --target=avr --disable-nls
--with-dwarf2 --with-gnu-as --with-gnu-ld --disable-shared
--enable-languages=c,c++
GNU C17 (GCC) version 15.0.0 20241016 (experimental) (avr)
compiled by GNU C version 13.2.1 20231022, GMP version 6.2.1, MPFR
version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP