[Mlir-commits] [mlir] [mlir][SPIR-v] Fix null deref in SpecConstantOperationOp::verifyRegions (PR #207328)
Arseniy Obolenskiy
llvmlistbot at llvm.org
Thu Jul 2 23:20:56 PDT 2026
https://github.com/aobolensk created https://github.com/llvm/llvm-project/pull/207328
None
>From 59e39b767b7e778c2aff4fb36554ae7675d8c83d Mon Sep 17 00:00:00 2001
From: Arseniy Obolenskiy <arseniy.obolenskiy at amd.com>
Date: Fri, 3 Jul 2026 08:20:16 +0200
Subject: [PATCH] [mlir][SPIR-v] Fix null deref in
SpecConstantOperationOp::verifyRegions
---
mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp | 5 +++--
mlir/test/Dialect/SPIRV/IR/structure-ops.mlir | 11 +++++++++++
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
index c0393888af5c3..99bc3913c56c6 100644
--- a/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
+++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
@@ -2083,8 +2083,9 @@ LogicalResult spirv::SpecConstantOperationOp::verifyRegions() {
return emitOpError("invalid enclosed op");
for (auto operand : enclosedOp.getOperands())
- if (!isa<spirv::ConstantOp, spirv::ReferenceOfOp,
- spirv::SpecConstantOperationOp>(operand.getDefiningOp()))
+ if (!isa_and_present<spirv::ConstantOp, spirv::ReferenceOfOp,
+ spirv::SpecConstantOperationOp>(
+ operand.getDefiningOp()))
return emitOpError(
"invalid operand, must be defined by a constant operation");
diff --git a/mlir/test/Dialect/SPIRV/IR/structure-ops.mlir b/mlir/test/Dialect/SPIRV/IR/structure-ops.mlir
index c0b73b926c764..37a9e97106de9 100644
--- a/mlir/test/Dialect/SPIRV/IR/structure-ops.mlir
+++ b/mlir/test/Dialect/SPIRV/IR/structure-ops.mlir
@@ -1220,3 +1220,14 @@ spirv.module Logical GLSL450 {
spirv.Return
}
}
+
+// -----
+
+spirv.module Logical GLSL450 {
+ spirv.func @foo(%arg0: i32) -> () "None" {
+ // expected-error @+1 {{invalid operand, must be defined by a constant operation}}
+ %0 = spirv.SpecConstantOperation wraps "spirv.IAdd"(%arg0, %arg0) : (i32, i32) -> i32
+
+ spirv.Return
+ }
+}
More information about the Mlir-commits
mailing list