[Mlir-commits] [mlir] d9e0cab - [mlir][tblgen] Fix crash in `-gen-enum-(decls|defs)` when `EnumAttrInfo` is not defined

Markus Böck llvmlistbot at llvm.org
Fri Oct 7 00:59:40 PDT 2022


Author: Markus Böck
Date: 2022-10-07T09:59:29+02:00
New Revision: d9e0cab82ca31dae9847f4c414a154654bfe2af5

URL: https://github.com/llvm/llvm-project/commit/d9e0cab82ca31dae9847f4c414a154654bfe2af5
DIFF: https://github.com/llvm/llvm-project/commit/d9e0cab82ca31dae9847f4c414a154654bfe2af5.diff

LOG: [mlir][tblgen] Fix crash in `-gen-enum-(decls|defs)` when `EnumAttrInfo` is not defined

This should instead simply produce an empty file instead of crashing and causing a build to fail. This allows one to be more lazy in cmake code and just always generate the files for enum attributes, even if none are ever defined in the dialect.

Differential Revision: https://reviews.llvm.org/D135355

Added: 
    mlir/test/mlir-tblgen/enums-gen-empty.td

Modified: 
    mlir/tools/mlir-tblgen/EnumsGen.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/test/mlir-tblgen/enums-gen-empty.td b/mlir/test/mlir-tblgen/enums-gen-empty.td
new file mode 100644
index 0000000000000..88777d0e112e9
--- /dev/null
+++ b/mlir/test/mlir-tblgen/enums-gen-empty.td
@@ -0,0 +1,2 @@
+// RUN: mlir-tblgen -gen-enum-decls -I %S/../../include %s
+// RUN: mlir-tblgen -gen-enum-defs -I %S/../../include %s

diff  --git a/mlir/tools/mlir-tblgen/EnumsGen.cpp b/mlir/tools/mlir-tblgen/EnumsGen.cpp
index a17e927bdbf6f..0a697b0798552 100644
--- a/mlir/tools/mlir-tblgen/EnumsGen.cpp
+++ b/mlir/tools/mlir-tblgen/EnumsGen.cpp
@@ -536,7 +536,7 @@ class {1} : public ::mlir::{2} {
 static bool emitEnumDecls(const RecordKeeper &recordKeeper, raw_ostream &os) {
   llvm::emitSourceFileHeader("Enum Utility Declarations", os);
 
-  auto defs = recordKeeper.getAllDerivedDefinitions("EnumAttrInfo");
+  auto defs = recordKeeper.getAllDerivedDefinitionsIfDefined("EnumAttrInfo");
   for (const auto *def : defs)
     emitEnumDecl(*def, os);
 
@@ -574,7 +574,7 @@ static void emitEnumDef(const Record &enumDef, raw_ostream &os) {
 static bool emitEnumDefs(const RecordKeeper &recordKeeper, raw_ostream &os) {
   llvm::emitSourceFileHeader("Enum Utility Definitions", os);
 
-  auto defs = recordKeeper.getAllDerivedDefinitions("EnumAttrInfo");
+  auto defs = recordKeeper.getAllDerivedDefinitionsIfDefined("EnumAttrInfo");
   for (const auto *def : defs)
     emitEnumDef(*def, os);
 


        


More information about the Mlir-commits mailing list