[polly] [Polly] Add null pointer check before size retrieval (PR #174309)
Karthika Devi C via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 12 01:16:24 PST 2026
https://github.com/kartcq updated https://github.com/llvm/llvm-project/pull/174309
>From 4f41bb733f4cfc8a04c84d5cbbd078a637e605a8 Mon Sep 17 00:00:00 2001
From: Karthika Devi C <quic_kartc at quicinc.com>
Date: Sat, 3 Jan 2026 22:01:17 -0800
Subject: [PATCH 1/2] [Polly] Add null pointer check before size retrieval
This patch avoids assertion failures by ensuring a null pointer check
is performed before accessing the object's size.
Note: The corresponding test case remains too large even after reduction,
so it has not been included in this patch.
Fixes #174147
Change-Id: Id7dcb28cd870ef79f49d9228e67ef246ced1c4ed
---
polly/lib/Analysis/ScopBuilder.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp
index 0f96c89232499..d1081c1bb3727 100644
--- a/polly/lib/Analysis/ScopBuilder.cpp
+++ b/polly/lib/Analysis/ScopBuilder.cpp
@@ -3250,7 +3250,11 @@ static bool buildMinMaxAccess(isl::set Set,
Set = Set.remove_divs();
polly::simplify(Set);
- if (unsignedFromIslSize(Set.n_basic_set()) > RunTimeChecksMaxAccessDisjuncts)
+ unsigned SetSize = 0;
+ if (!Set.is_null())
+ SetSize = unsignedFromIslSize(Set.n_basic_set());
+
+ if (SetSize > RunTimeChecksMaxAccessDisjuncts)
Set = Set.simple_hull();
// Restrict the number of parameters involved in the access as the lexmin/
>From ad0e57456d2df08b0a5071f36007ea9557c95f9c Mon Sep 17 00:00:00 2001
From: Karthika Devi C <quic_kartc at quicinc.com>
Date: Mon, 12 Jan 2026 14:46:16 +0530
Subject: [PATCH 2/2] Update ScopBuilder.cpp
---
polly/lib/Analysis/ScopBuilder.cpp | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp
index d1081c1bb3727..1ea9a554f761a 100644
--- a/polly/lib/Analysis/ScopBuilder.cpp
+++ b/polly/lib/Analysis/ScopBuilder.cpp
@@ -3250,11 +3250,10 @@ static bool buildMinMaxAccess(isl::set Set,
Set = Set.remove_divs();
polly::simplify(Set);
- unsigned SetSize = 0;
- if (!Set.is_null())
- SetSize = unsignedFromIslSize(Set.n_basic_set());
+ if (Set.is_null())
+ return false;
- if (SetSize > RunTimeChecksMaxAccessDisjuncts)
+ if (unsignedFromIslSize(Set.n_basic_set()) > RunTimeChecksMaxAccessDisjuncts)
Set = Set.simple_hull();
// Restrict the number of parameters involved in the access as the lexmin/
More information about the llvm-commits
mailing list