[SLP] Strengthen internal asserts about scheduled node state [NFC]
authorPhilip Reames <listmail@philipreames.com>
Fri, 4 Feb 2022 20:21:53 +0000 (12:21 -0800)
committerPhilip Reames <listmail@philipreames.com>
Fri, 4 Feb 2022 20:22:52 +0000 (12:22 -0800)
All members of a scheduled bundle must have valid dependencies, with no unscheduled ones, and only the lead element gets marked scheduled.

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

index ef8b770aeb2feb1be75b9bd2cc4d570a42eb3852..7370144a582a590f60f9efd4fef555e40131aeb8 100644 (file)
@@ -2471,9 +2471,16 @@ private:
       }
 
       if (IsScheduled) {
-        assert(isSchedulingEntity() && hasValidDependencies() &&
-               UnscheduledDeps == 0 &&
-               "unexpected scheduled state");
+        assert(isSchedulingEntity() &&
+                "unexpected scheduled state");
+        for (const ScheduleData *BundleMember = this; BundleMember;
+             BundleMember = BundleMember->NextInBundle) {
+          assert(BundleMember->hasValidDependencies() &&
+                 BundleMember->UnscheduledDeps == 0 &&
+                 "unexpected scheduled state");
+          assert((BundleMember == this || !BundleMember->IsScheduled) &&
+                 "only bundle is marked scheduled");
+        }
       }
     }