forked from OSchip/llvm-project
[mlir][Parser] Fix crash in DenseElementsAttr parser when no elements are parsed
This fixes a crash when no elements are parsed, but the type expects at least one. Fixes PR#47763 Differential Revision: https://reviews.llvm.org/D92982
This commit is contained in:
parent
61a038f852
commit
75eca67c1c
|
@ -531,6 +531,13 @@ DenseElementsAttr TensorLiteralParser::getAttr(llvm::SMLoc loc,
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
// Handle the case where no elements were parsed.
|
||||
if (!hexStorage.hasValue() && storage.empty() && type.getNumElements()) {
|
||||
p.emitError(loc) << "parsed zero elements, but type (" << type
|
||||
<< ") expected at least 1";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Handle complex types in the specific element type cases below.
|
||||
bool isComplex = false;
|
||||
if (ComplexType complexTy = eltType.dyn_cast<ComplexType>()) {
|
||||
|
|
|
@ -687,6 +687,11 @@ func @elementsattr_toolarge1() -> () {
|
|||
|
||||
// -----
|
||||
|
||||
// expected-error@+1 {{parsed zero elements, but type ('tensor<i64>') expected at least 1}}
|
||||
#attr = dense<> : tensor<i64>
|
||||
|
||||
// -----
|
||||
|
||||
func @elementsattr_toolarge2() -> () {
|
||||
^bb0:
|
||||
"foo"(){bar = dense<[-777]> : tensor<1xi8>} : () -> () // expected-error {{integer constant out of range}}
|
||||
|
|
Loading…
Reference in New Issue