@@ -2881,6 +2881,13 @@ void InstanceChoiceOp::build(
28812881 portAnnotationsAttr = builder.getArrayAttr (portAnnotations);
28822882 }
28832883
2884+ // Create the domain info attribute.
2885+ ArrayAttr domainInfoAttr = defaultModule.getDomainInfoAttr ();
2886+ if (domainInfoAttr.empty ()) {
2887+ domainInfoAttr = builder.getArrayAttr (SmallVector<Attribute, 16 >(
2888+ resultTypes.size (), builder.getArrayAttr ({})));
2889+ }
2890+
28842891 // Gather the module & case names.
28852892 SmallVector<Attribute> moduleNames, caseNames;
28862893 moduleNames.push_back (SymbolRefAttr::get (defaultModule.getModuleNameAttr ()));
@@ -2891,14 +2898,14 @@ void InstanceChoiceOp::build(
28912898 moduleNames.push_back (SymbolRefAttr::get (caseModule.getModuleNameAttr ()));
28922899 }
28932900
2894- return build (
2895- builder, result, resultTypes, builder.getArrayAttr (moduleNames ),
2896- builder.getArrayAttr (caseNames ), builder. getStringAttr (name ),
2897- NameKindEnumAttr::get (builder. getContext (), nameKind ),
2898- defaultModule. getPortDirectionsAttr (), defaultModule.getPortNamesAttr (),
2899- defaultModule. getDomainInfoAttr (), builder.getArrayAttr (annotations),
2900- portAnnotationsAttr, defaultModule.getLayersAttr (),
2901- innerSym ? hw::InnerSymAttr::get (innerSym) : hw::InnerSymAttr ());
2901+ return build (builder, result, resultTypes, builder. getArrayAttr (moduleNames),
2902+ builder.getArrayAttr (caseNames), builder. getStringAttr (name ),
2903+ NameKindEnumAttr::get ( builder.getContext ( ), nameKind ),
2904+ defaultModule. getPortDirectionsAttr ( ),
2905+ defaultModule.getPortNamesAttr (), domainInfoAttr ,
2906+ builder.getArrayAttr (annotations), portAnnotationsAttr ,
2907+ defaultModule.getLayersAttr (),
2908+ innerSym ? hw::InnerSymAttr::get (innerSym) : hw::InnerSymAttr ());
29022909}
29032910
29042911std::optional<size_t > InstanceChoiceOp::getTargetResultIndex () {
@@ -3024,7 +3031,7 @@ ParseResult InstanceChoiceOp::parse(OpAsmParser &parser,
30243031 }
30253032
30263033 if (parseModulePorts (parser, /* hasSSAIdentifiers=*/ false ,
3027- /* supportsSymbols=*/ false , /* supportsDomains=*/ false ,
3034+ /* supportsSymbols=*/ false , /* supportsDomains=*/ true ,
30283035 entryArgs, portDirections, portNames, portTypes,
30293036 portAnnotations, portSyms, portLocs, domains))
30303037 return failure ();
@@ -3165,10 +3172,9 @@ InstanceChoiceOp::erasePorts(OpBuilder &builder,
31653172 builder, getLoc (), newResultTypes, getModuleNames (), getCaseNames (),
31663173 getName (), getNameKind (),
31673174 direction::packAttribute (getContext (), newPortDirections),
3168- ArrayAttr::get (getContext (), newPortNames),
3169- ArrayAttr::get (getContext (), newPortDomains), getAnnotationsAttr (),
3170- ArrayAttr::get (getContext (), newPortAnnotations), getLayers (),
3171- getInnerSymAttr ());
3175+ ArrayAttr::get (getContext (), newPortNames), newPortDomains,
3176+ getAnnotationsAttr (), ArrayAttr::get (getContext (), newPortAnnotations),
3177+ getLayers (), getInnerSymAttr ());
31723178
31733179 for (unsigned oldIdx = 0 , newIdx = 0 , numOldPorts = getNumResults ();
31743180 oldIdx != numOldPorts; ++oldIdx) {
0 commit comments