Skip to content

Commit e395da7

Browse files
committed
Update isl to 0980603 'isl_tab_pip.c: parallel_constraints: drop useless assignment'
This update contains: - Fixes of minor issues detected by clang's scan_build - More schedule tree infrastructure additions This update slightly changes the output of our dependence analysis, but these changes are purely syntactially. llvm-svn: 230528
1 parent c00927c commit e395da7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2786
-344
lines changed

polly/lib/External/isl/doc/user.pod

Lines changed: 256 additions & 137 deletions
Large diffs are not rendered by default.

polly/lib/External/isl/include/isl/flow.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <isl/map_type.h>
66
#include <isl/union_set_type.h>
77
#include <isl/union_map_type.h>
8+
#include <isl/schedule.h>
89

910
#if defined(__cplusplus)
1011
extern "C" {
@@ -62,6 +63,41 @@ void isl_flow_free(__isl_take isl_flow *deps);
6263

6364
isl_ctx *isl_flow_get_ctx(__isl_keep isl_flow *deps);
6465

66+
struct isl_union_access_info;
67+
typedef struct isl_union_access_info isl_union_access_info;
68+
struct isl_union_flow;
69+
typedef struct isl_union_flow isl_union_flow;
70+
71+
__isl_give isl_union_access_info *isl_union_access_info_from_sink(
72+
__isl_take isl_union_map *sink);
73+
__isl_give isl_union_access_info *isl_union_access_info_set_must_source(
74+
__isl_take isl_union_access_info *access,
75+
__isl_take isl_union_map *must_source);
76+
__isl_give isl_union_access_info *isl_union_access_info_set_may_source(
77+
__isl_take isl_union_access_info *access,
78+
__isl_take isl_union_map *may_source);
79+
__isl_give isl_union_access_info *isl_union_access_info_set_schedule(
80+
__isl_take isl_union_access_info *access,
81+
__isl_take isl_schedule *schedule);
82+
__isl_give isl_union_access_info *isl_union_access_info_set_schedule_map(
83+
__isl_take isl_union_access_info *access,
84+
__isl_take isl_union_map *schedule_map);
85+
__isl_null isl_union_access_info *isl_union_access_info_free(
86+
__isl_take isl_union_access_info *access);
87+
88+
__isl_give isl_union_flow *isl_union_access_info_compute_flow(
89+
__isl_take isl_union_access_info *access);
90+
91+
__isl_give isl_union_map *isl_union_flow_get_must_dependence(
92+
__isl_keep isl_union_flow *flow);
93+
__isl_give isl_union_map *isl_union_flow_get_may_dependence(
94+
__isl_keep isl_union_flow *flow);
95+
__isl_give isl_union_map *isl_union_flow_get_must_no_source(
96+
__isl_keep isl_union_flow *flow);
97+
__isl_give isl_union_map *isl_union_flow_get_may_no_source(
98+
__isl_keep isl_union_flow *flow);
99+
__isl_null isl_union_flow *isl_union_flow_free(__isl_take isl_union_flow *flow);
100+
65101
int isl_union_map_compute_flow(__isl_take isl_union_map *sink,
66102
__isl_take isl_union_map *must_source,
67103
__isl_take isl_union_map *may_source,

polly/lib/External/isl/include/isl/schedule.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <isl/union_set_type.h>
55
#include <isl/union_map_type.h>
66
#include <isl/schedule_type.h>
7+
#include <isl/aff_type.h>
78
#include <isl/band.h>
89
#include <isl/space.h>
910
#include <isl/list.h>
@@ -82,6 +83,8 @@ __isl_null isl_schedule *isl_schedule_free(__isl_take isl_schedule *sched);
8283
__isl_give isl_union_map *isl_schedule_get_map(__isl_keep isl_schedule *sched);
8384

8485
isl_ctx *isl_schedule_get_ctx(__isl_keep isl_schedule *sched);
86+
int isl_schedule_plain_is_equal(__isl_keep isl_schedule *schedule1,
87+
__isl_keep isl_schedule *schedule2);
8588

8689
__isl_give isl_schedule_node *isl_schedule_get_root(
8790
__isl_keep isl_schedule *schedule);
@@ -95,6 +98,24 @@ __isl_give isl_schedule *isl_schedule_map_schedule_node(
9598
__isl_give isl_schedule_node *(*fn)(
9699
__isl_take isl_schedule_node *node, void *user), void *user);
97100

101+
__isl_give isl_schedule *isl_schedule_insert_partial_schedule(
102+
__isl_take isl_schedule *schedule,
103+
__isl_take isl_multi_union_pw_aff *partial);
104+
__isl_give isl_schedule *isl_schedule_sequence(
105+
__isl_take isl_schedule *schedule1, __isl_take isl_schedule *schedule2);
106+
__isl_give isl_schedule *isl_schedule_set(
107+
__isl_take isl_schedule *schedule1, __isl_take isl_schedule *schedule2);
108+
__isl_give isl_schedule *isl_schedule_intersect_domain(
109+
__isl_take isl_schedule *schedule, __isl_take isl_union_set *domain);
110+
111+
__isl_give isl_schedule *isl_schedule_reset_user(
112+
__isl_take isl_schedule *schedule);
113+
__isl_give isl_schedule *isl_schedule_align_params(
114+
__isl_take isl_schedule *schedule, __isl_take isl_space *space);
115+
__isl_give isl_schedule *isl_schedule_pullback_union_pw_multi_aff(
116+
__isl_take isl_schedule *schedule,
117+
__isl_take isl_union_pw_multi_aff *upma);
118+
98119
__isl_give isl_band_list *isl_schedule_get_band_forest(
99120
__isl_keep isl_schedule *schedule);
100121

polly/lib/External/isl/include/isl/schedule_node.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ __isl_give isl_schedule_node *isl_schedule_node_copy(
1818
__isl_null isl_schedule_node *isl_schedule_node_free(
1919
__isl_take isl_schedule_node *node);
2020

21+
int isl_schedule_node_is_equal(__isl_keep isl_schedule_node *node1,
22+
__isl_keep isl_schedule_node *node2);
23+
2124
isl_ctx *isl_schedule_node_get_ctx(__isl_keep isl_schedule_node *node);
2225
enum isl_schedule_node_type isl_schedule_node_get_type(
2326
__isl_keep isl_schedule_node *node);
@@ -28,6 +31,9 @@ __isl_give isl_schedule *isl_schedule_node_get_schedule(
2831

2932
int isl_schedule_node_foreach_descendant(__isl_keep isl_schedule_node *node,
3033
int (*fn)(__isl_keep isl_schedule_node *node, void *user), void *user);
34+
int isl_schedule_node_foreach_ancestor_top_down(
35+
__isl_keep isl_schedule_node *node,
36+
int (*fn)(__isl_keep isl_schedule_node *node, void *user), void *user);
3137
__isl_give isl_schedule_node *isl_schedule_node_map_descendant(
3238
__isl_take isl_schedule_node *node,
3339
__isl_give isl_schedule_node *(*fn)(__isl_take isl_schedule_node *node,
@@ -40,11 +46,21 @@ int isl_schedule_node_has_previous_sibling(__isl_keep isl_schedule_node *node);
4046
int isl_schedule_node_has_next_sibling(__isl_keep isl_schedule_node *node);
4147
int isl_schedule_node_n_children(__isl_keep isl_schedule_node *node);
4248
int isl_schedule_node_get_child_position(__isl_keep isl_schedule_node *node);
49+
int isl_schedule_node_get_ancestor_child_position(
50+
__isl_keep isl_schedule_node *node,
51+
__isl_keep isl_schedule_node *ancestor);
4352
__isl_give isl_schedule_node *isl_schedule_node_get_child(
4453
__isl_keep isl_schedule_node *node, int pos);
54+
__isl_give isl_schedule_node *isl_schedule_node_get_shared_ancestor(
55+
__isl_keep isl_schedule_node *node1,
56+
__isl_keep isl_schedule_node *node2);
4557

58+
__isl_give isl_schedule_node *isl_schedule_node_root(
59+
__isl_take isl_schedule_node *node);
4660
__isl_give isl_schedule_node *isl_schedule_node_parent(
4761
__isl_take isl_schedule_node *node);
62+
__isl_give isl_schedule_node *isl_schedule_node_ancestor(
63+
__isl_take isl_schedule_node *node, int generation);
4864
__isl_give isl_schedule_node *isl_schedule_node_child(
4965
__isl_take isl_schedule_node *node, int pos);
5066
__isl_give isl_schedule_node *isl_schedule_node_first_child(
@@ -90,6 +106,7 @@ __isl_give isl_union_set *isl_schedule_node_domain_get_domain(
90106
__isl_give isl_union_set *isl_schedule_node_filter_get_filter(
91107
__isl_keep isl_schedule_node *node);
92108

109+
int isl_schedule_node_get_schedule_depth(__isl_keep isl_schedule_node *node);
93110
__isl_give isl_union_set *isl_schedule_node_get_universe_domain(
94111
__isl_keep isl_schedule_node *node);
95112
__isl_give isl_union_pw_multi_aff *
@@ -112,6 +129,16 @@ __isl_give isl_schedule_node *isl_schedule_node_insert_set(
112129
__isl_take isl_schedule_node *node,
113130
__isl_take isl_union_set_list *filters);
114131

132+
__isl_give isl_schedule_node *isl_schedule_node_cut(
133+
__isl_take isl_schedule_node *node);
134+
__isl_give isl_schedule_node *isl_schedule_node_delete(
135+
__isl_take isl_schedule_node *node);
136+
137+
__isl_give isl_schedule_node *isl_schedule_node_reset_user(
138+
__isl_take isl_schedule_node *node);
139+
__isl_give isl_schedule_node *isl_schedule_node_align_params(
140+
__isl_take isl_schedule_node *node, __isl_take isl_space *space);
141+
115142
__isl_give isl_printer *isl_printer_print_schedule_node(
116143
__isl_take isl_printer *p, __isl_keep isl_schedule_node *node);
117144
void isl_schedule_node_dump(__isl_keep isl_schedule_node *node);

polly/lib/External/isl/isl_aff.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1459,12 +1459,10 @@ static __isl_give isl_aff *merge_divs(__isl_take isl_aff *aff, int a, int b)
14591459
static __isl_give isl_aff *sort_divs(__isl_take isl_aff *aff)
14601460
{
14611461
int i, j, n;
1462-
unsigned off;
14631462

14641463
if (!aff)
14651464
return NULL;
14661465

1467-
off = isl_local_space_offset(aff->ls, isl_dim_div);
14681466
n = isl_aff_dim(aff, isl_dim_div);
14691467
for (i = 1; i < n; ++i) {
14701468
for (j = i - 1; j >= 0; --j) {
@@ -4908,7 +4906,7 @@ static __isl_give isl_pw_multi_aff *pw_multi_aff_from_map_stride(
49084906
map = set;
49094907
else
49104908
map = isl_set_unwrap(set);
4911-
pma = isl_pw_multi_aff_from_map(set);
4909+
pma = isl_pw_multi_aff_from_map(map);
49124910

49134911
if (!is_set) {
49144912
space = isl_pw_multi_aff_get_domain_space(pma);
@@ -6569,13 +6567,12 @@ __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_pw_multi_aff(
65696567
static __isl_give isl_pw_aff *isl_multi_pw_aff_apply_aff_aligned(
65706568
__isl_take isl_multi_pw_aff *mpa, __isl_take isl_aff *aff)
65716569
{
6572-
int i, n_param, n_in, n_div;
6570+
int i, n_in, n_div;
65736571
isl_space *space;
65746572
isl_val *v;
65756573
isl_pw_aff *pa;
65766574
isl_aff *tmp;
65776575

6578-
n_param = isl_aff_dim(aff, isl_dim_param);
65796576
n_in = isl_aff_dim(aff, isl_dim_in);
65806577
n_div = isl_aff_dim(aff, isl_dim_div);
65816578

polly/lib/External/isl/isl_arg.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,6 @@ static void print_default(struct isl_arg *decl, const char *def, int pos)
386386
printf("\n%30s", "");
387387
else
388388
printf("%*s", 30 - pos, "");
389-
pos = 0;
390389
} else {
391390
if (pos + len >= 48)
392391
printf("\n%30s", "");
@@ -456,7 +455,6 @@ static void print_default_flags(struct isl_arg *decl, void *opt, int pos)
456455
printf("\n%30s", "");
457456
else
458457
printf("%*s", 30 - pos, "");
459-
pos = 0;
460458
} else {
461459
if (pos + len >= 48)
462460
printf("\n%30s", "");

polly/lib/External/isl/isl_ast.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,6 @@ int isl_ast_expr_is_equal(__isl_keep isl_ast_expr *expr1,
351351
int equal;
352352
equal = isl_ast_expr_is_equal(expr1->u.op.args[i],
353353
expr2->u.op.args[i]);
354-
return 0;
355354
if (equal < 0 || !equal)
356355
return equal;
357356
}

polly/lib/External/isl/isl_ast_build_expr.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -332,14 +332,12 @@ static __isl_give isl_ast_expr *isl_ast_expr_mod(__isl_keep isl_val *v,
332332
__isl_keep isl_aff *aff, __isl_keep isl_val *d,
333333
__isl_keep isl_ast_build *build)
334334
{
335-
isl_ctx *ctx;
336335
isl_ast_expr *expr;
337336
isl_ast_expr *c;
338337

339338
if (!aff)
340339
return NULL;
341340

342-
ctx = isl_aff_get_ctx(aff);
343341
expr = isl_ast_expr_from_aff(isl_aff_copy(aff), build);
344342

345343
c = isl_ast_expr_from_val(isl_val_copy(d));
@@ -443,7 +441,6 @@ static __isl_give isl_ast_expr *isl_ast_expr_add_term(
443441
static __isl_give isl_ast_expr *isl_ast_expr_add_int(
444442
__isl_take isl_ast_expr *expr, __isl_take isl_val *v)
445443
{
446-
isl_ctx *ctx;
447444
isl_ast_expr *expr_int;
448445

449446
if (!expr || !v)
@@ -454,7 +451,6 @@ static __isl_give isl_ast_expr *isl_ast_expr_add_int(
454451
return expr;
455452
}
456453

457-
ctx = isl_ast_expr_get_ctx(expr);
458454
if (isl_val_is_neg(v) && !ast_expr_is_zero(expr)) {
459455
v = isl_val_neg(v);
460456
expr_int = isl_ast_expr_from_val(v);

polly/lib/External/isl/isl_ast_codegen.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ static int pw_aff_constant_is_negative(__isl_take isl_pw_aff *pa, void *user)
882882
r = isl_pw_aff_foreach_piece(pa, &aff_constant_is_negative, user);
883883
isl_pw_aff_free(pa);
884884

885-
return *neg ? 0 : -1;
885+
return (*neg && r >= 0) ? 0 : -1;
886886
}
887887

888888
/* Does each element in "list" have a negative constant term?
@@ -2571,7 +2571,6 @@ static __isl_give isl_set *do_unroll(struct isl_codegen_domains *domains,
25712571
{
25722572
int i, n;
25732573
int depth;
2574-
isl_ctx *ctx;
25752574
isl_aff *lower;
25762575
isl_multi_aff *expansion;
25772576
isl_basic_map *bmap;
@@ -2581,7 +2580,6 @@ static __isl_give isl_set *do_unroll(struct isl_codegen_domains *domains,
25812580
if (!domain)
25822581
return isl_set_free(class_domain);
25832582

2584-
ctx = isl_set_get_ctx(domain);
25852583
depth = isl_ast_build_get_depth(domains->build);
25862584
build = isl_ast_build_copy(domains->build);
25872585
domain = isl_ast_build_eliminate_inner(build, domain);
@@ -3360,14 +3358,12 @@ static __isl_give isl_ast_graft_list *generate_shift_component(
33603358
isl_ast_graft_list *list;
33613359
int first;
33623360
int depth;
3363-
isl_ctx *ctx;
33643361
isl_val *val;
33653362
isl_multi_val *mv;
33663363
isl_space *space;
33673364
isl_multi_aff *ma, *zero;
33683365
isl_union_map *executed;
33693366

3370-
ctx = isl_ast_build_get_ctx(build);
33713367
depth = isl_ast_build_get_depth(build);
33723368

33733369
first = first_offset(domain, order, n, build);

polly/lib/External/isl/isl_constraint.c

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -669,11 +669,9 @@ __isl_give isl_constraint *isl_constraint_set_coefficient_si(
669669
* In particular, this means that the local spaces of "bset" and
670670
* "constraint" need to be the same.
671671
*
672-
* Since the given constraint may actually be a pointer into the bset,
673-
* we have to be careful not to reorder the constraints as the user
674-
* may be holding on to other constraints from the same bset.
675-
* This should be cleaned up when the internal representation of
676-
* isl_constraint is changed to use isl_aff.
672+
* We manually set ISL_BASIC_SET_FINAL instead of calling
673+
* isl_basic_set_finalize because this function is called by CLooG,
674+
* which does not expect any variables to disappear.
677675
*/
678676
__isl_give isl_basic_set *isl_basic_set_drop_constraint(
679677
__isl_take isl_basic_set *bset, __isl_take isl_constraint *constraint)
@@ -684,6 +682,7 @@ __isl_give isl_basic_set *isl_basic_set_drop_constraint(
684682
unsigned total;
685683
isl_local_space *ls1;
686684
int equal;
685+
int equality;
687686

688687
if (!bset || !constraint)
689688
goto error;
@@ -698,7 +697,12 @@ __isl_give isl_basic_set *isl_basic_set_drop_constraint(
698697
return bset;
699698
}
700699

701-
if (isl_constraint_is_equality(constraint)) {
700+
bset = isl_basic_set_cow(bset);
701+
if (!bset)
702+
goto error;
703+
704+
equality = isl_constraint_is_equality(constraint);
705+
if (equality) {
702706
n = bset->n_eq;
703707
row = bset->eq;
704708
} else {
@@ -707,11 +711,18 @@ __isl_give isl_basic_set *isl_basic_set_drop_constraint(
707711
}
708712

709713
total = isl_constraint_dim(constraint, isl_dim_all);
710-
for (i = 0; i < n; ++i)
711-
if (isl_seq_eq(row[i], constraint->v->el, 1 + total))
712-
isl_seq_clr(row[i], 1 + total);
714+
for (i = 0; i < n; ++i) {
715+
if (!isl_seq_eq(row[i], constraint->v->el, 1 + total))
716+
continue;
717+
if (equality && isl_basic_set_drop_equality(bset, i) < 0)
718+
goto error;
719+
if (!equality && isl_basic_set_drop_inequality(bset, i) < 0)
720+
goto error;
721+
break;
722+
}
713723

714724
isl_constraint_free(constraint);
725+
ISL_F_SET(bset, ISL_BASIC_SET_FINAL);
715726
return bset;
716727
error:
717728
isl_constraint_free(constraint);

polly/lib/External/isl/isl_convex_hull.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,12 +1315,12 @@ static struct isl_basic_set *convex_hull_pair_pointed(
13151315

13161316
if (!bset1 || !bset2)
13171317
goto error;
1318-
ctx = bset1->ctx;
1318+
ctx = isl_basic_set_get_ctx(bset1);
13191319
dir = valid_direction(isl_basic_set_copy(bset1),
13201320
isl_basic_set_copy(bset2));
13211321
if (!dir)
13221322
goto error;
1323-
T = isl_mat_alloc(bset1->ctx, dir->size, dir->size);
1323+
T = isl_mat_alloc(ctx, dir->size, dir->size);
13241324
if (!T)
13251325
goto error;
13261326
isl_seq_cpy(T->row[0], dir->block.data, dir->size);
@@ -1926,14 +1926,12 @@ struct isl_basic_map *isl_map_convex_hull(struct isl_map *map)
19261926
struct isl_basic_set *affine_hull = NULL;
19271927
struct isl_basic_map *convex_hull = NULL;
19281928
struct isl_set *set = NULL;
1929-
struct isl_ctx *ctx;
19301929

19311930
map = isl_map_detect_equalities(map);
19321931
map = isl_map_align_divs(map);
19331932
if (!map)
19341933
goto error;
19351934

1936-
ctx = map->ctx;
19371935
if (map->n == 0) {
19381936
convex_hull = isl_basic_map_empty_like_map(map);
19391937
isl_map_free(map);

0 commit comments

Comments
 (0)