modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr31448-2.c (about)

     1  /* PR middle-end/31448, this used to ICE during expand because
     2     reduce_to_bit_field_precision was not ready to handle constants. */
     3  
     4  typedef struct _st {
     5      long int iIndex : 24;
     6      long int iIndex1 : 24;
     7  } st;
     8  st *next;
     9  void g(void)
    10  {
    11      st *next = 0;
    12      int nIndx;
    13      const static int constreg[] = { 0,};
    14      nIndx = 0;
    15      next->iIndex = constreg[nIndx];
    16  }
    17  void f(void)
    18  {
    19      int nIndx;
    20      const static long int constreg[] = { 0xFEFEFEFE,};
    21      nIndx = 0;
    22      next->iIndex = constreg[nIndx];
    23      next->iIndex1 = constreg[nIndx];
    24  }
    25  int main(void)
    26  {
    27    st a;
    28    next = &a;
    29    f();
    30    if (next->iIndex != 0xFFFEFEFE)
    31      __builtin_abort ();
    32    if (next->iIndex1 != 0xFFFEFEFE)
    33      __builtin_abort ();
    34    return 0;
    35  }
    36