diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/pr32571.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr32571.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32571.c b/gcc/testsuite/gcc.c-torture/compile/pr32571.c new file mode 100644 index 000000000..9592e3f36 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr32571.c @@ -0,0 +1,38 @@ + +struct list_head { + struct list_head *next, *prev; +}; +struct ib_fmr { + int *device; + struct list_head list; +}; +static inline +struct mthca_fmr *to_mfmr(struct ib_fmr *ibmr) +{ + const struct ib_fmr *__mptr = (ibmr); + return (struct mthca_fmr *)( (char *)__mptr ); +} +void mthca_unmap_fmr(struct list_head *fmr_list) +{ + struct ib_fmr *fmr; + if (mthca_is_memfree()) + { + for (fmr = + ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)( +(char *)__mptr - 8 );}); + &fmr->list != (fmr_list); + fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr +*)( (char *)__mptr - 8);}) + ) + mthca_arbel_fmr_unmap(to_mfmr(fmr)); + } + else + for (fmr = + ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)( +(char *)__mptr - 8);}); + &fmr->list != (fmr_list); + fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr +*)( (char *)__mptr - 8);}) + ) + mthca_tavor_fmr_unmap(to_mfmr(fmr)); +} |