[Mlir-commits] [mlir] fa0822a - [mlir][SPIR-V] Fix null deref in SpecConstantOperationOp::verifyRegions (#207328)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Fri Jul 3 07:37:57 PDT 2026


Author: Arseniy Obolenskiy
Date: 2026-07-03T16:37:53+02:00
New Revision: fa0822a9dd7bc50ad61a0b19455ca1d26aafe3d5

URL: https://github.com/llvm/llvm-project/commit/fa0822a9dd7bc50ad61a0b19455ca1d26aafe3d5
DIFF: https://github.com/llvm/llvm-project/commit/fa0822a9dd7bc50ad61a0b19455ca1d26aafe3d5.diff

LOG: [mlir][SPIR-V] Fix null deref in SpecConstantOperationOp::verifyRegions (#207328)

Added: 
    

Modified: 
    mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
    mlir/test/Dialect/SPIRV/IR/structure-ops.mlir

Removed: 
    


################################################################################
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