declare isl_pw_multi_aff_project_domain_on_params
[platform/upstream/isl.git] / isl_flow.c
index 6367a26..1a22094 100644 (file)
@@ -17,7 +17,7 @@
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/flow.h>
-#include <isl_qsort.h>
+#include <isl_sort.h>
 
 enum isl_restriction_type {
        isl_restriction_type_empty,
@@ -227,17 +227,18 @@ error:
 
 /* Free the given isl_access_info structure.
  */
-void isl_access_info_free(__isl_take isl_access_info *acc)
+void *isl_access_info_free(__isl_take isl_access_info *acc)
 {
        int i;
 
        if (!acc)
-               return;
+               return NULL;
        isl_map_free(acc->domain_map);
        isl_map_free(acc->sink.map);
        for (i = 0; i < acc->n_must + acc->n_may; ++i)
                isl_map_free(acc->source[i].map);
        free(acc);
+       return NULL;
 }
 
 isl_ctx *isl_access_info_get_ctx(__isl_keep isl_access_info *acc)
@@ -339,8 +340,9 @@ static __isl_give isl_access_info *isl_access_info_sort_sources(
        if (acc->n_must <= 1)
                return acc;
 
-       isl_quicksort(acc->source, acc->n_must, sizeof(struct isl_labeled_map),
-               access_sort_cmp, acc);
+       if (isl_sort(acc->source, acc->n_must, sizeof(struct isl_labeled_map),
+                   access_sort_cmp, acc) < 0)
+               return isl_access_info_free(acc);
 
        return acc;
 }