https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114073
            Bug ID: 114073
           Summary: during GIMPLE pass: bitintlower: internal compiler
                    error: in lower_stmt, at gimple-lower-bitint.cc:5530
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
                CC: crazylht at gmail dot com, hjl.tools at gmail dot com,
                    jakub at gcc dot gnu.org, janschultke at googlemail dot com,
                    pinskia at gcc dot gnu.org, rguenth at gcc dot gnu.org,
                    rsandifo at gcc dot gnu.org, unassigned at gcc dot gnu.org
        Depends on: 113988
  Target Milestone: ---

VIEW_CONVERT_EXPRs between BITINT_TYPE and same sized gimple reg types like
VECTOR_TYPE or COMPLEX_TYPE currently ICEs.

Testcase showing this (-O2 -mavx512f):

_Complex __int128
f1 (_BitInt(256) x)
{
  union U { _BitInt(256) x; _Complex __int128 y; } u;
  u.x = x;
  return u.y;
}

_Complex __int128
f2 (_BitInt(254) x)
{
  union U { _BitInt(254) x; _Complex __int128 y; } u;
  u.x = x;
  return u.y;
}

typedef int V __attribute__((vector_size (sizeof (_BitInt(256)))));

V
f3 (_BitInt(256) x)
{
  union U { _BitInt(256) x; V y; } u;
  u.x = x;
  return u.y;
}

V
f4 (_BitInt(254) x)
{
  union U { _BitInt(254) x; V y; } u;
  u.x = x;
  return u.y;
}

typedef int W __attribute__((vector_size (sizeof (_BitInt(512)))));

W
f5 (_BitInt(512) x)
{
  union U { _BitInt(512) x; W y; } u;
  u.x = x;
  return u.y;
}

W
f6 (_BitInt(509) x)
{
  union U { _BitInt(509) x; W y; } u;
  u.x = x;
  return u.y;
}

_BitInt(256)
f7 (_Complex __int128 x)
{
  union U { _BitInt(256) x; _Complex __int128 y; } u;
  u.y = x;
  return u.x;
}

_BitInt(252)
f8 (_Complex __int128 x)
{
  union U { _BitInt(252) x; _Complex __int128 y; } u;
  u.y = x;
  return u.x;
}

_BitInt(256)
f9 (V x)
{
  union U { _BitInt(256) x; V y; } u;
  u.y = x;
  return u.x;
}

_BitInt(252)
f10 (V x)
{
  union U { _BitInt(252) x; V y; } u;
  u.y = x;
  return u.x;
}

_BitInt(512)
f11 (W x)
{
  union U { _BitInt(512) x; W y; } u;
  u.y = x;
  return u.x;
}

_BitInt(506)
f12 (W x)
{
  union U { _BitInt(506) x; W y; } u;
  u.y = x;
  return u.x;
}


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113988
[Bug 113988] during GIMPLE pass: bitintlower: internal compiler error: in
lower_stmt, at gimple-lower-bitint.cc:5470

Reply via email to