Scheduling: Add option to disable schedule_maximise_band_depth

maximise_band_depth does not seem to have any effect for now, but it may help to
increase the amount of tileable loops. We expose the flag to be able to analyze
its effects when looking into individual benchmarks.

llvm-svn: 149266
diff --git a/polly/lib/ScheduleOptimizer.cpp b/polly/lib/ScheduleOptimizer.cpp
index c7f5801..60bd811 100644
--- a/polly/lib/ScheduleOptimizer.cpp
+++ b/polly/lib/ScheduleOptimizer.cpp
@@ -61,6 +61,11 @@
                cl::desc("The fusion strategy to choose (min/max)"),
                cl::Hidden, cl::init("max"));
 
+static cl::opt<std::string>
+MaxizeBandDepth("polly-opt-maximize-bands",
+                cl::desc("Maxize the band depth (yes/no)"),
+                cl::Hidden, cl::init("yes"));
+
 namespace {
 
   class IslScheduleOptimizer : public ScopPass {
@@ -476,9 +481,21 @@
     IslFusionStrategy = ISL_SCHEDULE_FUSE_MAX;
   }
 
+  int IslMaximizeBands;
+
+  if (MaxizeBandDepth == "yes") {
+    IslMaximizeBands = 1;
+  } else if (MaxizeBandDepth == "no") {
+    IslMaximizeBands = 0;
+  } else {
+    errs() << "warning: Option -polly-opt-maximize-bands should either be 'yes'"
+              " or 'no'. Falling back to default: 'yes'\n";
+    IslMaximizeBands = 1;
+  }
+
   isl_options_set_schedule_fuse(S.getIslCtx(), IslFusionStrategy);
   isl_options_set_schedule_max_constant_term(S.getIslCtx(), CONSTANT_BOUND);
-  isl_options_set_schedule_maximize_band_depth(S.getIslCtx(), 1);
+  isl_options_set_schedule_maximize_band_depth(S.getIslCtx(), IslMaximizeBands);
 
   isl_options_set_on_error(S.getIslCtx(), ISL_ON_ERROR_CONTINUE);
   schedule  = isl_union_set_compute_schedule(domain, validity, proximity);