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

Reply via email to