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

     1  
     2  struct list_head {
     3   struct list_head *next, *prev;
     4  };
     5  struct ib_fmr {
     6   int *device;
     7   struct list_head list;
     8  };
     9  static inline
    10  struct mthca_fmr *to_mfmr(struct ib_fmr *ibmr)
    11  {
    12   const struct ib_fmr *__mptr = (ibmr);
    13   return (struct mthca_fmr *)( (char *)__mptr );
    14  }
    15  void mthca_unmap_fmr(struct list_head *fmr_list)
    16  {
    17   struct ib_fmr *fmr;
    18   if (mthca_is_memfree())
    19   {
    20   for (fmr =
    21   ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)(
    22  (char *)__mptr - 8 );});
    23   &fmr->list != (fmr_list);
    24   fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr
    25  *)( (char *)__mptr - 8);})
    26   )
    27    mthca_arbel_fmr_unmap(to_mfmr(fmr));
    28   }
    29   else
    30   for (fmr =
    31   ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)(
    32  (char *)__mptr - 8);});
    33    &fmr->list != (fmr_list);
    34    fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr
    35  *)( (char *)__mptr - 8);})
    36    )
    37    mthca_tavor_fmr_unmap(to_mfmr(fmr));
    38  }