@@ -373,12 +373,11 @@ InstanceSymbol::InstanceSymbol(Compilation& compilation, std::string_view name,
373373InstanceSymbol& InstanceSymbol::createDefault (Compilation& comp, const DefinitionSymbol& definition,
374374 const HierarchyOverrideNode* hierarchyOverrideNode,
375375 const ConfigBlockSymbol* configBlock,
376- const ConfigRule* configRule,
377- SourceLocation locationOverride) {
378- auto loc = locationOverride ? locationOverride : definition.location ;
379- auto & body = InstanceBodySymbol::fromDefinition (comp, definition, loc, InstanceFlags::None,
380- hierarchyOverrideNode, configBlock, configRule);
381- auto & result = *comp.emplace <InstanceSymbol>(definition.name , loc, body, 0u );
376+ const ConfigRule* configRule) {
377+ auto & body = InstanceBodySymbol::fromDefinition (comp, definition, definition.location ,
378+ InstanceFlags::None, hierarchyOverrideNode,
379+ configBlock, configRule);
380+ auto & result = *comp.emplace <InstanceSymbol>(definition.name , definition.location , body, 0u );
382381
383382 if (configBlock) {
384383 auto rc = comp.emplace <ResolvedConfig>(*configBlock, result);
@@ -861,8 +860,13 @@ static Symbol* recurseDefaultIfaceInst(Compilation& comp, const InterfacePortSym
861860 std::span<const ConstantRange>::iterator it,
862861 std::span<const ConstantRange>::iterator end) {
863862 if (it == end) {
864- auto & result = InstanceSymbol::createDefault (comp, *port.interfaceDef , nullptr , nullptr ,
865- nullptr , port.location );
863+ auto & def = *port.interfaceDef ;
864+ ParameterBuilder paramBuilder (*def.getParentScope (), def.name , def.parameters );
865+ paramBuilder.setUseInvalidForMissing (true );
866+ auto & body = InstanceBodySymbol::fromDefinition (comp, def, port.location , paramBuilder,
867+ InstanceFlags::None);
868+
869+ auto & result = *comp.emplace <InstanceSymbol>(port.name , port.location , body, 0u );
866870
867871 if (!firstInst)
868872 firstInst = &result;
@@ -964,6 +968,10 @@ InstanceBodySymbol& InstanceBodySymbol::fromDefinition(
964968 ParameterBuilder paramBuilder (*definition.getParentScope (), definition.name ,
965969 definition.parameters );
966970 paramBuilder.setForceInvalidValues (flags.has (InstanceFlags::Uninstantiated));
971+ if (compilation.hasFlag (CompilationFlags::AllowInvalidTop) &&
972+ instanceLoc == definition.location ) {
973+ paramBuilder.setUseInvalidForMissing (true );
974+ }
967975 if (hierarchyOverrideNode)
968976 paramBuilder.setOverrides (hierarchyOverrideNode);
969977
0 commit comments