isl::union_set &Undef) {
auto ParamSpace = give(isl_union_set_get_space(Universe.keep()));
- if (OccupiedAndKnown) {
+ if (Undef && !Occupied) {
assert(!Occupied);
+ Occupied = give(isl_union_set_subtract(Universe.copy(), Undef.copy()));
+ }
+
+ if (OccupiedAndKnown) {
assert(!Known);
Known = isl::union_map::empty(ParamSpace);
- Occupied = OccupiedAndKnown.domain();
+
+ if (!Occupied)
+ Occupied = OccupiedAndKnown.domain();
+
OccupiedAndKnown.foreach_map([&Known](isl::map Map) -> isl::stat {
if (isl_map_has_tuple_name(Map.keep(), isl_dim_out) != isl_bool_true)
return isl::stat::ok;
});
}
- if (!Occupied) {
- assert(Undef);
- Occupied = give(isl_union_set_subtract(Universe.copy(), Undef.copy()));
- }
-
if (!Undef) {
assert(Occupied);
Undef = give(isl_union_set_subtract(Universe.copy(), Occupied.copy()));