[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