diff options
| author | Tobias Grosser <tobias@grosser.es> | 2018-02-20 07:26:42 +0000 |
|---|---|---|
| committer | Tobias Grosser <tobias@grosser.es> | 2018-02-20 07:26:42 +0000 |
| commit | fa8079d0dc1b9fbca201b92f30d3c97386c75114 (patch) | |
| tree | 8163f9c4eb97308b4c7a8a1777fdc9aac3c789be /polly/lib/External/isl/isl_schedule_constraints.c | |
| parent | 85476dc45ad1216e533385964b9ce191968c316f (diff) | |
| download | bcm5719-llvm-fa8079d0dc1b9fbca201b92f30d3c97386c75114.tar.gz bcm5719-llvm-fa8079d0dc1b9fbca201b92f30d3c97386c75114.zip | |
Update isl to isl-0.18-1047-g4a20ef8
This update:
- Removes several deprecated functions (e.g., isl_band).
- Improves the pretty-printing of sets by detecting modulos and "false"
equalities.
- Minor improvements to coalescing and increased robustness of the isl
scheduler.
This update does not yet include isl commit isl-0.18-90-gd00cb45
(isl_pw_*_alloc: add missing check for compatible spaces, Wed Sep 6 12:18:04
2017 +0200), as this additional check is too tight and unfortunately causes
two test case failures in Polly. A patch has been submitted to isl and will be
included in the next isl update for Polly.
llvm-svn: 325557
Diffstat (limited to 'polly/lib/External/isl/isl_schedule_constraints.c')
| -rw-r--r-- | polly/lib/External/isl/isl_schedule_constraints.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/polly/lib/External/isl/isl_schedule_constraints.c b/polly/lib/External/isl/isl_schedule_constraints.c index af7ca294bf4..13e8e5f0265 100644 --- a/polly/lib/External/isl/isl_schedule_constraints.c +++ b/polly/lib/External/isl/isl_schedule_constraints.c @@ -10,6 +10,7 @@ #include <isl_schedule_constraints.h> #include <isl/schedule.h> +#include <isl/space.h> #include <isl/set.h> #include <isl/map.h> #include <isl/union_set.h> @@ -479,10 +480,21 @@ static char *key_str[] = { }; /* Print a key, value pair for the edge of type "type" in "sc" to "p". + * + * If the edge relation is empty, then it is not printed since + * an empty relation is the default value. */ static __isl_give isl_printer *print_constraint(__isl_take isl_printer *p, __isl_keep isl_schedule_constraints *sc, enum isl_edge_type type) { + isl_bool empty; + + empty = isl_union_map_plain_is_empty(sc->constraint[type]); + if (empty < 0) + return isl_printer_free(p); + if (empty) + return p; + p = isl_printer_print_str(p, key_str[type]); p = isl_printer_yaml_next(p); p = isl_printer_print_union_map(p, sc->constraint[type]); @@ -494,10 +506,14 @@ static __isl_give isl_printer *print_constraint(__isl_take isl_printer *p, /* Print "sc" to "p" * * In particular, print the isl_schedule_constraints object as a YAML document. + * Fields with values that are (obviously) equal to their default values + * are not printed. */ __isl_give isl_printer *isl_printer_print_schedule_constraints( __isl_take isl_printer *p, __isl_keep isl_schedule_constraints *sc) { + isl_bool universe; + if (!sc) return isl_printer_free(p); @@ -506,10 +522,15 @@ __isl_give isl_printer *isl_printer_print_schedule_constraints( p = isl_printer_yaml_next(p); p = isl_printer_print_union_set(p, sc->domain); p = isl_printer_yaml_next(p); - p = isl_printer_print_str(p, key_str[isl_sc_key_context]); - p = isl_printer_yaml_next(p); - p = isl_printer_print_set(p, sc->context); - p = isl_printer_yaml_next(p); + universe = isl_set_plain_is_universe(sc->context); + if (universe < 0) + return isl_printer_free(p); + if (!universe) { + p = isl_printer_print_str(p, key_str[isl_sc_key_context]); + p = isl_printer_yaml_next(p); + p = isl_printer_print_set(p, sc->context); + p = isl_printer_yaml_next(p); + } p = print_constraint(p, sc, isl_edge_validity); p = print_constraint(p, sc, isl_edge_proximity); p = print_constraint(p, sc, isl_edge_coincidence); @@ -591,7 +612,11 @@ __isl_give isl_schedule_constraints *isl_stream_read_schedule_constraints( if (!sc) return NULL; break; - default: + case isl_sc_key_validity: + case isl_sc_key_coincidence: + case isl_sc_key_condition: + case isl_sc_key_conditional_validity: + case isl_sc_key_proximity: constraints = read_union_map(s); sc = isl_schedule_constraints_set(sc, key, constraints); if (!sc) |

