https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118835

            Bug ID: 118835
           Summary: [12/13/14/15 Regression] ICE in s390_valid_shift_count
                    since r10-1731-ge2839e47894f0b
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: stefansf at gcc dot gnu.org
  Target Milestone: ---
              Host: s390*-*-*

long
test (long x, int y)
{
  __int128 z = 0xAAAAAAAAAAAAAABF;
  z &= y;
  return x << z;
}

$ gcc t.c -O2 -S
during RTL pass: combine
t.c: In function 'test':
t.c:7:1: internal compiler error: RTL check: expected code 'const_int', have
'const_wide_int' in s390_valid_shift_count, at config/s390/s390.cc:3526

Fails while extracting the immediate

    HOST_WIDE_INT val = INTVAL (imm);
    if (implicit_mask > 0
        && (val & implicit_mask) != implicit_mask)
      return false;

which is in this case a const_wide_int.

I will come up with a fix.

Reply via email to