[PATCH] D79004: [mlir][assemblyFormat] Fix bug when using AttrSizedOperandSegments trait with only non-buildable operand types
    Jean-Michel Gorius via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue Apr 28 08:02:01 PDT 2020
    
    
  
Kayjukh added inline comments.
================
Comment at: mlir/tools/mlir-tblgen/OpFormatGen.cpp:744
   if (!buildableTypes.empty()) {
     body << "  Builder &builder = parser.getBuilder();\n";
 
----------------
This could be removed and the next lines adapted as noted in the comment.
================
Comment at: mlir/tools/mlir-tblgen/OpFormatGen.cpp:747
     FmtContext typeBuilderCtx;
     typeBuilderCtx.withBuilder("builder");
     for (auto &it : buildableTypes)
----------------
We should follow what is done in `OperationFormat::genParser` and use `parser.getBuilder()` instead of a potentially fragile local variable declaration.
================
Comment at: mlir/tools/mlir-tblgen/OpFormatGen.cpp:870
+    if (buildableTypes.empty())
+      body << "  Builder &builder = parser.getBuilder();\n";
     body << "  result.addAttribute(\"operand_segment_sizes\", "
----------------
This seems to be a somewhat fragile fix, especially regarding the mirrored declaration of `Builder &builder` in `OperationFormat::genParserTypeResolution`. To reduce the coupling between the functions in this file, I would rather suggest to replace the usages of `builder` with `parser.getBuilder()`.
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79004/new/
https://reviews.llvm.org/D79004
    
    
More information about the llvm-commits
mailing list