brintos

brintos / llvm-project-archived public Read only

0
0
Text · 821 B · 588e107 Raw
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