From c5c69cd6a871751b12d11a7d24b9d5e9681f08bf Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 4 Oct 2019 20:08:05 -0700 Subject: [PATCH] [spirv] Allow return ops to be in control flow ops Use `getParentOfType()` instead of `cast(getParentOp())` to avoid crash when return ops are used inside spv.selection/spv.loop. PiperOrigin-RevId: 273006041 --- third_party/mlir/lib/Dialect/SPIRV/SPIRVOps.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/mlir/lib/Dialect/SPIRV/SPIRVOps.cpp b/third_party/mlir/lib/Dialect/SPIRV/SPIRVOps.cpp index 800771ccfe3..0b558bf4d1d 100644 --- a/third_party/mlir/lib/Dialect/SPIRV/SPIRVOps.cpp +++ b/third_party/mlir/lib/Dialect/SPIRV/SPIRVOps.cpp @@ -1745,7 +1745,7 @@ static LogicalResult verify(spirv::ReferenceOfOp referenceOfOp) { //===----------------------------------------------------------------------===// static LogicalResult verify(spirv::ReturnOp returnOp) { - auto funcOp = cast(returnOp.getParentOp()); + auto funcOp = returnOp.getParentOfType(); auto numOutputs = funcOp.getType().getNumResults(); if (numOutputs != 0) return returnOp.emitOpError("cannot be used in functions returning value") @@ -1774,7 +1774,7 @@ static void print(spirv::ReturnValueOp retValOp, OpAsmPrinter &printer) { } static LogicalResult verify(spirv::ReturnValueOp retValOp) { - auto funcOp = cast(retValOp.getParentOp()); + auto funcOp = retValOp.getParentOfType(); auto numFnResults = funcOp.getType().getNumResults(); if (numFnResults != 1) return retValOp.emitOpError(