modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/20060202-1.c (about)

     1  typedef __SIZE_TYPE__ size_t;
     2  typedef const struct objc_selector
     3  {
     4    void *sel_id;
     5  }
     6   *SEL;
     7  typedef struct objc_object
     8  {
     9  }
    10   *id;
    11  typedef struct objc_class *Class;
    12  struct objc_class
    13  {
    14    struct sarray *dtable;
    15  };
    16  typedef size_t sidx;
    17  struct soffset
    18  {
    19    unsigned int boffset:(sizeof (size_t) * 8) / 2;
    20    unsigned int eoffset:(sizeof (size_t) * 8) / 2;
    21  };
    22  union sofftype
    23  {
    24    struct soffset off;
    25    sidx idx;
    26  };
    27  struct sarray
    28  {
    29    size_t capacity;
    30  };
    31  static __inline__ unsigned int
    32  soffset_decode (sidx indx)
    33  {
    34    union sofftype x;
    35    x.idx = indx;
    36    return x.off.eoffset + (x.off.boffset * (1 << 5));
    37  }
    38  static __inline__ void *
    39  sarray_get_safe (struct sarray *array, sidx indx)
    40  {
    41    if (soffset_decode (indx) < array->capacity)
    42      return (void *)sarray_get (array, indx);
    43  }
    44  void *
    45  get_imp (Class class, SEL sel)
    46  {
    47    void *res = sarray_get_safe (class->dtable, (size_t) sel->sel_id);
    48    if (res == 0)
    49      {
    50  	{
    51  	  res = get_imp (class, sel);
    52  	}
    53      }
    54  }