diff --git a/lib/Transform/ScheduleOptimizer.cpp b/lib/Transform/ScheduleOptimizer.cpp
index 5a0ea3b..35a0a4d 100644
--- a/lib/Transform/ScheduleOptimizer.cpp
+++ b/lib/Transform/ScheduleOptimizer.cpp
@@ -96,13 +96,6 @@
                       cl::desc("Maximize the band depth (yes/no)"), cl::Hidden,
                       cl::init("yes"), cl::cat(PollyCategory));
 
-static cl::opt<int>
-    ScheduleComputeOut("polly-schedule-computeout",
-                       cl::desc("Bound the scheduler by maximal amount"
-                                "of computational steps. "),
-                       cl::Hidden, cl::init(300000), cl::ZeroOrMore,
-                       cl::cat(PollyCategory));
-
 static cl::opt<bool>
     GreedyFusion("polly-loopfusion-greedy",
                  cl::desc("Aggressively try to fuse everything"), cl::Hidden,
@@ -867,16 +860,7 @@
     SC = SC.set_proximity(Proximity);
     SC = SC.set_validity(Validity);
     SC = SC.set_coincidence(Validity);
-
-    {
-      IslMaxOperationsGuard MaxOpGuard(Ctx, ScheduleComputeOut);
-      Schedule = SC.compute_schedule();
-
-      if (MaxOpGuard.hasQuotaExceeded())
-        LLVM_DEBUG(
-            dbgs() << "Schedule optimizer calculation exceeds ISL quota\n");
-    }
-
+    Schedule = SC.compute_schedule();
     isl_options_set_on_error(Ctx, OnErrorStatus);
 
     ScopsRescheduled++;
diff --git a/test/ScheduleOptimizer/schedule_computeout.ll b/test/ScheduleOptimizer/schedule_computeout.ll
deleted file mode 100644
index db46ef5..0000000
--- a/test/ScheduleOptimizer/schedule_computeout.ll
+++ /dev/null
@@ -1,94 +0,0 @@
-; RUN: opt -S -polly-optree -polly-delicm  -polly-opt-isl -polly-schedule-computeout=100000 -debug-only="polly-opt-isl" < %s 2>&1 | FileCheck %s
-; Bailout if the computations of schedule compute exceeds the max scheduling quota.
-; Max compute out is initialized to 300000, Here it is set to 100000 for test purpose.
-
-@a = dso_local local_unnamed_addr global ptr null, align 8
-@b = dso_local local_unnamed_addr global ptr null, align 8
-@c = dso_local local_unnamed_addr global ptr null, align 8
-
-define dso_local void @foo(i32 noundef %I, i32 noundef %J, i32 noundef %K1, i32 noundef %K2, i32 noundef %L1, i32 noundef %L2) local_unnamed_addr {
-entry:
-  %j = alloca i32, align 4
-  store volatile i32 0, ptr %j, align 4
-  %j.0.j.0.j.0.54 = load volatile i32, ptr %j, align 4
-  %cmp55 = icmp slt i32 %j.0.j.0.j.0.54, %J
-  br i1 %cmp55, label %for.body.lr.ph, label %for.cond.cleanup
-
-for.body.lr.ph:                                   ; preds = %entry
-  %0 = load ptr, ptr @a, align 8
-  %1 = load ptr, ptr @b, align 8
-  %2 = load ptr, ptr %1, align 8
-  %cmp352 = icmp slt i32 %L1, %L2
-  %cmp750 = icmp slt i32 %K1, %K2
-  %3 = sext i32 %K1 to i64
-  %4 = sext i32 %L1 to i64
-  br label %for.body
-
-for.cond.cleanup:                                 ; preds = %for.cond.cleanup4, %entry
-  ret void
-
-for.body:                                         ; preds = %for.cond.cleanup4, %for.body.lr.ph
-  br i1 %cmp352, label %for.cond6.preheader.preheader, label %for.cond.cleanup4
-
-for.cond6.preheader.preheader:                    ; preds = %for.body
-  %wide.trip.count66 = sext i32 %L2 to i64
-  br label %for.cond6.preheader
-
-for.cond6.preheader:                              ; preds = %for.cond.cleanup8, %for.cond6.preheader.preheader
-  %indvars.iv61 = phi i64 [ %4, %for.cond6.preheader.preheader ], [ %indvars.iv.next62, %for.cond.cleanup8 ]
-  br i1 %cmp750, label %for.cond10.preheader.lr.ph, label %for.cond.cleanup8
-
-for.cond10.preheader.lr.ph:                       ; preds = %for.cond6.preheader
-  %5 = mul nsw i64 %indvars.iv61, 516
-  %6 = mul nsw i64 %indvars.iv61, 516
-  %wide.trip.count = sext i32 %K2 to i64
-  br label %for.cond10.preheader
-
-for.cond.cleanup4:                                ; preds = %for.cond.cleanup8, %for.body
-  %j.0.j.0.j.0.45 = load volatile i32, ptr %j, align 4
-  %inc34 = add nsw i32 %j.0.j.0.j.0.45, 1
-  store volatile i32 %inc34, ptr %j, align 4
-  %j.0.j.0.j.0. = load volatile i32, ptr %j, align 4
-  %cmp = icmp slt i32 %j.0.j.0.j.0., %J
-  br i1 %cmp, label %for.body, label %for.cond.cleanup
-
-for.cond10.preheader:                             ; preds = %for.cond.cleanup12, %for.cond10.preheader.lr.ph
-  %indvars.iv = phi i64 [ %3, %for.cond10.preheader.lr.ph ], [ %indvars.iv.next, %for.cond.cleanup12 ]
-  %7 = getelementptr float, ptr %0, i64 %indvars.iv
-  %arrayidx18 = getelementptr float, ptr %7, i64 %5
-  %8 = load float, ptr %arrayidx18, align 4
-  br label %for.cond14.preheader
-
-for.cond.cleanup8:                                ; preds = %for.cond.cleanup12, %for.cond6.preheader
-  %indvars.iv.next62 = add nsw i64 %indvars.iv61, 1
-  %exitcond67.not = icmp eq i64 %indvars.iv.next62, %wide.trip.count66
-  br i1 %exitcond67.not, label %for.cond.cleanup4, label %for.cond6.preheader
-
-for.cond14.preheader:                             ; preds = %for.cond.cleanup16, %for.cond10.preheader
-  %m.049 = phi i32 [ -2, %for.cond10.preheader ], [ %inc21, %for.cond.cleanup16 ]
-  %sum.048 = phi float [ 0.000000e+00, %for.cond10.preheader ], [ %add19, %for.cond.cleanup16 ]
-  br label %for.body17
-
-for.cond.cleanup12:                               ; preds = %for.cond.cleanup16
-  %9 = getelementptr float, ptr %2, i64 %indvars.iv
-  %arrayidx26 = getelementptr float, ptr %9, i64 %6
-  store float %add19, ptr %arrayidx26, align 4
-  %indvars.iv.next = add nsw i64 %indvars.iv, 1
-  %exitcond60.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
-  br i1 %exitcond60.not, label %for.cond.cleanup8, label %for.cond10.preheader
-
-for.cond.cleanup16:                               ; preds = %for.body17
-  %inc21 = add nsw i32 %m.049, 1
-  %exitcond56.not = icmp eq i32 %inc21, 3
-  br i1 %exitcond56.not, label %for.cond.cleanup12, label %for.cond14.preheader
-
-for.body17:                                       ; preds = %for.body17, %for.cond14.preheader
-  %n.047 = phi i32 [ -2, %for.cond14.preheader ], [ %inc, %for.body17 ]
-  %sum.146 = phi float [ %sum.048, %for.cond14.preheader ], [ %add19, %for.body17 ]
-  %add19 = fadd float %sum.146, %8
-  %inc = add nsw i32 %n.047, 1
-  %exitcond.not = icmp eq i32 %inc, 3
-  br i1 %exitcond.not, label %for.cond.cleanup16, label %for.body17
-}
-
-; CHECK: Schedule optimizer calculation exceeds ISL quota
