forked from OSchip/llvm-project
46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
/*
|
|
* Copyright 2017 Sven Verdoolaege
|
|
*
|
|
* Use of this software is governed by the MIT license
|
|
*
|
|
* Written by Sven Verdoolaege,
|
|
*/
|
|
|
|
/* Align the parameters of "multi" and "domain" (if needed) and
|
|
* call "fn".
|
|
*/
|
|
static __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),align_params),ALIGN_DOMBASE)(
|
|
__isl_take MULTI(BASE) *multi, __isl_take ALIGN_DOM *domain,
|
|
__isl_give MULTI(BASE) *fn(__isl_take MULTI(BASE) *multi,
|
|
__isl_take ALIGN_DOM *domain))
|
|
{
|
|
isl_bool aligned;
|
|
isl_bool named;
|
|
isl_space *dom_space;
|
|
|
|
aligned = FN(ALIGN_DOM,space_has_equal_params)(domain, multi->space);
|
|
if (aligned < 0)
|
|
goto error;
|
|
if (aligned)
|
|
return fn(multi, domain);
|
|
|
|
dom_space = FN(ALIGN_DOM,peek_space)(domain);
|
|
named = isl_space_has_named_params(multi->space);
|
|
if (named >= 0 && named)
|
|
named = isl_space_has_named_params(dom_space);
|
|
if (named < 0)
|
|
goto error;
|
|
if (!named)
|
|
isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
|
|
"unaligned unnamed parameters", goto error);
|
|
multi = FN(MULTI(BASE),align_params)(multi,
|
|
FN(ALIGN_DOM,get_space)(domain));
|
|
domain = FN(ALIGN_DOM,align_params)(domain,
|
|
FN(MULTI(BASE),get_space)(multi));
|
|
return fn(multi, domain);
|
|
error:
|
|
FN(MULTI(BASE),free)(multi);
|
|
FN(ALIGN_DOM,free)(domain);
|
|
return NULL;
|
|
}
|