From: Mogball Date: Thu, 2 Dec 2021 21:25:04 +0000 (+0000) Subject: [mlir][ods] fix defgen on empty files X-Git-Tag: upstream/15.0.7~24160 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=75dfeef9adba180480040311ab8beae2f369a1b3;p=platform%2Fupstream%2Fllvm.git [mlir][ods] fix defgen on empty files --- diff --git a/mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp b/mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp index 372b669..8e245fc 100644 --- a/mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp +++ b/mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp @@ -43,9 +43,15 @@ std::string mlir::tblgen::getParameterAccessorName(StringRef name) { static void collectAllDefs(StringRef selectedDialect, std::vector records, SmallVectorImpl &resultDefs) { + // Nothing to do if no defs were found. + if (records.empty()) + return; + auto defs = llvm::map_range( records, [&](const llvm::Record *rec) { return AttrOrTypeDef(rec); }); if (selectedDialect.empty()) { + // If a dialect was not specified, ensure that all found defs belong to the + // same dialect. if (!llvm::is_splat( llvm::map_range(defs, [](auto def) { return def.getDialect(); }))) { llvm::PrintFatalError("defs belonging to more than one dialect. Must " @@ -53,6 +59,7 @@ static void collectAllDefs(StringRef selectedDialect, } resultDefs.assign(defs.begin(), defs.end()); } else { + // Otherwise, generate the defs that belong to the selected dialect. auto dialectDefs = llvm::make_filter_range(defs, [&](auto def) { return def.getDialect().getName().equals(selectedDialect); });