[Mlir-commits] [mlir] [mlir] Fix abort on string token in integer dense tensor parsing (PR #231876)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Oct 14 04:46:06 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir

Author: Wijkqwe

<details>
<summary>Changes</summary>

`getIntAttrElements` asserted on `Token::string` because `parseElement()`
accepts string tokens but the integer path only handled `floatliteral`
before asserting. Add an explicit emitError for string tokens, matching
the existing floatliteral handling pattern.

Fixes #<!-- -->228850.



---
Full diff: https://github.com/llvm/llvm-project/pull/231876.diff


2 Files Affected:

- (modified) mlir/lib/AsmParser/AttributeParser.cpp (+4) 
- (modified) mlir/test/IR/invalid-builtin-attributes.mlir (+7) 


``````````diff
diff --git a/mlir/lib/AsmParser/AttributeParser.cpp b/mlir/lib/AsmParser/AttributeParser.cpp
index 7459d8e0c36259..162b56e6db0090 100644
--- a/mlir/lib/AsmParser/AttributeParser.cpp
+++ b/mlir/lib/AsmParser/AttributeParser.cpp
@@ -645,6 +645,10 @@ TensorLiteralParser::getIntAttrElements(SMLoc loc, Type eltTy,
              << "expected integer elements, but parsed floating-point";
     }
 
+    if (token.is(Token::string)) {
+      return p.emitError(tokenLoc)
+            << "expected integer elements, but parsed string";
+    }
     assert(token.isAny(Token::integer, Token::kw_true, Token::kw_false) &&
            "unexpected token type");
     if (token.isAny(Token::kw_true, Token::kw_false)) {
diff --git a/mlir/test/IR/invalid-builtin-attributes.mlir b/mlir/test/IR/invalid-builtin-attributes.mlir
index 1989ce663cbb21..2a64a6b697baa4 100644
--- a/mlir/test/IR/invalid-builtin-attributes.mlir
+++ b/mlir/test/IR/invalid-builtin-attributes.mlir
@@ -693,3 +693,10 @@ func.func @negative_elements_literal_without_signed_repr() {
   %0 = arith.constant dense<[1.000000e+00, -2.000000e+00]> : tensor<2xf8E8M0FNU>
   return
 }
+
+// -----
+
+func.func @string_in_int_tensor() {
+  // expected-error @+1 {{expected integer elements, but parsed string}}
+  "foo"() {bar = dense<["oops"]> : tensor<1xi1>} : () -> ()
+}

``````````

</details>


https://github.com/llvm/llvm-project/pull/231876


More information about the Mlir-commits mailing list