[PATCH] D73244: [mlir] Fix vectorize transform crashing on none-op operand
Ahmed S. Taei via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 22 17:05:16 PST 2020
asaadaldien created this revision.
asaadaldien added a reviewer: nicolasvasilache.
Herald added subscribers: llvm-commits, liufengdb, lucyrfox, mgester, arpith-jacob, antiagainst, shauheen, burmako, jpienaar, rriddle, mehdi_amini.
Herald added a project: LLVM.
Not all operands have a defining operator. without this lowering the following will crash:
func @fill_func(%arg0 : memref<2x2xf32>, %arg1: f32) {
linalg.fill(%arg0, %arg1) : memref<2x2xf32>, f32
return
}
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D73244
Files:
mlir/lib/Transforms/Vectorize.cpp
Index: mlir/lib/Transforms/Vectorize.cpp
===================================================================
--- mlir/lib/Transforms/Vectorize.cpp
+++ mlir/lib/Transforms/Vectorize.cpp
@@ -1003,7 +1003,10 @@
return nullptr;
}
// 3. vectorize constant.
- if (auto constant = dyn_cast<ConstantOp>(operand.getDefiningOp())) {
+ auto operandOp = operand.getDefiningOp();
+ if (!operandOp)
+ return nullptr;
+ if (auto constant = dyn_cast<ConstantOp>(operandOp)) {
return vectorizeConstant(
op, constant,
VectorType::get(state->strategy->vectorSizes, operand.getType()));
@@ -1037,6 +1040,8 @@
auto memRef = store.getMemRef();
auto value = store.getValueToStore();
auto vectorValue = vectorizeOperand(value, opInst, state);
+ if (!vectorValue)
+ return nullptr;
ValueRange mapOperands = store.getMapOperands();
SmallVector<Value, 8> indices;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73244.239740.patch
Type: text/x-patch
Size: 913 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200123/4f8069aa/attachment.bin>
More information about the llvm-commits
mailing list