36 lines · c
1/*2 * Copyright 2013 Ecole Normale Superieure3 *4 * Use of this software is governed by the MIT license5 *6 * Written by Sven Verdoolaege,7 * Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France8 */9 10#include <isl_multi_macro.h>11 12/* Coalesce the elements of "multi".13 *14 * Note that such coalescing does not change the meaning of "multi"15 * so there is no need to cow. We do need to be careful not to16 * destroy any other copies of "multi" in case of failure.17 */18__isl_give MULTI(BASE) *FN(MULTI(BASE),coalesce)(__isl_take MULTI(BASE) *multi)19{20 int i;21 22 if (!multi)23 return NULL;24 25 for (i = 0; i < multi->n; ++i) {26 EL *el = FN(EL,copy)(multi->u.p[i]);27 el = FN(EL,coalesce)(el);28 if (!el)29 return FN(MULTI(BASE),free)(multi);30 FN(EL,free)(multi->u.p[i]);31 multi->u.p[i] = el;32 }33 34 return multi;35}36