[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