From 96da738dc516e8a183c3a6ac7091ab2da7ce5732 Mon Sep 17 00:00:00 2001 From: Jeff Niu Date: Fri, 12 Aug 2022 21:32:15 -0400 Subject: [PATCH] [mlir] Remove colon from empty dense array syntax E.g. `array` -> `array` Reviewed By: rriddle, jpienaar Differential Revision: https://reviews.llvm.org/D131823 --- mlir/include/mlir/IR/BuiltinAttributes.td | 2 +- mlir/lib/AsmParser/AttributeParser.cpp | 10 +++++----- mlir/lib/IR/AsmPrinter.cpp | 4 ++-- mlir/test/IR/attribute.mlir | 28 ++++++++++++++-------------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/mlir/include/mlir/IR/BuiltinAttributes.td b/mlir/include/mlir/IR/BuiltinAttributes.td index 293a7b9..467a043 100644 --- a/mlir/include/mlir/IR/BuiltinAttributes.td +++ b/mlir/include/mlir/IR/BuiltinAttributes.td @@ -176,7 +176,7 @@ def Builtin_DenseArrayBase : Builtin_Attr< Examples: ```mlir - array + array array array ``` diff --git a/mlir/lib/AsmParser/AttributeParser.cpp b/mlir/lib/AsmParser/AttributeParser.cpp index 8176249..8e7a83a 100644 --- a/mlir/lib/AsmParser/AttributeParser.cpp +++ b/mlir/lib/AsmParser/AttributeParser.cpp @@ -838,16 +838,16 @@ public: Attribute Parser::parseDenseArrayAttr(Type type) { consumeToken(Token::kw_array); SMLoc typeLoc = getToken().getLoc(); - if (parseToken(Token::less, "expected '<' after 'array'")) - return {}; - if (!type && - (!(type = parseType()) || - parseToken(Token::colon, "expected ':' after dense array type"))) + if (parseToken(Token::less, "expected '<' after 'array'") || + (!type && !(type = parseType()))) return {}; CustomAsmParser parser(*this); Attribute result; // Check for empty list. bool isEmptyList = getToken().is(Token::greater); + if (!isEmptyList && + parseToken(Token::colon, "expected ':' after dense array type")) + return {}; if (auto intType = type.dyn_cast()) { switch (type.getIntOrFloatBitWidth()) { diff --git a/mlir/lib/IR/AsmPrinter.cpp b/mlir/lib/IR/AsmPrinter.cpp index 4e04e66..009ce07 100644 --- a/mlir/lib/IR/AsmPrinter.cpp +++ b/mlir/lib/IR/AsmPrinter.cpp @@ -1860,9 +1860,9 @@ void AsmPrinter::Impl::printAttribute(Attribute attr, } } else if (auto denseArrayAttr = attr.dyn_cast()) { typeElision = AttrTypeElision::Must; - os << "array<" << denseArrayAttr.getType().getElementType() << ":"; + os << "array<" << denseArrayAttr.getType().getElementType(); if (denseArrayAttr.size()) - os << " "; + os << ": "; denseArrayAttr.printWithoutBraces(os); os << ">"; } else if (auto resourceAttr = attr.dyn_cast()) { diff --git a/mlir/test/IR/attribute.mlir b/mlir/test/IR/attribute.mlir index 14c9002..cf2d533 100644 --- a/mlir/test/IR/attribute.mlir +++ b/mlir/test/IR/attribute.mlir @@ -522,20 +522,20 @@ func.func @simple_scalar_example() { // CHECK-LABEL: func @dense_array_attr func.func @dense_array_attr() attributes { -// CHECK-SAME: emptyf32attr = array, - emptyf32attr = array, -// CHECK-SAME: emptyf64attr = array, - emptyf64attr = array, -// CHECK-SAME: emptyi16attr = array, - emptyi16attr = array, -// CHECK-SAME: emptyi1attr = array, - emptyi1attr = array, -// CHECK-SAME: emptyi32attr = array, - emptyi32attr = array, -// CHECK-SAME: emptyi64attr = array, - emptyi64attr = array, -// CHECK-SAME: emptyi8attr = array, - emptyi8attr = array, +// CHECK-SAME: emptyf32attr = array, + emptyf32attr = array, +// CHECK-SAME: emptyf64attr = array, + emptyf64attr = array, +// CHECK-SAME: emptyi16attr = array, + emptyi16attr = array, +// CHECK-SAME: emptyi1attr = array, + emptyi1attr = array, +// CHECK-SAME: emptyi32attr = array, + emptyi32attr = array, +// CHECK-SAME: emptyi64attr = array, + emptyi64attr = array, +// CHECK-SAME: emptyi8attr = array, + emptyi8attr = array, // CHECK-SAME: f32attr = array, f32attr = array, // CHECK-SAME: f64attr = array, -- 2.7.4