diff --git a/toolchain/check/context.cpp b/toolchain/check/context.cpp index 739c980576fd..963258af3b29 100644 --- a/toolchain/check/context.cpp +++ b/toolchain/check/context.cpp @@ -317,19 +317,21 @@ static auto LookupInImportIRScopes(Context& context, SemIRLoc loc, // Look up the name in the import scope. const auto& import_scope = import_ir.sem_ir->name_scopes().Get(import_scope_id); - auto it = import_scope.names.find(import_name_id); - if (it == import_scope.names.end()) { + auto it = import_scope.name_map.find(import_name_id); + if (it == import_scope.name_map.end()) { // Name doesn't exist in the import scope. continue; } - auto import_inst = import_ir.sem_ir->insts().Get(it->second.inst_id); + const auto& import_scope_entry = import_scope.names[it->second]; + auto import_inst = + import_ir.sem_ir->insts().Get(import_scope_entry.inst_id); if (import_inst.Is()) { // This entity was added to name lookup by using an import, and is not // exported. continue; } - if (it->second.access_kind != SemIR::AccessKind::Public) { + if (import_scope_entry.access_kind != SemIR::AccessKind::Public) { // Ignore cross-package non-public names. continue; } @@ -340,9 +342,9 @@ static auto LookupInImportIRScopes(Context& context, SemIRLoc loc, canonical_result_inst = GetCanonicalImportIRInst(context, &context.sem_ir(), result_id); } - VerifySameCanonicalImportIRInst(context, result_id, - *canonical_result_inst, import_ir_id, - import_ir.sem_ir, it->second.inst_id); + VerifySameCanonicalImportIRInst( + context, result_id, *canonical_result_inst, import_ir_id, + import_ir.sem_ir, import_scope_entry.inst_id); } else { // Add the first result found. auto bind_name_id = context.bind_names().Add( @@ -350,7 +352,8 @@ static auto LookupInImportIRScopes(Context& context, SemIRLoc loc, .parent_scope_id = scope_id, .bind_index = SemIR::CompileTimeBindIndex::Invalid}); result_id = AddImportRef( - context, {.ir_id = import_ir_id, .inst_id = it->second.inst_id}, + context, + {.ir_id = import_ir_id, .inst_id = import_scope_entry.inst_id}, bind_name_id); LoadImportRef(context, result_id); } @@ -363,9 +366,10 @@ auto Context::LookupNameInExactScope(SemIRLoc loc, SemIR::NameId name_id, SemIR::NameScopeId scope_id, const SemIR::NameScope& scope) -> SemIR::InstId { - if (auto it = scope.names.find(name_id); it != scope.names.end()) { - LoadImportRef(*this, it->second.inst_id); - return it->second.inst_id; + if (auto it = scope.name_map.find(name_id); it != scope.name_map.end()) { + auto inst_id = scope.names[it->second].inst_id; + LoadImportRef(*this, inst_id); + return inst_id; } if (!scope.import_ir_scopes.empty()) { return LookupInImportIRScopes(*this, loc, name_id, scope_id, scope); diff --git a/toolchain/check/decl_name_stack.cpp b/toolchain/check/decl_name_stack.cpp index 93b95e3696c0..1b571515b5ec 100644 --- a/toolchain/check/decl_name_stack.cpp +++ b/toolchain/check/decl_name_stack.cpp @@ -147,9 +147,12 @@ auto DeclNameStack::AddName(NameContext name_context, SemIR::InstId target_id, context_->AddExport(target_id); } - auto [_, success] = name_scope.names.insert( - {name_context.unresolved_name_id, - {.inst_id = target_id, .access_kind = access_kind}}); + int scope_index = name_scope.names.size(); + name_scope.names.push_back({.name_id = name_context.unresolved_name_id, + .inst_id = target_id, + .access_kind = access_kind}); + auto [_, success] = name_scope.name_map.insert( + {name_context.unresolved_name_id, scope_index}); CARBON_CHECK(success) << "Duplicate names should have been resolved previously: " << name_context.unresolved_name_id << " in " diff --git a/toolchain/check/handle_export.cpp b/toolchain/check/handle_export.cpp index cbedfa3f9159..83c74091aaa6 100644 --- a/toolchain/check/handle_export.cpp +++ b/toolchain/check/handle_export.cpp @@ -77,10 +77,11 @@ auto HandleExportDecl(Context& context, Parse::ExportDeclId node_id) -> bool { // Replace the ImportRef in name lookup, both for the above duplicate // diagnostic and so that cross-package imports can find it easily. auto bind_name = context.bind_names().Get(import_ref->bind_name_id); - auto& names = context.name_scopes().Get(bind_name.parent_scope_id).names; - auto it = names.find(bind_name.name_id); - CARBON_CHECK(it->second.inst_id == inst_id); - it->second.inst_id = export_id; + auto& parent_scope = context.name_scopes().Get(bind_name.parent_scope_id); + auto it = parent_scope.name_map.find(bind_name.name_id); + auto& scope_inst_id = parent_scope.names[it->second].inst_id; + CARBON_CHECK(scope_inst_id == inst_id); + scope_inst_id = export_id; return true; } diff --git a/toolchain/check/import.cpp b/toolchain/check/import.cpp index 708f96bf3d64..97138eaad43f 100644 --- a/toolchain/check/import.cpp +++ b/toolchain/check/import.cpp @@ -14,6 +14,7 @@ #include "toolchain/sem_ir/ids.h" #include "toolchain/sem_ir/import_ir.h" #include "toolchain/sem_ir/inst.h" +#include "toolchain/sem_ir/name_scope.h" #include "toolchain/sem_ir/typed_insts.h" namespace Carbon::Check { @@ -84,19 +85,18 @@ static auto AddNamespace( SemIR::NameScopeId parent_scope_id, bool diagnose_duplicate_namespace, std::optional> make_import_id) -> std::tuple { - auto& parent_scope = context.name_scopes().Get(parent_scope_id); + auto* parent_scope = &context.name_scopes().Get(parent_scope_id); auto [it, success] = - parent_scope.names.insert({name_id, - {.inst_id = SemIR::InstId::Invalid, - .access_kind = SemIR::AccessKind::Public}}); + parent_scope->name_map.insert({name_id, parent_scope->names.size()}); if (!success) { + auto inst_id = parent_scope->names[it->second].inst_id; if (auto namespace_inst = - context.insts().TryGetAs(it->second.inst_id)) { + context.insts().TryGetAs(inst_id)) { if (diagnose_duplicate_namespace) { - context.DiagnoseDuplicateName(node_id, it->second.inst_id); + context.DiagnoseDuplicateName(node_id, inst_id); } return {namespace_inst->name_scope_id, - context.constant_values().Get(it->second.inst_id), true}; + context.constant_values().Get(inst_id), true}; } } @@ -111,14 +111,23 @@ static auto AddNamespace( context.name_scopes().Add(namespace_id, name_id, parent_scope_id); context.ReplaceInstBeforeConstantUse(namespace_id, namespace_inst); + // Note we have to get the parent scope freshly, creating the imported + // namespace may invalidate the pointer above. + parent_scope = &context.name_scopes().Get(parent_scope_id); + // Diagnose if there's a name conflict, but still produce the namespace to // supersede the name conflict in order to avoid repeat diagnostics. if (!success) { - context.DiagnoseDuplicateName(namespace_id, it->second.inst_id); + auto& entry = parent_scope->names[it->second]; + context.DiagnoseDuplicateName(namespace_id, entry.inst_id); + entry.inst_id = namespace_id; + entry.access_kind = SemIR::AccessKind::Public; + } else { + parent_scope->names.push_back({.name_id = name_id, + .inst_id = namespace_id, + .access_kind = SemIR::AccessKind::Public}); } - it->second = {.inst_id = namespace_id, - .access_kind = SemIR::AccessKind::Public}; return {namespace_inst.name_scope_id, context.constant_values().Get(namespace_id), false}; } @@ -224,25 +233,28 @@ static auto AddImportRefOrMerge(Context& context, SemIR::ImportIRId ir_id, SemIR::NameScopeId parent_scope_id, SemIR::NameId name_id) -> void { // Leave a placeholder that the inst comes from the other IR. - auto& names = context.name_scopes().Get(parent_scope_id).names; + auto& parent_scope = context.name_scopes().Get(parent_scope_id); auto [it, success] = - names.insert({name_id, - {.inst_id = SemIR::InstId::Invalid, - .access_kind = SemIR::AccessKind::Public}}); + parent_scope.name_map.insert({name_id, parent_scope.names.size()}); if (success) { auto bind_name_id = context.bind_names().Add( {.name_id = name_id, .parent_scope_id = parent_scope_id, .bind_index = SemIR::CompileTimeBindIndex::Invalid}); - it->second.inst_id = AddImportRef( - context, {.ir_id = ir_id, .inst_id = import_inst_id}, bind_name_id); + parent_scope.names.push_back( + {.name_id = name_id, + .inst_id = + AddImportRef(context, {.ir_id = ir_id, .inst_id = import_inst_id}, + bind_name_id), + .access_kind = SemIR::AccessKind::Public}); return; } + auto inst_id = parent_scope.names[it->second].inst_id; auto prev_ir_inst = - GetCanonicalImportIRInst(context, &context.sem_ir(), it->second.inst_id); - VerifySameCanonicalImportIRInst(context, it->second.inst_id, prev_ir_inst, - ir_id, &import_sem_ir, import_inst_id); + GetCanonicalImportIRInst(context, &context.sem_ir(), inst_id); + VerifySameCanonicalImportIRInst(context, inst_id, prev_ir_inst, ir_id, + &import_sem_ir, import_inst_id); } auto ImportLibrariesFromCurrentPackage( diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index feffa87806aa..a0f64dafc8da 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -595,15 +595,13 @@ class ImportRefResolver { // lookup. auto AddNameScopeImportRefs(const SemIR::NameScope& import_scope, SemIR::NameScope& new_scope) -> void { - for (auto [entry_name_id, entry] : import_scope.names) { + for (auto entry : import_scope.names) { auto ref_id = AddImportRef( context_, {.ir_id = import_ir_id_, .inst_id = entry.inst_id}, SemIR::BindNameId::Invalid); - CARBON_CHECK( - new_scope.names - .insert({GetLocalNameId(entry_name_id), - {.inst_id = ref_id, .access_kind = entry.access_kind}}) - .second); + new_scope.AddRequired({.name_id = GetLocalNameId(entry.name_id), + .inst_id = ref_id, + .access_kind = entry.access_kind}); } } diff --git a/toolchain/check/merge.cpp b/toolchain/check/merge.cpp index 117111b04403..da290b962133 100644 --- a/toolchain/check/merge.cpp +++ b/toolchain/check/merge.cpp @@ -123,10 +123,10 @@ auto CheckIsAllowedRedecl(Context& context, Lex::TokenKind decl_kind, auto ReplacePrevInstForMerge(Context& context, SemIR::NameScopeId scope_id, SemIR::NameId name_id, SemIR::InstId new_inst_id) -> void { - auto& names = context.name_scopes().Get(scope_id).names; - auto it = names.find(name_id); - if (it != names.end()) { - it->second.inst_id = new_inst_id; + auto& scope = context.name_scopes().Get(scope_id); + auto it = scope.name_map.find(name_id); + if (it != scope.name_map.end()) { + scope.names[it->second].inst_id = new_inst_id; } } diff --git a/toolchain/check/testdata/alias/no_prelude/export_name.carbon b/toolchain/check/testdata/alias/no_prelude/export_name.carbon index f46f5a4016b2..b67ce073c385 100644 --- a/toolchain/check/testdata/alias/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/alias/no_prelude/export_name.carbon @@ -122,8 +122,8 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = %import_ref.2 // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .D = %import_ref.2 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+5, unloaded diff --git a/toolchain/check/testdata/alias/no_prelude/import_order.carbon b/toolchain/check/testdata/alias/no_prelude/import_order.carbon index f7e1fbf1bece..c808fdff07af 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_order.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_order.carbon @@ -97,8 +97,8 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %import_ref.3: type = import_ref ir1, inst+14, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.4: type = import_ref ir1, inst+16, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.5: type = import_ref ir1, inst+18, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.6: %.4 = import_ref ir1, inst+7, loaded [template = imports.%.1] -// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.7: %.4 = import_ref ir1, inst+7, loaded [template = imports.%.1] // CHECK:STDOUT: %d.ref: type = name_ref d, %import_ref.5 [template = constants.%C] // CHECK:STDOUT: %d_val.var: ref %C = var d_val // CHECK:STDOUT: %d_val: ref %C = bind_name d_val, %d_val.var @@ -115,8 +115,8 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .v = file.%import_ref.6 -// CHECK:STDOUT: .Self = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.6 +// CHECK:STDOUT: .v = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -130,7 +130,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc7_25: init %C = converted %.loc7_24.1, %.loc7_24.4 [template = constants.%struct] // CHECK:STDOUT: assign file.%d_val.var, %.loc7_25 // CHECK:STDOUT: %d_val.ref: ref %C = name_ref d_val, file.%d_val -// CHECK:STDOUT: %v.ref.loc8: %.4 = name_ref v, file.%import_ref.6 [template = imports.%.1] +// CHECK:STDOUT: %v.ref.loc8: %.4 = name_ref v, file.%import_ref.7 [template = imports.%.1] // CHECK:STDOUT: %.loc8_27.1: ref %.1 = class_element_access %d_val.ref, element0 // CHECK:STDOUT: %.loc8_29.1: %.2 = struct_literal (%.loc8_27.1) // CHECK:STDOUT: %.loc8_29.2: ref %.1 = class_element_access file.%c_val.var, element0 @@ -140,7 +140,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc8_30: init %C = converted %.loc8_29.1, %.loc8_29.4 [template = constants.%struct] // CHECK:STDOUT: assign file.%c_val.var, %.loc8_30 // CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val -// CHECK:STDOUT: %v.ref.loc9: %.4 = name_ref v, file.%import_ref.6 [template = imports.%.1] +// CHECK:STDOUT: %v.ref.loc9: %.4 = name_ref v, file.%import_ref.7 [template = imports.%.1] // CHECK:STDOUT: %.loc9_27.1: ref %.1 = class_element_access %c_val.ref, element0 // CHECK:STDOUT: %.loc9_29.1: %.2 = struct_literal (%.loc9_27.1) // CHECK:STDOUT: %.loc9_29.2: ref %.1 = class_element_access file.%b_val.var, element0 @@ -150,7 +150,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc9_30: init %C = converted %.loc9_29.1, %.loc9_29.4 [template = constants.%struct] // CHECK:STDOUT: assign file.%b_val.var, %.loc9_30 // CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val -// CHECK:STDOUT: %v.ref.loc10: %.4 = name_ref v, file.%import_ref.6 [template = imports.%.1] +// CHECK:STDOUT: %v.ref.loc10: %.4 = name_ref v, file.%import_ref.7 [template = imports.%.1] // CHECK:STDOUT: %.loc10_27.1: ref %.1 = class_element_access %b_val.ref, element0 // CHECK:STDOUT: %.loc10_29.1: %.2 = struct_literal (%.loc10_27.1) // CHECK:STDOUT: %.loc10_29.2: ref %.1 = class_element_access file.%a_val.var, element0 diff --git a/toolchain/check/testdata/class/extern.carbon b/toolchain/check/testdata/class/extern.carbon index 2e2ae17d4f05..1dc90ce5964c 100644 --- a/toolchain/check/testdata/class/extern.carbon +++ b/toolchain/check/testdata/class/extern.carbon @@ -558,8 +558,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref: type = import_ref ir1, inst+2, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace [template] {} @@ -576,8 +576,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref: type = import_ref ir1, inst+2, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace [template] {} @@ -595,8 +595,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+2, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace [template] {} @@ -618,8 +618,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+2, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace [template] {} diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 987effcfd705..8c0d94baaa0d 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -198,10 +198,10 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .CompleteClass = %import_ref.2 -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .Class = %Class.decl +// CHECK:STDOUT: .CompleteClass = %import_ref.2 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: %Class.type = import_ref ir0, inst+5, loaded [template = constants.%Class.1] // CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref ir0, inst+12, loaded [template = constants.%CompleteClass.1] diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index f62d0e9392a4..dc6d042238a8 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -178,11 +178,11 @@ fn Run() { // CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+6, unloaded // CHECK:STDOUT: %import_ref.7: %.7 = import_ref ir1, inst+17, loaded [template = imports.%.1] // CHECK:STDOUT: %import_ref.8 = import_ref ir1, inst+22, unloaded -// CHECK:STDOUT: %import_ref.9: %G.type = import_ref ir1, inst+36, loaded [template = constants.%G] -// CHECK:STDOUT: %import_ref.10: %F.type = import_ref ir1, inst+27, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.9: %F.type = import_ref ir1, inst+27, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.10: %G.type = import_ref ir1, inst+36, loaded [template = constants.%G] // CHECK:STDOUT: %import_ref.11 = import_ref ir1, inst+22, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref ir1, inst+36, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref ir1, inst+27, unloaded +// CHECK:STDOUT: %import_ref.12 = import_ref ir1, inst+27, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref ir1, inst+36, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Empty { @@ -199,15 +199,15 @@ fn Run() { // CHECK:STDOUT: class @ForwardDeclared.1 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = file.%import_ref.8 -// CHECK:STDOUT: .G = file.%import_ref.9 -// CHECK:STDOUT: .F = file.%import_ref.10 +// CHECK:STDOUT: .F = file.%import_ref.9 +// CHECK:STDOUT: .G = file.%import_ref.10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.2 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = file.%import_ref.11 -// CHECK:STDOUT: .G = file.%import_ref.12 -// CHECK:STDOUT: .F = file.%import_ref.13 +// CHECK:STDOUT: .F = file.%import_ref.12 +// CHECK:STDOUT: .G = file.%import_ref.13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; @@ -244,12 +244,12 @@ fn Run() { // CHECK:STDOUT: %.loc12_30: init %ForwardDeclared.1 = converted %.loc12_29.1, %.loc12_29.2 [template = constants.%struct.3] // CHECK:STDOUT: assign %c.var, %.loc12_30 // CHECK:STDOUT: %c.ref.loc13: ref %ForwardDeclared.1 = name_ref c, %c -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%import_ref.10 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%import_ref.9 [template = constants.%F] // CHECK:STDOUT: %.loc13_4: = bound_method %c.ref.loc13, %F.ref // CHECK:STDOUT: %.loc13_3: %ForwardDeclared.1 = bind_value %c.ref.loc13 // CHECK:STDOUT: %F.call: init %.1 = call %.loc13_4(%.loc13_3) // CHECK:STDOUT: %c.ref.loc14: ref %ForwardDeclared.1 = name_ref c, %c -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%import_ref.9 [template = constants.%G] +// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%import_ref.10 [template = constants.%G] // CHECK:STDOUT: %.loc14_4: = bound_method %c.ref.loc14, %G.ref // CHECK:STDOUT: %.loc14_3: %.9 = addr_of %c.ref.loc14 // CHECK:STDOUT: %G.call: init %.1 = call %.loc14_4(%.loc14_3) diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index 91d93fad9c94..371b10b47c64 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -148,10 +148,10 @@ fn Run() { // CHECK:STDOUT: %import_ref.2: type = import_ref ir1, inst+37, loaded [template = constants.%Child] // CHECK:STDOUT: %Core: = namespace [template] {} // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} -// CHECK:STDOUT: %import_ref.3: %F.type = import_ref ir1, inst+7, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+3, unloaded -// CHECK:STDOUT: %import_ref.5: %.11 = import_ref ir1, inst+26, loaded [template = imports.%.1] -// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+14, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref ir1, inst+7, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+14, unloaded +// CHECK:STDOUT: %import_ref.6: %.11 = import_ref ir1, inst+26, loaded [template = imports.%.1] // CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+33, unloaded // CHECK:STDOUT: %import_ref.8 = import_ref ir1, inst+38, unloaded // CHECK:STDOUT: %import_ref.9 = import_ref ir1, inst+42, unloaded @@ -166,10 +166,10 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = file.%import_ref.3 -// CHECK:STDOUT: .Self = file.%import_ref.4 -// CHECK:STDOUT: .x = file.%import_ref.5 -// CHECK:STDOUT: .Unused = file.%import_ref.6 +// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .F = file.%import_ref.4 +// CHECK:STDOUT: .Unused = file.%import_ref.5 +// CHECK:STDOUT: .x = file.%import_ref.6 // CHECK:STDOUT: .unused = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -193,14 +193,14 @@ fn Run() { // CHECK:STDOUT: %.loc7_49: init %Child = converted %.loc7_48.1, %.loc7_48.4 [template = constants.%struct.2] // CHECK:STDOUT: assign %a.var, %.loc7_49 // CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a -// CHECK:STDOUT: %x.ref: %.11 = name_ref x, file.%import_ref.5 [template = imports.%.1] +// CHECK:STDOUT: %x.ref: %.11 = name_ref x, file.%import_ref.6 [template = imports.%.1] // CHECK:STDOUT: %.loc8_4.1: ref %Base = class_element_access %a.ref.loc8, element0 // CHECK:STDOUT: %.loc8_4.2: ref %Base = converted %a.ref.loc8, %.loc8_4.1 // CHECK:STDOUT: %.loc8_4.3: ref i32 = class_element_access %.loc8_4.2, element0 // CHECK:STDOUT: %.loc8_9: i32 = int_literal 2 [template = constants.%.12] // CHECK:STDOUT: assign %.loc8_4.3, %.loc8_9 // CHECK:STDOUT: %a.ref.loc9: ref %Child = name_ref a, %a -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%import_ref.3 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%import_ref.4 [template = constants.%F] // CHECK:STDOUT: %.loc9_4: = bound_method %a.ref.loc9, %F.ref // CHECK:STDOUT: %.loc9_6.1: ref %Base = class_element_access %a.ref.loc9, element0 // CHECK:STDOUT: %.loc9_6.2: ref %Base = converted %a.ref.loc9, %.loc9_6.1 diff --git a/toolchain/check/testdata/class/import_forward_decl.carbon b/toolchain/check/testdata/class/import_forward_decl.carbon index abc53d25b19a..9d629e7d5198 100644 --- a/toolchain/check/testdata/class/import_forward_decl.carbon +++ b/toolchain/check/testdata/class/import_forward_decl.carbon @@ -47,8 +47,8 @@ class ForwardDecl { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .ForwardDecl = %ForwardDecl.decl +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref: type = import_ref ir0, inst+2, loaded [template = constants.%ForwardDecl] // CHECK:STDOUT: %Core: = namespace [template] {} diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index 51af1b8b58ee..cf3641aef7db 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -74,14 +74,14 @@ fn Run() { // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+2, loaded [template = constants.%Cycle] // CHECK:STDOUT: %Core: = namespace [template] {} // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+8, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .a = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .a = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon index 6e9e81fb9d01..d9be731edbb2 100644 --- a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon @@ -151,15 +151,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+3, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+3, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .F = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- d.carbon @@ -186,8 +186,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+7, loaded [template = constants.%C] // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+6, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+5, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+5, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+6, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -234,14 +234,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %x.var: ref %.1 = var x // CHECK:STDOUT: %x: ref %.1 = bind_name x, %x.var -// CHECK:STDOUT: %import_ref.2: %F.type = import_ref ir2, inst+3, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3: %F.type = import_ref ir2, inst+3, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .F = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -249,7 +249,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: type = name_ref C, file.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%import_ref.2 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%import_ref.3 [template = constants.%F] // CHECK:STDOUT: %F.call: init %.1 = call %F.ref() // CHECK:STDOUT: assign file.%x.var, %F.call // CHECK:STDOUT: return @@ -275,8 +275,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %x.var: ref %.1 = var x // CHECK:STDOUT: %x: ref %.1 = bind_name x, %x.var -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+6, unloaded -// CHECK:STDOUT: %import_ref.3: %F.type = import_ref ir1, inst+5, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+5, unloaded +// CHECK:STDOUT: %import_ref.3: %F.type = import_ref ir1, inst+6, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -316,8 +316,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %x.var: ref %.1 = var x // CHECK:STDOUT: %x: ref %.1 = bind_name x, %x.var -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+6, unloaded -// CHECK:STDOUT: %import_ref.3: %F.type = import_ref ir2, inst+5, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+5, unloaded +// CHECK:STDOUT: %import_ref.3: %F.type = import_ref ir2, inst+6, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index cee086ae1aa1..10f3640bc523 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -663,12 +663,12 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .NS = %NS -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: .NS = %NS +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .b = %b.loc13 // CHECK:STDOUT: .c = %c.loc14 @@ -807,12 +807,12 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .NS = %NS -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: .NS = %NS +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .b = %b.loc13 // CHECK:STDOUT: .c = %c.loc14 @@ -1168,13 +1168,13 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { +// CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %import_ref.2 // CHECK:STDOUT: .C = %import_ref.3 // CHECK:STDOUT: .D = %import_ref.4 // CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .a = %a -// CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: %A.type = import_ref ir1, inst+2, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+21, unloaded @@ -1272,13 +1272,13 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { +// CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %import_ref.2 // CHECK:STDOUT: .C = %import_ref.3 // CHECK:STDOUT: .D = %import_ref.4 // CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .a = %a -// CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: %A.type = import_ref ir1, inst+2, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+21, unloaded diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index 35f7158a7996..df5ee28f2678 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -295,11 +295,11 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { +// CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .C = %import_ref.3 // CHECK:STDOUT: .D = %import_ref.4 // CHECK:STDOUT: .Core = %Core -// CHECK:STDOUT: .A = %A.decl -// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: %A.type = import_ref ir1, inst+2, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.2: %B.type = import_ref ir1, inst+22, loaded [template = constants.%B] @@ -341,8 +341,8 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .A = %A.decl.loc6 +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref: %A.type = import_ref ir1, inst+2, loaded [template = constants.%A] // CHECK:STDOUT: %Core: = namespace [template] {} @@ -368,8 +368,8 @@ fn D() {} // CHECK:STDOUT: .A = %import_ref.1 // CHECK:STDOUT: .B = %import_ref.2 // CHECK:STDOUT: .C = %import_ref.3 -// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: .D = %D.decl.loc13 +// CHECK:STDOUT: .Core = %Core // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1 = import_ref ir1, inst+2, unloaded // CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+22, unloaded diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index e22670db3ce4..3e3348fcc0a7 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -123,8 +123,8 @@ fn G(c: Impl.C) { // CHECK:STDOUT: %Core: = namespace [template] {} // CHECK:STDOUT: %Impl: = namespace [template] {} // CHECK:STDOUT: %import_ref.1 = import_ref ir8, inst+14, unloaded -// CHECK:STDOUT: %import_ref.2: %.5 = import_ref ir8, inst+11, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.3 = import_ref ir8, inst+4, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir8, inst+4, unloaded +// CHECK:STDOUT: %import_ref.3: %.5 = import_ref ir8, inst+11, loaded [template = constants.%.6] // CHECK:STDOUT: %import_ref.4 = import_ref ir8, inst+6, unloaded // CHECK:STDOUT: %import_ref.5: = import_ref ir8, inst+22, loaded [template = constants.%.7] // CHECK:STDOUT: %import_ref.6: type = import_ref ir8, inst+13, loaded [template = constants.%C] @@ -140,8 +140,8 @@ fn G(c: Impl.C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .F = file.%import_ref.3 // CHECK:STDOUT: witness = (file.%import_ref.4) // CHECK:STDOUT: } // CHECK:STDOUT: @@ -157,7 +157,7 @@ fn G(c: Impl.C) { // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %Impl.ref: = name_ref Impl, file.%Impl [template = file.%Impl] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%import_ref.7 [template = constants.%.2] -// CHECK:STDOUT: %F.ref: %.5 = name_ref F, file.%import_ref.2 [template = constants.%.6] +// CHECK:STDOUT: %F.ref: %.5 = name_ref F, file.%import_ref.3 [template = constants.%.6] // CHECK:STDOUT: %.1: %F.type.1 = interface_witness_access file.%import_ref.5, element0 [template = constants.%F.2] // CHECK:STDOUT: %F.call: init %.3 = call %.1() // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon index 9bf62dd72810..a219cdcee38e 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon @@ -119,8 +119,8 @@ fn G(c: Impl.C) { // CHECK:STDOUT: } // CHECK:STDOUT: %Impl: = namespace [template] {} // CHECK:STDOUT: %import_ref.1 = import_ref ir1, inst+13, unloaded -// CHECK:STDOUT: %import_ref.2: %.5 = import_ref ir1, inst+10, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.3: %.5 = import_ref ir1, inst+10, loaded [template = constants.%.6] // CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+5, unloaded // CHECK:STDOUT: %import_ref.5: = import_ref ir1, inst+21, loaded [template = constants.%.7] // CHECK:STDOUT: %import_ref.6: type = import_ref ir1, inst+12, loaded [template = constants.%C] @@ -136,8 +136,8 @@ fn G(c: Impl.C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .F = file.%import_ref.3 // CHECK:STDOUT: witness = (file.%import_ref.4) // CHECK:STDOUT: } // CHECK:STDOUT: @@ -153,7 +153,7 @@ fn G(c: Impl.C) { // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %Impl.ref: = name_ref Impl, file.%Impl [template = file.%Impl] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%import_ref.7 [template = constants.%.2] -// CHECK:STDOUT: %F.ref: %.5 = name_ref F, file.%import_ref.2 [template = constants.%.6] +// CHECK:STDOUT: %F.ref: %.5 = name_ref F, file.%import_ref.3 [template = constants.%.6] // CHECK:STDOUT: %.1: %F.type.1 = interface_witness_access file.%import_ref.5, element0 [template = constants.%F.2] // CHECK:STDOUT: %F.call: init %.3 = call %.1() // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/impl/no_prelude/import_self.carbon b/toolchain/check/testdata/impl/no_prelude/import_self.carbon index 43635e505d50..16ede55feb11 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_self.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_self.carbon @@ -101,8 +101,8 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%.2] -// CHECK:STDOUT: %import_ref.2: %.4 = import_ref ir1, inst+24, loaded [template = constants.%.5] -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+3, unloaded +// CHECK:STDOUT: %import_ref.3: %.4 = import_ref ir1, inst+24, loaded [template = constants.%.5] // CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref ir1, inst+19, loaded [template = constants.%Op.2] // CHECK:STDOUT: impl_decl @impl { // CHECK:STDOUT: %.loc6_7.1: %.1 = tuple_literal () @@ -127,8 +127,8 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: interface @Add { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .Op = file.%import_ref.3 // CHECK:STDOUT: witness = (file.%import_ref.4) // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,7 +164,7 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %.1 = name_ref x, %x // CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%import_ref.1 [template = constants.%.2] -// CHECK:STDOUT: %Op.ref: %.4 = name_ref Op, file.%import_ref.2 [template = constants.%.5] +// CHECK:STDOUT: %Op.ref: %.4 = name_ref Op, file.%import_ref.3 [template = constants.%.5] // CHECK:STDOUT: %.1: %Op.type.2 = interface_witness_access @impl.%.1, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc11_11: = bound_method %x.ref, %.1 // CHECK:STDOUT: %y.ref: %.1 = name_ref y, %y diff --git a/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon b/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon index 637eda0f3f07..0e002468e456 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon @@ -76,8 +76,8 @@ interface Class { } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = // CHECK:STDOUT: .Self = +// CHECK:STDOUT: .F = // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/import.carbon b/toolchain/check/testdata/interface/no_prelude/import.carbon index ba70f25db3b4..1d50456ca740 100644 --- a/toolchain/check/testdata/interface/no_prelude/import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import.carbon @@ -189,8 +189,8 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: @UseEmpty.%e: %.1 = bind_name e, %e.loc6_13.1 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.7: %.7 = import_ref ir1, inst+18, loaded [template = constants.%.8] -// CHECK:STDOUT: %import_ref.8: %.5 = import_ref ir1, inst+11, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.7: %.5 = import_ref ir1, inst+11, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.8: %.7 = import_ref ir1, inst+18, loaded [template = constants.%.8] // CHECK:STDOUT: %import_ref.9 = import_ref ir1, inst+9, unloaded // CHECK:STDOUT: %import_ref.10 = import_ref ir1, inst+13, unloaded // CHECK:STDOUT: %UseBasic.decl: %UseBasic.type = fn_decl @UseBasic [template = constants.%UseBasic] { @@ -199,8 +199,8 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: @UseBasic.%e: %.3 = bind_name e, %e.loc7_13.1 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.11 = import_ref ir1, inst+22, unloaded -// CHECK:STDOUT: %import_ref.12: %.11 = import_ref ir1, inst+32, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.13: %.9 = import_ref ir1, inst+26, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.12: %.9 = import_ref ir1, inst+26, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.13: %.11 = import_ref ir1, inst+32, loaded [template = constants.%.12] // CHECK:STDOUT: %import_ref.14 = import_ref ir1, inst+24, unloaded // CHECK:STDOUT: %import_ref.15 = import_ref ir1, inst+28, unloaded // CHECK:STDOUT: %UseForwardDeclared.decl: %UseForwardDeclared.type = fn_decl @UseForwardDeclared [template = constants.%UseForwardDeclared] { @@ -210,20 +210,20 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: } // CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, %import_ref.2 [template = constants.%.3] // CHECK:STDOUT: %import_ref.16 = import_ref ir1, inst+9, unloaded -// CHECK:STDOUT: %T.ref.loc10: %.5 = name_ref T, %import_ref.8 [template = constants.%.6] -// CHECK:STDOUT: %UseBasicT: %.5 = bind_alias UseBasicT, %import_ref.8 [template = constants.%.6] +// CHECK:STDOUT: %T.ref.loc10: %.5 = name_ref T, %import_ref.7 [template = constants.%.6] +// CHECK:STDOUT: %UseBasicT: %.5 = bind_alias UseBasicT, %import_ref.7 [template = constants.%.6] // CHECK:STDOUT: %Basic.ref.loc11: type = name_ref Basic, %import_ref.2 [template = constants.%.3] // CHECK:STDOUT: %import_ref.17 = import_ref ir1, inst+13, unloaded -// CHECK:STDOUT: %F.ref.loc11: %.7 = name_ref F, %import_ref.7 [template = constants.%.8] -// CHECK:STDOUT: %UseBasicF: %.7 = bind_alias UseBasicF, %import_ref.7 [template = constants.%.8] +// CHECK:STDOUT: %F.ref.loc11: %.7 = name_ref F, %import_ref.8 [template = constants.%.8] +// CHECK:STDOUT: %UseBasicF: %.7 = bind_alias UseBasicF, %import_ref.8 [template = constants.%.8] // CHECK:STDOUT: %ForwardDeclared.ref.loc13: type = name_ref ForwardDeclared, %import_ref.3 [template = constants.%.4] // CHECK:STDOUT: %import_ref.18 = import_ref ir1, inst+24, unloaded -// CHECK:STDOUT: %T.ref.loc13: %.9 = name_ref T, %import_ref.13 [template = constants.%.10] -// CHECK:STDOUT: %UseForwardDeclaredT: %.9 = bind_alias UseForwardDeclaredT, %import_ref.13 [template = constants.%.10] +// CHECK:STDOUT: %T.ref.loc13: %.9 = name_ref T, %import_ref.12 [template = constants.%.10] +// CHECK:STDOUT: %UseForwardDeclaredT: %.9 = bind_alias UseForwardDeclaredT, %import_ref.12 [template = constants.%.10] // CHECK:STDOUT: %ForwardDeclared.ref.loc14: type = name_ref ForwardDeclared, %import_ref.3 [template = constants.%.4] // CHECK:STDOUT: %import_ref.19 = import_ref ir1, inst+28, unloaded -// CHECK:STDOUT: %F.ref.loc14: %.11 = name_ref F, %import_ref.12 [template = constants.%.12] -// CHECK:STDOUT: %UseForwardDeclaredF: %.11 = bind_alias UseForwardDeclaredF, %import_ref.12 [template = constants.%.12] +// CHECK:STDOUT: %F.ref.loc14: %.11 = name_ref F, %import_ref.13 [template = constants.%.12] +// CHECK:STDOUT: %UseForwardDeclaredF: %.11 = bind_alias UseForwardDeclaredF, %import_ref.13 [template = constants.%.12] // CHECK:STDOUT: %ForwardDeclared.ref.loc16: type = name_ref ForwardDeclared, %import_ref.3 [template = constants.%.4] // CHECK:STDOUT: %.loc16: type = ptr_type %.4 [template = constants.%.13] // CHECK:STDOUT: %f.var: ref %.13 = var f @@ -239,16 +239,16 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: interface @Basic { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = file.%import_ref.6 -// CHECK:STDOUT: .F = file.%import_ref.7 -// CHECK:STDOUT: .T = file.%import_ref.8 +// CHECK:STDOUT: .T = file.%import_ref.7 +// CHECK:STDOUT: .F = file.%import_ref.8 // CHECK:STDOUT: witness = (file.%import_ref.9, file.%import_ref.10) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardDeclared { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = file.%import_ref.11 -// CHECK:STDOUT: .F = file.%import_ref.12 -// CHECK:STDOUT: .T = file.%import_ref.13 +// CHECK:STDOUT: .T = file.%import_ref.12 +// CHECK:STDOUT: .F = file.%import_ref.13 // CHECK:STDOUT: witness = (file.%import_ref.14, file.%import_ref.15) // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index 8fcdcc8795fe..02893195e163 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -132,11 +132,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Core: = namespace [template] {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} // CHECK:STDOUT: %import_ref.1: type = import_ref ir6, inst+51, loaded [template = constants.%.2] -// CHECK:STDOUT: %import_ref.2: %.8 = import_ref ir6, inst+93, loaded [template = constants.%.9] -// CHECK:STDOUT: %import_ref.3 = import_ref ir6, inst+53, unloaded -// CHECK:STDOUT: %import_ref.4: %.12 = import_ref ir6, inst+133, loaded [template = constants.%.13] -// CHECK:STDOUT: %import_ref.5: %.6 = import_ref ir6, inst+73, loaded [template = constants.%.7] -// CHECK:STDOUT: %import_ref.6: %.10 = import_ref ir6, inst+113, loaded [template = constants.%.11] +// CHECK:STDOUT: %import_ref.2 = import_ref ir6, inst+53, unloaded +// CHECK:STDOUT: %import_ref.3: %.6 = import_ref ir6, inst+73, loaded [template = constants.%.7] +// CHECK:STDOUT: %import_ref.4: %.8 = import_ref ir6, inst+93, loaded [template = constants.%.9] +// CHECK:STDOUT: %import_ref.5: %.10 = import_ref ir6, inst+113, loaded [template = constants.%.11] +// CHECK:STDOUT: %import_ref.6: %.12 = import_ref ir6, inst+133, loaded [template = constants.%.13] // CHECK:STDOUT: %import_ref.7: %Less.type.2 = import_ref ir6, inst+69, loaded [template = constants.%Less.2] // CHECK:STDOUT: %import_ref.8: %LessOrEquivalent.type.2 = import_ref ir6, inst+89, loaded [template = constants.%LessOrEquivalent.2] // CHECK:STDOUT: %import_ref.9: %Greater.type.2 = import_ref ir6, inst+109, loaded [template = constants.%Greater.2] @@ -214,11 +214,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: interface @Ordered { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .LessOrEquivalent = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 -// CHECK:STDOUT: .GreaterOrEquivalent = file.%import_ref.4 -// CHECK:STDOUT: .Less = file.%import_ref.5 -// CHECK:STDOUT: .Greater = file.%import_ref.6 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .Less = file.%import_ref.3 +// CHECK:STDOUT: .LessOrEquivalent = file.%import_ref.4 +// CHECK:STDOUT: .Greater = file.%import_ref.5 +// CHECK:STDOUT: .GreaterOrEquivalent = file.%import_ref.6 // CHECK:STDOUT: witness = (file.%import_ref.7, file.%import_ref.8, file.%import_ref.9, file.%import_ref.10) // CHECK:STDOUT: } // CHECK:STDOUT: @@ -414,11 +414,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: @TestLess.%return: ref bool = var // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.2: type = import_ref ir6, inst+51, loaded [template = constants.%.4] -// CHECK:STDOUT: %import_ref.3: %.7 = import_ref ir6, inst+93, loaded [template = constants.%.8] -// CHECK:STDOUT: %import_ref.4 = import_ref ir6, inst+53, unloaded -// CHECK:STDOUT: %import_ref.5: %.11 = import_ref ir6, inst+133, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.6: %.5 = import_ref ir6, inst+73, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.7: %.9 = import_ref ir6, inst+113, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.3 = import_ref ir6, inst+53, unloaded +// CHECK:STDOUT: %import_ref.4: %.5 = import_ref ir6, inst+73, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.5: %.7 = import_ref ir6, inst+93, loaded [template = constants.%.8] +// CHECK:STDOUT: %import_ref.6: %.9 = import_ref ir6, inst+113, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref ir6, inst+133, loaded [template = constants.%.12] // CHECK:STDOUT: %import_ref.8 = import_ref ir6, inst+69, unloaded // CHECK:STDOUT: %import_ref.9 = import_ref ir6, inst+89, unloaded // CHECK:STDOUT: %import_ref.10 = import_ref ir6, inst+109, unloaded @@ -473,11 +473,11 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: interface @Ordered { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .LessOrEquivalent = file.%import_ref.3 -// CHECK:STDOUT: .Self = file.%import_ref.4 -// CHECK:STDOUT: .GreaterOrEquivalent = file.%import_ref.5 -// CHECK:STDOUT: .Less = file.%import_ref.6 -// CHECK:STDOUT: .Greater = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Less = file.%import_ref.4 +// CHECK:STDOUT: .LessOrEquivalent = file.%import_ref.5 +// CHECK:STDOUT: .Greater = file.%import_ref.6 +// CHECK:STDOUT: .GreaterOrEquivalent = file.%import_ref.7 // CHECK:STDOUT: witness = (file.%import_ref.8, file.%import_ref.9, file.%import_ref.10, file.%import_ref.11) // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/no_prelude/export_import.carbon b/toolchain/check/testdata/packages/no_prelude/export_import.carbon index 9b4ca14fdb1a..9b4b079cf8f9 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_import.carbon @@ -260,8 +260,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -269,8 +269,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -303,8 +303,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -312,8 +312,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -346,8 +346,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -355,8 +355,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -389,8 +389,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir3, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir3, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir3, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir3, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir3, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -398,8 +398,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -432,8 +432,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -441,8 +441,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -475,8 +475,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -484,8 +484,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -518,8 +518,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -527,8 +527,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -561,8 +561,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -570,8 +570,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -604,8 +604,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir3, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir3, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir3, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir3, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir3, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -613,8 +613,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -657,8 +657,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -666,8 +666,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.2 -// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .Self = file.%import_ref.2 +// CHECK:STDOUT: .x = file.%import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -702,8 +702,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1 = import_ref ir1, inst+13, unloaded // CHECK:STDOUT: %import_ref.2: type = import_ref ir2, inst+1, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.2 [template = constants.%C] // CHECK:STDOUT: %indirect_c.var: ref %C = var indirect_c // CHECK:STDOUT: %indirect_c: ref %C = bind_name indirect_c, %indirect_c.var @@ -711,8 +711,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.3 -// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .x = file.%import_ref.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon index 9aaa3a7221df..645edac50d8d 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon @@ -175,20 +175,20 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = %import_ref.2 // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .D = %import_ref.2 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+1, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+11, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+7, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+7, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.3 -// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .x = file.%import_ref.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name.carbon @@ -201,20 +201,20 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = %import_ref.2 // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .D = %import_ref.2 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+11, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.3 -// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .Self = file.%import_ref.3 +// CHECK:STDOUT: .x = file.%import_ref.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_then_import.carbon @@ -243,8 +243,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+11, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+10, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+10, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -286,8 +286,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+11, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+10, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+9, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+9, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+10, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -329,8 +329,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+11, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+10, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+10, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -398,8 +398,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+11, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+10, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+10, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -448,8 +448,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+11, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2: type = import_ref ir5, inst+11, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+10, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+9, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+10, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var diff --git a/toolchain/check/testdata/packages/no_prelude/export_name.carbon b/toolchain/check/testdata/packages/no_prelude/export_name.carbon index ecd9576e9d88..7f81c5109eb6 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_name.carbon @@ -260,8 +260,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2: = import_ref ir1, inst+11, loaded @@ -269,8 +269,8 @@ private export C; // CHECK:STDOUT: .NSC = %NSC // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3: type = import_ref ir1, inst+12, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+13, unloaded // CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+17, unloaded @@ -279,8 +279,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.4 -// CHECK:STDOUT: .Self = file.%import_ref.5 +// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .x = file.%import_ref.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { @@ -316,8 +316,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+13, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2: = import_ref ir1, inst+3, loaded @@ -325,11 +325,11 @@ private export C; // CHECK:STDOUT: .NSC = %NSC // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3: type = import_ref ir1, inst+21, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+12, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+20, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+19, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+19, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+20, unloaded // CHECK:STDOUT: %NSC: type = export NSC, %import_ref.3 [template = constants.%NSC] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -341,8 +341,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .y = file.%import_ref.6 -// CHECK:STDOUT: .Self = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.6 +// CHECK:STDOUT: .y = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_in_impl.carbon @@ -379,14 +379,14 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3: type = import_ref ir1, inst+21, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+12, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %NS.ref: = name_ref NS, %NS [template = %NS] -// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+20, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+19, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+19, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+20, unloaded // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, %import_ref.3 [template = constants.%NSC] // CHECK:STDOUT: %nsc.var: ref %NSC = var nsc // CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var @@ -400,8 +400,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .y = file.%import_ref.6 -// CHECK:STDOUT: .Self = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.6 +// CHECK:STDOUT: .y = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -474,8 +474,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .y = file.%import_ref.6 -// CHECK:STDOUT: .Self = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.6 +// CHECK:STDOUT: .y = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -548,8 +548,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .y = file.%import_ref.6 -// CHECK:STDOUT: .Self = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.6 +// CHECK:STDOUT: .y = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -626,14 +626,14 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.4 -// CHECK:STDOUT: .Self = file.%import_ref.5 +// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .x = file.%import_ref.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_both.carbon @@ -664,8 +664,8 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3: type = import_ref ir1, inst+12, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -679,8 +679,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.4 -// CHECK:STDOUT: .Self = file.%import_ref.5 +// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .x = file.%import_ref.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { @@ -738,14 +738,14 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3: type = import_ref ir1, inst+21, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+12, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %NS.ref: = name_ref NS, %NS [template = %NS] -// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+20, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+19, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref ir1, inst+19, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref ir1, inst+20, unloaded // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, %import_ref.3 [template = constants.%NSC] // CHECK:STDOUT: %nsc.var: ref %NSC = var nsc // CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var @@ -759,8 +759,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .y = file.%import_ref.6 -// CHECK:STDOUT: .Self = file.%import_ref.7 +// CHECK:STDOUT: .Self = file.%import_ref.6 +// CHECK:STDOUT: .y = file.%import_ref.7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -807,8 +807,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2: = import_ref ir1, inst+11, loaded @@ -816,15 +816,15 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.4 -// CHECK:STDOUT: .Self = file.%import_ref.5 +// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .x = file.%import_ref.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_repeat_export.carbon @@ -844,8 +844,8 @@ private export C; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+13, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.2 = import_ref ir1, inst+11, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+12, unloaded // CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -880,8 +880,8 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: .NS = %NS // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref ir1, inst+1, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.2: = import_ref ir1, inst+11, loaded @@ -889,14 +889,14 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.3 // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3 = import_ref ir1, inst+12, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+7, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref ir1, inst+2, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref ir1, inst+7, unloaded // CHECK:STDOUT: %C: type = export C, %import_ref.1 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .x = file.%import_ref.4 -// CHECK:STDOUT: .Self = file.%import_ref.5 +// CHECK:STDOUT: .Self = file.%import_ref.4 +// CHECK:STDOUT: .x = file.%import_ref.5 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index c7de1e54bba7..c77696848ff8 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -332,21 +332,11 @@ class Formatter { out_ << label; } - // Name scopes aren't kept in any particular order. Sort the entries before - // we print them for stability and consistency. - llvm::SmallVector> entries; - for (auto [name_id, entry] : scope.names) { - entries.push_back({entry, name_id}); - } - llvm::sort(entries, [](auto a, auto b) { - return a.first.inst_id.index < b.first.inst_id.index; - }); - - for (auto [entry, name_id] : entries) { + for (auto [name_id, inst_id, access_kind] : scope.names) { Indent(); out_ << "."; FormatName(name_id); - switch (entry.access_kind) { + switch (access_kind) { case SemIR::AccessKind::Public: break; case SemIR::AccessKind::Protected: @@ -357,7 +347,7 @@ class Formatter { break; } out_ << " = "; - FormatInstName(entry.inst_id); + FormatInstName(inst_id); out_ << "\n"; } diff --git a/toolchain/sem_ir/name_scope.h b/toolchain/sem_ir/name_scope.h index 0a1c7944b833..6ae8757ab955 100644 --- a/toolchain/sem_ir/name_scope.h +++ b/toolchain/sem_ir/name_scope.h @@ -19,6 +19,7 @@ enum class AccessKind : int8_t { struct NameScope : Printable { struct Entry { + NameId name_id; InstId inst_id; AccessKind access_kind; }; @@ -35,24 +36,35 @@ struct NameScope : Printable { out << "]"; out << ", names: {"; - // Sort name keys to get stable output. - llvm::SmallVector keys; - for (auto [key, _] : names) { - keys.push_back(key); - } - llvm::sort(keys, - [](NameId lhs, NameId rhs) { return lhs.index < rhs.index; }); - llvm::ListSeparator key_sep; - for (auto key : keys) { - out << key_sep << key << ": " << names.find(key)->second.inst_id; + llvm::ListSeparator sep; + for (auto entry : names) { + out << sep << entry.name_id << ": " << entry.inst_id; } out << "}"; out << "}"; } - // Names in the scope. - llvm::DenseMap names = llvm::DenseMap(); + // Adds a name to the scope that must not already exist. + auto AddRequired(Entry name_entry) -> void { + int index = names.size(); + names.push_back(name_entry); + auto success = name_map.insert({name_entry.name_id, index}).second; + CARBON_CHECK(success) << "Failed to add required name: " + << name_entry.name_id; + } + + // Names in the scope. We store both an insertion-ordered vector for iterating + // and a map from `NameId` to the index of that vector for name lookup. + // + // Optimization notes: this is somewhat memory inefficient. If this ends up + // either hot or a significant source of memory allocation, we should consider + // switching to a SOA model where the `AccessKind` is stored in a separate + // vector so that these can pack densely. If this ends up both cold and memory + // intensive, we can also switch the lookup to a set of indices into the + // vector rather than a map from `NameId` to index. + llvm::SmallVector names; + llvm::DenseMap name_map = llvm::DenseMap(); // Scopes extended by this scope. // @@ -114,10 +126,9 @@ class NameScopeStore { // These must never conflict. auto AddRequiredName(NameScopeId scope_id, NameId name_id, InstId inst_id) -> void { - NameScope::Entry entry = {.inst_id = inst_id, - .access_kind = AccessKind::Public}; - auto success = Get(scope_id).names.insert({name_id, entry}).second; - CARBON_CHECK(success) << "Failed to add required name: " << name_id; + Get(scope_id).AddRequired({.name_id = name_id, + .inst_id = inst_id, + .access_kind = AccessKind::Public}); } // Returns the requested name scope.