[llvm] [DA] Simplify runtime predicate collection and extend to all dependence tests (PR #157523)
Sebastian Pop via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 9 08:21:25 PDT 2025
================
@@ -3570,6 +3570,37 @@ SCEVUnionPredicate DependenceInfo::getRuntimeAssumptions() const {
return SCEVUnionPredicate(Assumptions, *SE);
}
+// getNonRedundantAssumptions - Remove redundant assumptions from the collection
+// and return a SCEVUnionPredicate with the unique assumptions. This ensures
+// that each assumption is only present once and that stronger assumptions imply
+// weaker ones, avoiding unnecessary runtime checks.
+SCEVUnionPredicate DependenceInfo::getNonRedundantAssumptions() const {
+ SmallVector<const SCEVPredicate *, 4> UniqueAssumptions;
+
+ for (const SCEVPredicate *P : Assumptions) {
+ bool Implied = false;
+ for (const SCEVPredicate *Existing : UniqueAssumptions) {
+ if (Existing->implies(P, *SE)) {
+ Implied = true;
+ break;
+ }
+ }
+ if (!Implied) {
+ auto I = UniqueAssumptions.begin();
+ while (I != UniqueAssumptions.end()) {
+ if (P->implies(*I, *SE)) {
+ I = UniqueAssumptions.erase(I);
+ } else {
+ ++I;
+ }
+ }
+ UniqueAssumptions.push_back(P);
+ }
+ }
+
+ return SCEVUnionPredicate(UniqueAssumptions, *SE);
----------------
sebpop wrote:
You are right. Thanks for pointing this out.
I removed the vector of predicates and only rely on SCEVUnionPredicate to collect constraints in minimal non-redundant form.
https://github.com/llvm/llvm-project/pull/157523
More information about the llvm-commits
mailing list