[Mlir-commits] [mlir] [mlir] Fix possible null dereference during error logging in EmitC (PR #157456)

Daniel Kuts llvmlistbot at llvm.org
Tue Sep 9 01:44:46 PDT 2025


https://github.com/apach301 updated https://github.com/llvm/llvm-project/pull/157456

>From 5b131107f618911f5e08deea0edbf919d0a94c2b Mon Sep 17 00:00:00 2001
From: Daniil Kutz <kutz at ispras.ru>
Date: Mon, 8 Sep 2025 16:22:26 +0300
Subject: [PATCH 1/2] [mlir] Fix possible null dereference during error logging
 in Dialect/EmitC

---
 mlir/lib/Dialect/EmitC/IR/EmitC.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/mlir/lib/Dialect/EmitC/IR/EmitC.cpp b/mlir/lib/Dialect/EmitC/IR/EmitC.cpp
index a73470cdf76c5..6b88e2c525d07 100644
--- a/mlir/lib/Dialect/EmitC/IR/EmitC.cpp
+++ b/mlir/lib/Dialect/EmitC/IR/EmitC.cpp
@@ -1320,7 +1320,11 @@ GetGlobalOp::verifySymbolUses(SymbolTableCollection &symbolTable) {
 
   // global has non-array type
   auto lvalueType = dyn_cast<LValueType>(resultType);
-  if (!lvalueType || lvalueType.getValueType() != globalType)
+  if (!lvalueType)
+    return emitOpError("on non-array type result type is not defined "
+                       "for the global @")
+           << getName();
+  if (lvalueType.getValueType() != globalType)
     return emitOpError("on non-array type expects result inner type ")
            << lvalueType.getValueType() << " to match type " << globalType
            << " of the global @" << getName();

>From 2cea9f4b95abde7866b047244f8104ac26cf7607 Mon Sep 17 00:00:00 2001
From: Daniil Kutz <kutz at ispras.ru>
Date: Tue, 9 Sep 2025 11:44:21 +0300
Subject: [PATCH 2/2] Improve error message

---
 mlir/lib/Dialect/EmitC/IR/EmitC.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mlir/lib/Dialect/EmitC/IR/EmitC.cpp b/mlir/lib/Dialect/EmitC/IR/EmitC.cpp
index 6b88e2c525d07..5c8564bca6f86 100644
--- a/mlir/lib/Dialect/EmitC/IR/EmitC.cpp
+++ b/mlir/lib/Dialect/EmitC/IR/EmitC.cpp
@@ -1321,8 +1321,8 @@ GetGlobalOp::verifySymbolUses(SymbolTableCollection &symbolTable) {
   // global has non-array type
   auto lvalueType = dyn_cast<LValueType>(resultType);
   if (!lvalueType)
-    return emitOpError("on non-array type result type is not defined "
-                       "for the global @")
+    return emitOpError("on non-array type expects result type to be an "
+                       "lvalue type for the global @")
            << getName();
   if (lvalueType.getValueType() != globalType)
     return emitOpError("on non-array type expects result inner type ")



More information about the Mlir-commits mailing list