#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
-#include "ggc.h"
-#include "tree.h"
-#include "rtl.h"
-#include "output.h"
-#include "basic-block.h"
-#include "diagnostic.h"
#include "tree-flow.h"
-#include "toplev.h"
#include "tree-dump.h"
-#include "timevar.h"
#include "cfgloop.h"
#include "tree-chrec.h"
#include "tree-data-ref.h"
#include "tree-scalar-evolution.h"
-#include "tree-pass.h"
-#include "domwalk.h"
-#include "value-prof.h"
-#include "pointer-set.h"
-#include "gimple.h"
-#include "params.h"
+#include "sese.h"
#ifdef HAVE_cloog
#include "ppl_c.h"
-#include "sese.h"
#include "graphite-ppl.h"
-#include "graphite.h"
#include "graphite-poly.h"
/* The loop flattening pass transforms loop nests into a single loop,
ppl_delete_Linear_Expression (expr);
/* Remove inner loop and the static schedule of its body. */
- ds = XNEWVEC (ppl_dimension_type, 2);
- ds[0] = inner_dim;
- ds[1] = inner_dim + 1;
- ppl_Polyhedron_remove_space_dimensions (poly, ds, 2);
- PBB_NB_SCATTERING_TRANSFORM (pbb) -= 2;
- free (ds);
+ /* FIXME: As long as we use PPL we are not able to remove the old
+ scattering dimensions. The reason is that these dimensions are not
+ entirely unused. They are not necessary as part of the scheduling
+ vector, as the earlier dimensions already unambiguously define the
+ execution time, however they may still be needed to carry modulo
+ constraints as introduced e.g. by strip mining. The correct solution
+ would be to project these dimensions out of the scattering polyhedra.
+ In case they are still required to carry modulo constraints they should be kept
+ internally as existentially quantified dimensions. PPL does only support
+ projection of rational polyhedra, however in this case we need an integer
+ projection. With isl this will be trivial to implement. For now we just
+ leave the dimensions. This is a little ugly, but should be correct. */
+ if (0) {
+ ds = XNEWVEC (ppl_dimension_type, 2);
+ ds[0] = inner_dim;
+ ds[1] = inner_dim + 1;
+ ppl_Polyhedron_remove_space_dimensions (poly, ds, 2);
+ PBB_NB_SCATTERING_TRANSFORM (pbb) -= 2;
+ free (ds);
+ }
}
mpz_clear (x);
if (LST_LOOP_P (l))
{
res |= lst_flatten_loop (l, zero);
- remove_unused_scattering_dimensions (l);
+
+ /* FIXME: As long as we use PPL we are not able to remove the old
+ scattering dimensions. The reason is that these dimensions are not
+ entirely unused. They are not necessary as part of the scheduling
+ vector, as the earlier dimensions already unambiguously define the
+ execution time, however they may still be needed to carry modulo
+ constraints as introduced e.g. by strip mining. The correct solution
+ would be to project these dimensions out of the scattering polyhedra.
+ In case they are still required to carry modulo constraints they should be kept
+ internally as existentially quantified dimensions. PPL does only support
+ projection of rational polyhedra, however in this case we need an integer
+ projection. With isl this will be trivial to implement. For now we just
+ leave the dimensions. This is a little ugly, but should be correct. */
+ if (0)
+ remove_unused_scattering_dimensions (l);
}
lst_update_scattering (lst);