diff --git a/toolchain/check/class.cpp b/toolchain/check/class.cpp index eb7b85375945..7119f19ef7a6 100644 --- a/toolchain/check/class.cpp +++ b/toolchain/check/class.cpp @@ -117,9 +117,9 @@ static auto AddStructTypeFields( llvm::ArrayRef field_decls) -> SemIR::StructTypeFieldsId { for (auto field_decl_id : field_decls) { auto field_decl = context.insts().GetAs(field_decl_id); - field_decl.index = + auto& field = context.fields().Get(field_decl.field_id); + field.index = SemIR::ElementIndex{static_cast(struct_type_fields.size())}; - ReplaceInstPreservingConstantValue(context, field_decl_id, field_decl); if (field_decl.type_id == SemIR::ErrorInst::TypeId) { struct_type_fields.push_back( {.name_id = field_decl.name_id, diff --git a/toolchain/check/context.h b/toolchain/check/context.h index 93fe46db94ea..b57b072f6516 100644 --- a/toolchain/check/context.h +++ b/toolchain/check/context.h @@ -336,6 +336,7 @@ class Context { } auto functions() -> SemIR::FunctionStore& { return sem_ir().functions(); } auto classes() -> SemIR::ClassStore& { return sem_ir().classes(); } + auto fields() -> SemIR::FieldStore& { return sem_ir().fields(); } auto vtables() -> SemIR::VtableStore& { return sem_ir().vtables(); } auto interfaces() -> SemIR::InterfaceStore& { return sem_ir().interfaces(); } auto named_constraints() -> SemIR::NamedConstraintStore& { @@ -353,9 +354,6 @@ class Context { auto facet_types() -> SemIR::FacetTypeInfoStore& { return sem_ir().facet_types(); } - auto field_initializers() -> SemIR::File::FieldInitializerMap& { - return sem_ir().field_initializers(); - } auto identified_facet_types() -> SemIR::IdentifiedFacetTypeStore& { return sem_ir().identified_facet_types(); } diff --git a/toolchain/check/convert.cpp b/toolchain/check/convert.cpp index 5992c7cde20d..ec25595e7f8a 100644 --- a/toolchain/check/convert.cpp +++ b/toolchain/check/convert.cpp @@ -906,16 +906,18 @@ static auto ConvertStructToClass(Context& context, SemIR::StructType src_type, // constant. auto field_inst_id = dest_class_scope.GetEntry(*entry_id).result.target_inst_id(); - auto lookup = context.field_initializers().Lookup(field_inst_id); - if (!lookup) { + LoadImportRef(context, field_inst_id); + field_inst_id = context.constant_values().GetConstantInstId(field_inst_id); + auto field_decl = context.insts().GetAs(field_inst_id); + auto field = context.fields().Get(field_decl.field_id); + if (!field.initializer_id.has_value()) { return SemIR::InstId::None; } - auto initializer_id = lookup.value(); SemIR::ConstantId const_id = SemIR::ConstantId::NotConstant; const_id = GetConstantValueInSpecific( - context.sem_ir(), dest_type.specific_id, initializer_id); + context.sem_ir(), dest_type.specific_id, field.initializer_id); if (const_id == SemIR::ConstantId::NotConstant) { - context.TODO(initializer_id, "field initializer is not constant"); + context.TODO(field.initializer_id, "field initializer is not constant"); return SemIR::ErrorInst::InstId; } diff --git a/toolchain/check/cpp/import.cpp b/toolchain/check/cpp/import.cpp index 7b6434540f7c..dc56c35d92b7 100644 --- a/toolchain/check/cpp/import.cpp +++ b/toolchain/check/cpp/import.cpp @@ -798,6 +798,10 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id, // Create a field now, as we know the index to use. // TODO: Consider doing this lazily instead. + auto field_id = + context.fields().Add({.index = SemIR::ElementIndex(fields.size()), + // TODO: import initializers. + .initializer_id = SemIR::InstId::None}); auto field_decl_id = AddInst( context, SemIR::LocIdAndInst::RuntimeVerified( context.sem_ir(), import_ir_inst_id, @@ -805,7 +809,8 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id, .type_id = GetUnboundElementType( context, class_type_inst_id, field_type_inst_id), .name_id = field_name_id, - .index = SemIR::ElementIndex(fields.size())})); + .field_id = field_id, + })); // The imported SemIR::FieldDecl represents the original declaration `decl`, // which is either the field or the indirect field declaration. auto key = SemIR::ClangDeclKey::ForNonFunctionDecl(decl); diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index 9aaf86a14c06..4f2019f10282 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -2170,14 +2170,20 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::FieldDecl inst, SemIR::InstId import_inst_id) -> ResolveResult { auto const_id = GetLocalConstantId(resolver, inst.type_id); + const auto& import_field = resolver.import_ir().fields().Get(inst.field_id); + auto initializer_id = + GetLocalConstantInstId(resolver, import_field.initializer_id); if (resolver.HasNewWork()) { return ResolveResult::Retry(); } + + auto field_id = resolver.local_ir().fields().Add( + {.index = import_field.index, .initializer_id = initializer_id}); return ResolveResult::Unique( resolver, import_inst_id, {.type_id = resolver.local_types().GetTypeIdForTypeConstantId(const_id), .name_id = GetLocalNameId(resolver, inst.name_id), - .index = inst.index}); + .field_id = field_id}); } static auto TryResolveTypedInst(ImportRefResolver& resolver, diff --git a/toolchain/check/member_access.cpp b/toolchain/check/member_access.cpp index 1c4ff7392edf..28ac3ffe5611 100644 --- a/toolchain/check/member_access.cpp +++ b/toolchain/check/member_access.cpp @@ -39,7 +39,7 @@ static auto GetClassElementIndex(Context& context, SemIR::InstId element_id) -> SemIR::ElementIndex { auto element_inst = context.insts().Get(element_id); if (auto field = element_inst.TryAs()) { - return field->index; + return context.fields().Get(field->field_id).index; } if (auto base = element_inst.TryAs()) { return base->index; diff --git a/toolchain/check/pattern.cpp b/toolchain/check/pattern.cpp index acfbb7a93731..54dd8f0c6986 100644 --- a/toolchain/check/pattern.cpp +++ b/toolchain/check/pattern.cpp @@ -153,13 +153,14 @@ auto AddBindingPattern(Context& context, SemIR::LocId name_loc, } auto field_id = - AddInst(context, name_loc, - {.type_id = field_type_id, - .name_id = name_id, - .index = SemIR::ElementIndex::None}); - context.field_decls_stack().AppendToTop(field_id); + context.fields().Add({.index = SemIR::ElementIndex::None, + .initializer_id = SemIR::InstId::None}); + auto field_decl_id = AddInst( + context, name_loc, + {.type_id = field_type_id, .name_id = name_id, .field_id = field_id}); + context.field_decls_stack().AppendToTop(field_decl_id); - return {.pattern_id = field_id, .bind_id = field_id}; + return {.pattern_id = field_decl_id, .bind_id = field_decl_id}; } auto bind_id = AddInstInNoBlock( diff --git a/toolchain/check/pattern_match.cpp b/toolchain/check/pattern_match.cpp index f1700ad09714..3dc486584dd1 100644 --- a/toolchain/check/pattern_match.cpp +++ b/toolchain/check/pattern_match.cpp @@ -541,7 +541,7 @@ auto MatchContext::DoPostWork(State /*state*/, WorkItem /*entry*/) -> void {} auto MatchContext::DoPreWork(State /*state*/, SemIR::FieldDecl field_decl, - SemIR::InstId scrutinee_id, WorkItem entry) + SemIR::InstId scrutinee_id, WorkItem /*entry*/) -> void { if (!scrutinee_id.has_value()) { return; @@ -559,8 +559,8 @@ auto MatchContext::DoPreWork(State /*state*/, SemIR::FieldDecl field_decl, return; } - // Store a mapping to the field's initializer. - context_.field_initializers().Insert(entry.pattern_id, converted_id); + // Store the field's initializer. + context_.fields().Get(field_decl.field_id).initializer_id = converted_id; } auto MatchContext::DoPreWork(State state, diff --git a/toolchain/check/testdata/alias/import_order.carbon b/toolchain/check/testdata/alias/import_order.carbon index c809d50ab52e..5156a70c0cdd 100644 --- a/toolchain/check/testdata/alias/import_order.carbon +++ b/toolchain/check/testdata/alias/import_order.carbon @@ -101,8 +101,8 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %Main.d: type = import_ref Main//a, d, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.146: = import_ref Main//a, loc4_22, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.a3c = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.4c6: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.3a7] -// CHECK:STDOUT: %.3a7: %C.elem = field_decl v, element0 [concrete] +// CHECK:STDOUT: %Main.import_ref.ae3: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.ab1] +// CHECK:STDOUT: %.ab1: %C.elem = field_decl v, element0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -153,7 +153,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.a3c -// CHECK:STDOUT: .v = imports.%Main.import_ref.4c6 +// CHECK:STDOUT: .v = imports.%Main.import_ref.ae3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -168,7 +168,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_24.1, %.loc7_24.5 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%d_val.var, %.loc7_1 // CHECK:STDOUT: %d_val.ref: ref %C = name_ref d_val, file.%d_val [concrete = file.%d_val.var] -// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.4c6 [concrete = imports.%.3a7] +// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.ae3 [concrete = imports.%.ab1] // CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 [concrete = constants.%.2cf] // CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) [concrete = constants.%struct.9bd] // CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete = constants.%.819] @@ -179,7 +179,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_29.1, %.loc8_29.5 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c_val.var, %.loc8_1 // CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val [concrete = file.%c_val.var] -// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.4c6 [concrete = imports.%.3a7] +// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.ae3 [concrete = imports.%.ab1] // CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 [concrete = constants.%.819] // CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) [concrete = constants.%struct.cff] // CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete = constants.%.c19] @@ -190,7 +190,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc9_1: init %C = converted %.loc9_29.1, %.loc9_29.5 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%b_val.var, %.loc9_1 // CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val [concrete = file.%b_val.var] -// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.4c6 [concrete = imports.%.3a7] +// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.ae3 [concrete = imports.%.ab1] // CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 [concrete = constants.%.c19] // CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) [concrete = constants.%struct.f26] // CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete = constants.%.d52] diff --git a/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon b/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon index 557380daabe9..462b59808ec6 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon @@ -218,7 +218,7 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: inst5000001F: {kind: StructValue, arg0: inst_block_empty, type: type(inst5000001D)} // CHECK:STDOUT: inst50000020: {kind: PointerType, arg0: inst50000014, type: type(TypeType)} // CHECK:STDOUT: inst50000021: {kind: UnboundElementType, arg0: inst50000014, arg1: inst50000020, type: type(TypeType)} -// CHECK:STDOUT: inst50000022: {kind: FieldDecl, arg0: name5, arg1: element0, type: type(inst50000021)} +// CHECK:STDOUT: inst50000022: {kind: FieldDecl, arg0: name5, arg1: field50000000, type: type(inst50000021)} // CHECK:STDOUT: inst50000023: {kind: CustomLayoutType, arg0: struct_type_fields50000001, arg1: custom_layout50000001, type: type(TypeType)} // CHECK:STDOUT: inst50000024: {kind: CustomLayoutType, arg0: struct_type_fields50000002, arg1: custom_layout50000001, type: type(TypeType)} // CHECK:STDOUT: inst50000025: {kind: CompleteTypeWitness, arg0: inst50000023, type: type(inst(WitnessType))} diff --git a/toolchain/check/testdata/class/field/field_initializer.carbon b/toolchain/check/testdata/class/field/field_initializer.carbon index a0c631a7c350..1aef2cc01363 100644 --- a/toolchain/check/testdata/class/field/field_initializer.carbon +++ b/toolchain/check/testdata/class/field/field_initializer.carbon @@ -21,15 +21,11 @@ class Class { var C: Class = {}; //@dump-sem-ir-end -// --- fail_todo_field_initializer_import.carbon +// --- field_initializer_import.carbon library "[[@TEST_NAME]]"; import library "field_initializer"; -// CHECK:STDERR: fail_todo_field_initializer_import.carbon:[[@LINE+4]]:17: error: missing value for field `field` in struct initialization [StructInitMissingFieldInLiteral] -// CHECK:STDERR: var C2: Class = {}; -// CHECK:STDERR: ^~ -// CHECK:STDERR: var C2: Class = {}; // --- field_initializer_generic.carbon @@ -135,7 +131,7 @@ var C: Class = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0 [concrete] +// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0, initializer = inst640000D4 [concrete] // CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff] // CHECK:STDOUT: %impl.elem0: %.205 = impl_witness_access constants.%ImplicitAs.impl_witness.fb6, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e6b] // CHECK:STDOUT: %bound_method.loc5_20.1: = bound_method %int_123, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index e811591ea672..b10d9aab9f11 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -336,12 +336,12 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.7e3: = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.735)] // CHECK:STDOUT: %Main.import_ref.668 = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.17f: @C.%C.elem (%C.elem.992) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.65d] +// CHECK:STDOUT: %Main.import_ref.2fa: @C.%C.elem (%C.elem.992) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.862] // CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//adapt_specific_type, loc4_10, loaded [symbolic = @C.%T (constants.%T.67d)] // CHECK:STDOUT: %Main.import_ref.bc4: = import_ref Main//adapt_specific_type, loc10_1, loaded [concrete = constants.%complete_type.9ec] // CHECK:STDOUT: %Main.import_ref.bbb = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %.65d: @C.%C.elem (%C.elem.992) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %.862: @C.%C.elem (%C.elem.992) = field_decl x, element0 [concrete] // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.8e5: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.c59) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.fb0)] // CHECK:STDOUT: %Copy.impl_witness_table.03a = impl_witness_table (%Core.import_ref.8e5), @Int.as.Copy.impl [concrete] @@ -395,7 +395,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.668 -// CHECK:STDOUT: .x = imports.%Main.import_ref.17f +// CHECK:STDOUT: .x = imports.%Main.import_ref.2fa // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -407,7 +407,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.6b0] // CHECK:STDOUT: %.loc7_13.1: %C.6b0 = as_compatible %a.ref // CHECK:STDOUT: %.loc7_13.2: %C.6b0 = converted %a.ref, %.loc7_13.1 -// CHECK:STDOUT: %x.ref: %C.elem.bed = name_ref x, imports.%Main.import_ref.17f [concrete = imports.%.65d] +// CHECK:STDOUT: %x.ref: %C.elem.bed = name_ref x, imports.%Main.import_ref.2fa [concrete = imports.%.862] // CHECK:STDOUT: %.loc7_23.1: ref %i32 = class_element_access %.loc7_13.2, element0 // CHECK:STDOUT: %.loc7_23.2: %i32 = acquire_value %.loc7_23.1 // CHECK:STDOUT: %impl.elem0: %.cf6 = impl_witness_access constants.%Copy.impl_witness.c36, element0 [concrete = constants.%Int.as.Copy.impl.Op.123] @@ -719,13 +719,13 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.7e3: = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.735)] // CHECK:STDOUT: %Main.import_ref.38a = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.58c: @C.%C.elem (%C.elem.a43) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.c5a] +// CHECK:STDOUT: %Main.import_ref.c5d: @C.%C.elem (%C.elem.a43) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.062] // CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//extend_adapt_specific_type_library, loc7_10, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.bc4: = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [concrete = constants.%complete_type.9ec] // CHECK:STDOUT: %Main.import_ref.d90 = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.2e2d92.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [concrete = constants.%C.e72] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %.c5a: @C.%C.elem (%C.elem.a43) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %.062: @C.%C.elem (%C.elem.a43) = field_decl x, element0 [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -778,14 +778,14 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.38a -// CHECK:STDOUT: .x = imports.%Main.import_ref.58c +// CHECK:STDOUT: .x = imports.%Main.import_ref.c5d // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedAccess(%a.param: %Adapter) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a -// CHECK:STDOUT: %x.ref: %C.elem.5c5 = name_ref x, imports.%Main.import_ref.58c [concrete = imports.%.c5a] +// CHECK:STDOUT: %x.ref: %C.elem.5c5 = name_ref x, imports.%Main.import_ref.c5d [concrete = imports.%.062] // CHECK:STDOUT: %.loc15_11.1: %C.e72 = converted %a.ref, [concrete = ] // CHECK:STDOUT: %.loc15_11.2: %i32 = class_element_access , element0 [concrete = ] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index 9007d40e2868..6d2eefc4245d 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -323,18 +323,18 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.7a7: = import_ref Main//extend_generic_base, loc10_1, loaded [concrete = constants.%complete_type.558] // CHECK:STDOUT: %Main.import_ref.7b0 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.28e: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.19e] +// CHECK:STDOUT: %Main.import_ref.95a: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.4f0] // CHECK:STDOUT: %Main.import_ref.7e3: = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.735)] // CHECK:STDOUT: %Main.import_ref.8a6 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.8ea: @Base.%Base.elem (%Base.elem.69f) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.447] +// CHECK:STDOUT: %Main.import_ref.d26: @Base.%Base.elem (%Base.elem.69f) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.831] // CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//extend_generic_base, loc4_18, loaded [symbolic = @Base.%T (constants.%T.67d)] // CHECK:STDOUT: %Main.import_ref.b3f: = import_ref Main//extend_generic_base, loc14_1, loaded [concrete = constants.%complete_type.25a] // CHECK:STDOUT: %Main.import_ref.71e = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.42b = import_ref Main//extend_generic_base, loc13_27, unloaded // CHECK:STDOUT: %Main.import_ref.d09220.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [concrete = constants.%Base.125] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %.447: @Base.%Base.elem (%Base.elem.69f) = field_decl x, element0 [concrete] -// CHECK:STDOUT: %.19e: %Param.elem = field_decl y, element0 [concrete] +// CHECK:STDOUT: %.831: @Base.%Base.elem (%Base.elem.69f) = field_decl x, element0 [concrete] +// CHECK:STDOUT: %.4f0: %Param.elem = field_decl y, element0 [concrete] // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.8e5: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.c59) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.fb0)] // CHECK:STDOUT: %Copy.impl_witness_table.03a = impl_witness_table (%Core.import_ref.8e5), @Int.as.Copy.impl [concrete] @@ -382,7 +382,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.7b0 -// CHECK:STDOUT: .y = imports.%Main.import_ref.28e +// CHECK:STDOUT: .y = imports.%Main.import_ref.95a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Base(imports.%Main.import_ref.b3b: type) [from "extend_generic_base.carbon"] { @@ -400,18 +400,18 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.8a6 -// CHECK:STDOUT: .x = imports.%Main.import_ref.8ea +// CHECK:STDOUT: .x = imports.%Main.import_ref.d26 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedDoubleFieldAccess(%d.param: %Derived) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %x.ref: %Base.elem.482 = name_ref x, imports.%Main.import_ref.8ea [concrete = imports.%.447] +// CHECK:STDOUT: %x.ref: %Base.elem.482 = name_ref x, imports.%Main.import_ref.d26 [concrete = imports.%.831] // CHECK:STDOUT: %.loc7_11.1: ref %Base.125 = class_element_access %d.ref, element0 // CHECK:STDOUT: %.loc7_11.2: ref %Base.125 = converted %d.ref, %.loc7_11.1 // CHECK:STDOUT: %.loc7_11.3: ref %Param = class_element_access %.loc7_11.2, element0 -// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.28e [concrete = imports.%.19e] +// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.95a [concrete = imports.%.4f0] // CHECK:STDOUT: %.loc7_13.1: ref %i32 = class_element_access %.loc7_11.3, element0 // CHECK:STDOUT: %.loc7_13.2: %i32 = acquire_value %.loc7_13.1 // CHECK:STDOUT: %impl.elem0: %.cf6 = impl_witness_access constants.%Copy.impl_witness.c36, element0 [concrete = constants.%Int.as.Copy.impl.Op.123] diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index bd8c4f07b45a..5be2317ad55b 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -331,7 +331,7 @@ class Class(U:! type) { // CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8b4: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.bd4] // CHECK:STDOUT: %Main.import_ref.459 = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.b51 = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//foo, loc7_8, unloaded // CHECK:STDOUT: %Main.import_ref.21e = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: %Main.import_ref.b3bc94.3: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] @@ -406,7 +406,7 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.459 -// CHECK:STDOUT: .n = imports.%Main.import_ref.b51 +// CHECK:STDOUT: .n = imports.%Main.import_ref.5a3 // CHECK:STDOUT: .F = imports.%Main.import_ref.21e // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -523,11 +523,11 @@ class Class(U:! type) { // CHECK:STDOUT: %Main.import_ref.b3bc94.1: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T.67d)] // CHECK:STDOUT: %Main.import_ref.8b4: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.059] // CHECK:STDOUT: %Main.import_ref.459 = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.4de: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = import_ref Main//foo, loc7_8, loaded [concrete = %.903] +// CHECK:STDOUT: %Main.import_ref.96b: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = import_ref Main//foo, loc7_8, loaded [concrete = %.363] // CHECK:STDOUT: %Main.import_ref.6ec: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.f8c) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F.c58)] // CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T.67d)] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %.903: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = field_decl n, element0 [concrete] +// CHECK:STDOUT: %.363: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = field_decl n, element0 [concrete] // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.809: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.b5d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.c85)] // CHECK:STDOUT: %Copy.impl_witness_table.07a = impl_witness_table (%Core.import_ref.809), @Int.as.Copy.impl [concrete] @@ -578,7 +578,7 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.459 -// CHECK:STDOUT: .n = imports.%Main.import_ref.4de +// CHECK:STDOUT: .n = imports.%Main.import_ref.96b // CHECK:STDOUT: .F = imports.%Main.import_ref.6ec // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -653,7 +653,7 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %CompleteClass.b60 = ref_binding v, %v.var // CHECK:STDOUT: %v.ref: ref %CompleteClass.b60 = name_ref v, %v -// CHECK:STDOUT: %n.ref: %CompleteClass.elem.352 = name_ref n, imports.%Main.import_ref.4de [concrete = imports.%.903] +// CHECK:STDOUT: %n.ref: %CompleteClass.elem.352 = name_ref n, imports.%Main.import_ref.96b [concrete = imports.%.363] // CHECK:STDOUT: %.loc12_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc12_11.2: %i32 = acquire_value %.loc12_11.1 // CHECK:STDOUT: %impl.elem0: %.a5f = impl_witness_access constants.%Copy.impl_witness.32d, element0 [concrete = constants.%Int.as.Copy.impl.Op.c4a] @@ -745,7 +745,7 @@ class Class(U:! type) { // CHECK:STDOUT: %Main.import_ref.b3bc94.1: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8b4: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.bd4] // CHECK:STDOUT: %Main.import_ref.459 = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.b51 = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//foo, loc7_8, unloaded // CHECK:STDOUT: %Main.import_ref.21e = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] @@ -780,7 +780,7 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.459 -// CHECK:STDOUT: .n = imports.%Main.import_ref.b51 +// CHECK:STDOUT: .n = imports.%Main.import_ref.5a3 // CHECK:STDOUT: .F = imports.%Main.import_ref.21e // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index e8681d95059d..3333dec3e48e 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -256,11 +256,11 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.121 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.bc4: = import_ref Main//a, loc9_1, loaded [concrete = constants.%complete_type.9ec] // CHECK:STDOUT: %Main.import_ref.475 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.3e4: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.3b6] +// CHECK:STDOUT: %Main.import_ref.488: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.c73] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.7f1: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ca9) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.768)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.bc3 = impl_witness_table (%Core.import_ref.7f1), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %.3b6: %Field.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %.c73: %Field.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.1dc190.1 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e20: %ForwardDeclared.F.type = import_ref Main//a, loc14_21, loaded [concrete = constants.%ForwardDeclared.F] @@ -304,7 +304,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.475 -// CHECK:STDOUT: .x = imports.%Main.import_ref.3e4 +// CHECK:STDOUT: .x = imports.%Main.import_ref.488 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.1 [from "a.carbon"] { @@ -361,7 +361,7 @@ fn Run() { // CHECK:STDOUT: %Field.ref: type = name_ref Field, imports.%Main.Field [concrete = constants.%Field] // CHECK:STDOUT: %b: ref %Field = ref_binding b, %b.var // CHECK:STDOUT: %b.ref: ref %Field = name_ref b, %b -// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.3e4 [concrete = imports.%.3b6] +// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.488 [concrete = imports.%.c73] // CHECK:STDOUT: %.loc10_4: ref %i32 = class_element_access %b.ref, element0 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc10: %.634 = impl_witness_access constants.%ImplicitAs.impl_witness.1e6, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.924] diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index 1c351c001c41..46e3fdfa4892 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -102,7 +102,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.091: = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type.8c4] // CHECK:STDOUT: %Main.import_ref.1be = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.943 = import_ref Main//a, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.2cc = import_ref Main//a, loc5_8, unloaded // CHECK:STDOUT: %Core.DefaultOrUnformed: type = import_ref Core//prelude/parts/default, DefaultOrUnformed, loaded [concrete = constants.%DefaultOrUnformed.type] // CHECK:STDOUT: %Core.import_ref.b30: @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op.type (%T.as.DefaultOrUnformed.impl.Op.type.d5a) = import_ref Core//prelude/parts/default, loc{{\d+_\d+}}, loaded [symbolic = @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op (constants.%T.as.DefaultOrUnformed.impl.Op.9f4)] // CHECK:STDOUT: %DefaultOrUnformed.impl_witness_table.f82 = impl_witness_table (%Core.import_ref.b30), @T.as.DefaultOrUnformed.impl [concrete] @@ -125,7 +125,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.1be -// CHECK:STDOUT: .a = imports.%Main.import_ref.943 +// CHECK:STDOUT: .a = imports.%Main.import_ref.2cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/import_struct_cycle.carbon b/toolchain/check/testdata/class/import_struct_cycle.carbon index 6e499aeeffb6..39ac5e1bf72e 100644 --- a/toolchain/check/testdata/class/import_struct_cycle.carbon +++ b/toolchain/check/testdata/class/import_struct_cycle.carbon @@ -148,11 +148,11 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.f91: = import_ref Main//a, loc11_1, loaded [concrete = constants.%complete_type.c38] // CHECK:STDOUT: %Main.import_ref.1be = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.56b: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.e34] +// CHECK:STDOUT: %Main.import_ref.beb: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.77b] // CHECK:STDOUT: %a.patt: %pattern_type.8ce = ref_binding_pattern a [concrete] // CHECK:STDOUT: %a.var_patt: %pattern_type.8ce = var_pattern %a.patt [concrete] // CHECK:STDOUT: %a.var: ref %struct_type.b = var %a.var_patt [concrete] -// CHECK:STDOUT: %.e34: %Cycle.elem = field_decl c, element0 [concrete] +// CHECK:STDOUT: %.77b: %Cycle.elem = field_decl c, element0 [concrete] // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.13c: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.b03) = import_ref Core//prelude/parts/copy, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.aed)] // CHECK:STDOUT: %Copy.impl_witness_table.760 = impl_witness_table (%Core.import_ref.13c), @ptr.as.Copy.impl [concrete] @@ -175,7 +175,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.1be -// CHECK:STDOUT: .c = imports.%Main.import_ref.56b +// CHECK:STDOUT: .c = imports.%Main.import_ref.beb // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -186,7 +186,7 @@ fn Run() { // CHECK:STDOUT: %.loc7_12.1: ref %ptr.719 = struct_access %a.ref.loc7_11, element0 [concrete = constants.%.524] // CHECK:STDOUT: %.loc7_12.2: %ptr.719 = acquire_value %.loc7_12.1 // CHECK:STDOUT: %.loc7_10: ref %Cycle = deref %.loc7_12.2 -// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.56b [concrete = imports.%.e34] +// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.beb [concrete = imports.%.77b] // CHECK:STDOUT: %.loc7_15: ref %struct_type.b = class_element_access %.loc7_10, element0 // CHECK:STDOUT: %.loc7_17.1: ref %ptr.719 = struct_access %.loc7_15, element0 // CHECK:STDOUT: %.loc7_17.2: %ptr.719 = acquire_value %.loc7_17.1 diff --git a/toolchain/check/testdata/class/inheritance/import_base.carbon b/toolchain/check/testdata/class/inheritance/import_base.carbon index 606ed15711ff..f69497ece60e 100644 --- a/toolchain/check/testdata/class/inheritance/import_base.carbon +++ b/toolchain/check/testdata/class/inheritance/import_base.carbon @@ -199,8 +199,8 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.e52 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e20: %Base.F.type = import_ref Main//a, loc5_21, loaded [concrete = constants.%Base.F] // CHECK:STDOUT: %Main.import_ref.384 = import_ref Main//a, loc6_26, unloaded -// CHECK:STDOUT: %Main.import_ref.fc2: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.98f] -// CHECK:STDOUT: %Main.import_ref.4cb = import_ref Main//a, loc9_15, unloaded +// CHECK:STDOUT: %Main.import_ref.899: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.dee] +// CHECK:STDOUT: %Main.import_ref.52e = import_ref Main//a, loc9_15, unloaded // CHECK:STDOUT: %Main.import_ref.e2d: = import_ref Main//a, loc14_1, loaded [concrete = constants.%complete_type.043] // CHECK:STDOUT: %Main.import_ref.ffc = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.2a5 = import_ref Main//a, loc13_20, unloaded @@ -208,7 +208,7 @@ fn Run() { // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.7f1: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ca9) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.768)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.bc3 = impl_witness_table (%Core.import_ref.7f1), @Core.IntLiteral.as.ImplicitAs.impl [concrete] -// CHECK:STDOUT: %.98f: %Base.elem = field_decl x, element0 [concrete] +// CHECK:STDOUT: %.dee: %Base.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -242,8 +242,8 @@ fn Run() { // CHECK:STDOUT: .Self = imports.%Main.import_ref.e52 // CHECK:STDOUT: .F = imports.%Main.import_ref.e20 // CHECK:STDOUT: .Unused = imports.%Main.import_ref.384 -// CHECK:STDOUT: .x = imports.%Main.import_ref.fc2 -// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.4cb +// CHECK:STDOUT: .x = imports.%Main.import_ref.899 +// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.52e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -283,7 +283,7 @@ fn Run() { // CHECK:STDOUT: %Child.ref: type = name_ref Child, imports.%Main.Child [concrete = constants.%Child] // CHECK:STDOUT: %a: ref %Child = ref_binding a, %a.var // CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a -// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.fc2 [concrete = imports.%.98f] +// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.899 [concrete = imports.%.dee] // 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 diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index c431ce8a454b..9e19d42ad5c7 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -920,8 +920,8 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Main.import_ref.a3e: = import_ref Main//lib, loc24_1, loaded [symbolic = @IntRange.%complete_type (constants.%complete_type.426)] // CHECK:STDOUT: %Main.import_ref.bea = import_ref Main//lib, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.3d6 = import_ref Main//lib, loc5_57, unloaded -// CHECK:STDOUT: %Main.import_ref.964 = import_ref Main//lib, loc22_20, unloaded -// CHECK:STDOUT: %Main.import_ref.b5d = import_ref Main//lib, loc23_18, unloaded +// CHECK:STDOUT: %Main.import_ref.898 = import_ref Main//lib, loc22_20, unloaded +// CHECK:STDOUT: %Main.import_ref.b04 = import_ref Main//lib, loc23_18, unloaded // CHECK:STDOUT: %Main.import_ref.6b552a.2: Core.IntLiteral = import_ref Main//lib, loc4_17, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.347: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ca9) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.768)] @@ -972,8 +972,8 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.bea // CHECK:STDOUT: .Make = imports.%Main.import_ref.3d6 -// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.964 -// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.b5d +// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.898 +// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.b04 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/template/member_access.carbon b/toolchain/check/testdata/generic/template/member_access.carbon index d2db8797bd6b..6f3c92df2bcd 100644 --- a/toolchain/check/testdata/generic/template/member_access.carbon +++ b/toolchain/check/testdata/generic/template/member_access.carbon @@ -129,15 +129,15 @@ fn Test(e: E) { // CHECK:STDOUT: %inst.as_compatible.f9d: = inst_value [concrete] { // CHECK:STDOUT: %.492: %C = as_compatible @F.%x.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %inst.splice_block.263: = inst_value [concrete] { -// CHECK:STDOUT: %.aeb: %i32 = splice_block %.62d { +// CHECK:STDOUT: %inst.splice_block.d90: = inst_value [concrete] { +// CHECK:STDOUT: %.1a1: %i32 = splice_block %.62d { // CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc10 [concrete = @C.%.loc10] // CHECK:STDOUT: %.bbb: ref %i32 = class_element_access %.492, element0 // CHECK:STDOUT: %.62d: %i32 = acquire_value %.bbb // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %inst.splice_block.691: = inst_value [concrete] { -// CHECK:STDOUT: %.270: %i32 = splice_block %.aeb {} +// CHECK:STDOUT: %inst.splice_block.67f: = inst_value [concrete] { +// CHECK:STDOUT: %.33c: %i32 = splice_block %.1a1 {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.23a: = complete_type_witness %struct_type.m.n [concrete] // CHECK:STDOUT: %inst.as_compatible.a0e: = inst_value [concrete] { @@ -288,9 +288,9 @@ fn Test(e: E) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.059 // CHECK:STDOUT: %.loc5_17.4 => constants.%inst.as_compatible.f9d -// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.263 +// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.d90 // CHECK:STDOUT: %.loc5_17.6 => constants.%i32 -// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.691 +// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.67f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%struct_type.m.n) { @@ -515,8 +515,8 @@ fn Test(e: E) { // CHECK:STDOUT: %inst.as_compatible: = inst_value [concrete] { // CHECK:STDOUT: %.013: %E = as_compatible @F.loc4.%x.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %inst.splice_block.1a9: = inst_value [concrete] { -// CHECK:STDOUT: %.4cd: %F.77c = splice_block %.d22 { +// CHECK:STDOUT: %inst.splice_block.fb3: = inst_value [concrete] { +// CHECK:STDOUT: %.fbd: %F.77c = splice_block %.d22 { // CHECK:STDOUT: %n.ref: %E.elem = name_ref n, @E.%.loc11 [concrete = @E.%.loc11] // CHECK:STDOUT: %.3bf: ref %F.77c = class_element_access %.013, element0 // CHECK:STDOUT: %.d22: %F.77c = acquire_value %.3bf @@ -524,9 +524,9 @@ fn Test(e: E) { // CHECK:STDOUT: } // CHECK:STDOUT: %ImplicitAs.type.649: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.649 = struct_value () [concrete] -// CHECK:STDOUT: %inst.splice_block.004: = inst_value [concrete] { -// CHECK:STDOUT: %.03d: = splice_block [concrete = ] { -// CHECK:STDOUT: %.613: %i32 = converted %.4cd, [concrete = ] +// CHECK:STDOUT: %inst.splice_block.67b: = inst_value [concrete] { +// CHECK:STDOUT: %.932: = splice_block [concrete = ] { +// CHECK:STDOUT: %.a92: %i32 = converted %.fbd, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -658,8 +658,8 @@ fn Test(e: E) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.094 // CHECK:STDOUT: %.loc5_17.4 => constants.%inst.as_compatible -// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.1a9 +// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.fb3 // CHECK:STDOUT: %.loc5_17.6 => constants.%F.77c -// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.004 +// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.67b // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/cross_package_export.carbon b/toolchain/check/testdata/packages/cross_package_export.carbon index 8bc96787161e..fa2527fd4f15 100644 --- a/toolchain/check/testdata/packages/cross_package_export.carbon +++ b/toolchain/check/testdata/packages/cross_package_export.carbon @@ -294,7 +294,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -310,7 +310,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba -// CHECK:STDOUT: .x = imports.%Other.import_ref.636 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_copy.carbon @@ -326,7 +326,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -342,7 +342,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba -// CHECK:STDOUT: .x = imports.%Other.import_ref.636 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_indirect.carbon @@ -358,7 +358,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -374,7 +374,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8 -// CHECK:STDOUT: .x = imports.%Other.import_ref.c59 +// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export_import.carbon @@ -400,7 +400,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -426,7 +426,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba -// CHECK:STDOUT: .x = imports.%Other.import_ref.636 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -467,7 +467,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -493,7 +493,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba -// CHECK:STDOUT: .x = imports.%Other.import_ref.636 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -534,7 +534,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.56d: = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -560,7 +560,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba -// CHECK:STDOUT: .x = imports.%Other.import_ref.636 +// CHECK:STDOUT: .x = imports.%Other.import_ref.d40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -599,7 +599,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -625,7 +625,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8 -// CHECK:STDOUT: .x = imports.%Other.import_ref.c59 +// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -665,7 +665,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -691,7 +691,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8 -// CHECK:STDOUT: .x = imports.%Other.import_ref.c59 +// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -730,7 +730,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name_indirect, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.328: = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.61a = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.37d = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.aef = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -756,7 +756,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.61a -// CHECK:STDOUT: .x = imports.%Other.import_ref.37d +// CHECK:STDOUT: .x = imports.%Other.import_ref.aef // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -801,7 +801,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -827,7 +827,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8 -// CHECK:STDOUT: .x = imports.%Other.import_ref.c59 +// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -925,7 +925,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Other.import_ref.ad3: = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Other.import_ref.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -944,6 +944,6 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8 -// CHECK:STDOUT: .x = imports.%Other.import_ref.c59 +// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/export_import.carbon b/toolchain/check/testdata/packages/export_import.carbon index ad62754cd7e6..bcc9ce9f662c 100644 --- a/toolchain/check/testdata/packages/export_import.carbon +++ b/toolchain/check/testdata/packages/export_import.carbon @@ -306,7 +306,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -329,7 +329,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -366,7 +366,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_export, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -390,7 +390,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -425,7 +425,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -448,7 +448,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -483,7 +483,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -506,7 +506,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -541,7 +541,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -564,7 +564,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -599,7 +599,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -622,7 +622,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -657,7 +657,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -680,7 +680,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -715,7 +715,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -738,7 +738,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -785,7 +785,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -808,7 +808,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -844,7 +844,7 @@ export Poison; // CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -868,7 +868,7 @@ export Poison; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/export_mixed.carbon b/toolchain/check/testdata/packages/export_mixed.carbon index a4f244ad7e2f..c6c18513be01 100644 --- a/toolchain/check/testdata/packages/export_mixed.carbon +++ b/toolchain/check/testdata/packages/export_mixed.carbon @@ -190,7 +190,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -207,7 +207,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name.carbon @@ -224,7 +224,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -241,7 +241,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_then_import.carbon @@ -275,7 +275,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -298,7 +298,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -333,7 +333,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -356,7 +356,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -391,7 +391,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -414,7 +414,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -486,7 +486,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -509,7 +509,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -552,10 +552,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %Main.D: type = import_ref Main//base, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.5ab: = import_ref Main//base, loc10_1, loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.153 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.14d = import_ref Main//base, loc9_8, unloaded +// CHECK:STDOUT: %Main.import_ref.09a = import_ref Main//base, loc9_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -587,7 +587,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "base.carbon"] { @@ -595,7 +595,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.153 -// CHECK:STDOUT: .y = imports.%Main.import_ref.14d +// CHECK:STDOUT: .y = imports.%Main.import_ref.09a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/export_name.carbon b/toolchain/check/testdata/packages/export_name.carbon index cbe8b4d64242..42e953e55237 100644 --- a/toolchain/check/testdata/packages/export_name.carbon +++ b/toolchain/check/testdata/packages/export_name.carbon @@ -272,10 +272,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//base, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: %Main.import_ref.5ab: = import_ref Main//base, loc11_1, loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.bce = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.d44 = import_ref Main//base, loc10_8, unloaded +// CHECK:STDOUT: %Main.import_ref.b8c = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -293,7 +293,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { @@ -301,7 +301,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.bce -// CHECK:STDOUT: .y = imports.%Main.import_ref.d44 +// CHECK:STDOUT: .y = imports.%Main.import_ref.b8c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- not_reexporting.carbon @@ -344,10 +344,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.63c: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.a93 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.879 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.18c = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -365,7 +365,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { @@ -373,7 +373,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.a93 -// CHECK:STDOUT: .y = imports.%Main.import_ref.879 +// CHECK:STDOUT: .y = imports.%Main.import_ref.18c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_in_impl.carbon @@ -412,10 +412,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.63c: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.a93 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.879 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.18c = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -450,7 +450,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { @@ -458,7 +458,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.a93 -// CHECK:STDOUT: .y = imports.%Main.import_ref.879 +// CHECK:STDOUT: .y = imports.%Main.import_ref.18c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -514,10 +514,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export_export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.328: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.f5d = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.8e4 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.ce5 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.c12: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.684 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.66e = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b98 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -553,7 +553,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.f5d -// CHECK:STDOUT: .x = imports.%Main.import_ref.8e4 +// CHECK:STDOUT: .x = imports.%Main.import_ref.ce5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { @@ -561,7 +561,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.684 -// CHECK:STDOUT: .y = imports.%Main.import_ref.66e +// CHECK:STDOUT: .y = imports.%Main.import_ref.b98 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -617,10 +617,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export_export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.328: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.f5d = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.8e4 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.ce5 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.c12: = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.684 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.66e = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.b98 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -655,7 +655,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.f5d -// CHECK:STDOUT: .x = imports.%Main.import_ref.8e4 +// CHECK:STDOUT: .x = imports.%Main.import_ref.ce5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { @@ -663,7 +663,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.684 -// CHECK:STDOUT: .y = imports.%Main.import_ref.66e +// CHECK:STDOUT: .y = imports.%Main.import_ref.b98 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -749,7 +749,7 @@ private export C; // CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -765,7 +765,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_both.carbon @@ -798,10 +798,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//base, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: %Main.import_ref.5ab: = import_ref Main//base, loc11_1, loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.bce = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.d44 = import_ref Main//base, loc10_8, unloaded +// CHECK:STDOUT: %Main.import_ref.b8c = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -836,7 +836,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { @@ -844,7 +844,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.bce -// CHECK:STDOUT: .y = imports.%Main.import_ref.d44 +// CHECK:STDOUT: .y = imports.%Main.import_ref.b8c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -900,10 +900,10 @@ private export C; // CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.63c: = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4] // CHECK:STDOUT: %Main.import_ref.a93 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.879 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.18c = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -938,7 +938,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { @@ -946,7 +946,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.a93 -// CHECK:STDOUT: .y = imports.%Main.import_ref.879 +// CHECK:STDOUT: .y = imports.%Main.import_ref.18c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -1007,7 +1007,7 @@ private export C; // CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1024,7 +1024,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_repeat_export.carbon @@ -1045,7 +1045,7 @@ private export C; // CHECK:STDOUT: %Main.C: type = import_ref Main//repeat_export, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.ad3: = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.038 = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1068,7 +1068,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.038 -// CHECK:STDOUT: .x = imports.%Main.import_ref.21b +// CHECK:STDOUT: .x = imports.%Main.import_ref.751 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -1103,7 +1103,7 @@ private export C; // CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded // CHECK:STDOUT: %Main.import_ref.56d: = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1120,6 +1120,6 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2 -// CHECK:STDOUT: .x = imports.%Main.import_ref.534 +// CHECK:STDOUT: .x = imports.%Main.import_ref.022 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_export_name_member.carbon b/toolchain/check/testdata/packages/fail_export_name_member.carbon index 8f44ad67d007..28f243e3b436 100644 --- a/toolchain/check/testdata/packages/fail_export_name_member.carbon +++ b/toolchain/check/testdata/packages/fail_export_name_member.carbon @@ -78,7 +78,7 @@ export C.n; // CHECK:STDOUT: %Foo.C: type = import_ref Foo//a, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Foo.import_ref.9fc: = import_ref Foo//a, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Foo.import_ref.ddc = import_ref Foo//a, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Foo.import_ref.cd8 = import_ref Foo//a, loc5_8, unloaded +// CHECK:STDOUT: %Foo.import_ref.b76 = import_ref Foo//a, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -93,6 +93,6 @@ export C.n; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%Foo.import_ref.ddc -// CHECK:STDOUT: .n = imports.%Foo.import_ref.cd8 +// CHECK:STDOUT: .n = imports.%Foo.import_ref.b76 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 6d6e0fdd674a..01242803929c 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -904,8 +904,8 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %P.D: type = import_ref P//library, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %P.import_ref.c88: = import_ref P//library, loc5_35, loaded [concrete = constants.%complete_type.78f] // CHECK:STDOUT: %P.import_ref.89b = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %P.import_ref.991 = import_ref P//library, loc5_16, unloaded -// CHECK:STDOUT: %P.import_ref.dc8 = import_ref P//library, loc5_28, unloaded +// CHECK:STDOUT: %P.import_ref.9e1 = import_ref P//library, loc5_16, unloaded +// CHECK:STDOUT: %P.import_ref.76c = import_ref P//library, loc5_28, unloaded // CHECK:STDOUT: %P.C: %C.type = import_ref P//library, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %P.import_ref.8f2: = import_ref P//library, loc4_19, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %P.import_ref.784 = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded @@ -1027,8 +1027,8 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%P.import_ref.89b -// CHECK:STDOUT: .n = imports.%P.import_ref.991 -// CHECK:STDOUT: .m = imports.%P.import_ref.dc8 +// CHECK:STDOUT: .n = imports.%P.import_ref.9e1 +// CHECK:STDOUT: .m = imports.%P.import_ref.76c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%P.import_ref.c2f: %i32) [from "library.carbon"] { diff --git a/toolchain/sem_ir/BUILD b/toolchain/sem_ir/BUILD index 773023e2c4a8..40abe2f60c40 100644 --- a/toolchain/sem_ir/BUILD +++ b/toolchain/sem_ir/BUILD @@ -92,6 +92,7 @@ cc_library( "cpp_initializer_list.cpp", "cpp_overload_set.cpp", "facet_type_info.cpp", + "field.cpp", "file.cpp", "function.cpp", "generic.cpp", @@ -125,6 +126,7 @@ cc_library( "entity_name.h", "entity_with_params_base.h", "facet_type_info.h", + "field.h", "file.h", "function.h", "generic.h", diff --git a/toolchain/sem_ir/dump.cpp b/toolchain/sem_ir/dump.cpp index ea3d1b10446d..f45bef01b5a1 100644 --- a/toolchain/sem_ir/dump.cpp +++ b/toolchain/sem_ir/dump.cpp @@ -274,6 +274,16 @@ LLVM_DUMP_METHOD auto Dump(const File& file, FacetTypeId facet_type_id) return out.TakeStr(); } +LLVM_DUMP_METHOD auto Dump(const File& file, FieldId field_id) -> std::string { + RawStringOstream out; + out << field_id; + if (field_id.has_value()) { + const auto& field = file.fields().Get(field_id); + out << ": " << field; + } + return out.TakeStr(); +} + LLVM_DUMP_METHOD auto Dump(const File& file, FunctionId function_id) -> std::string { RawStringOstream out; diff --git a/toolchain/sem_ir/dump.h b/toolchain/sem_ir/dump.h index e026aeda9065..517f7ce08359 100644 --- a/toolchain/sem_ir/dump.h +++ b/toolchain/sem_ir/dump.h @@ -26,6 +26,7 @@ auto Dump(const File& file, ClassId class_id) -> std::string; auto Dump(const File& file, ConstantId const_id) -> std::string; auto Dump(const File& file, EntityNameId entity_name_id) -> std::string; auto Dump(const File& file, FacetTypeId facet_type_id) -> std::string; +auto Dump(const File& file, FieldId field_id) -> std::string; auto Dump(const File& file, FunctionId function_id) -> std::string; auto Dump(const File& file, GenericId generic_id) -> std::string; auto Dump(const File& file, IdentifiedFacetTypeId identified_facet_type_id) diff --git a/toolchain/sem_ir/field.cpp b/toolchain/sem_ir/field.cpp new file mode 100644 index 000000000000..a77ae3f85610 --- /dev/null +++ b/toolchain/sem_ir/field.cpp @@ -0,0 +1,11 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include "toolchain/sem_ir/field.h" + +#include "toolchain/base/value_store_impl.h" + +namespace Carbon { +template class ValueStore>; +} // namespace Carbon diff --git a/toolchain/sem_ir/field.h b/toolchain/sem_ir/field.h new file mode 100644 index 000000000000..dfae79991052 --- /dev/null +++ b/toolchain/sem_ir/field.h @@ -0,0 +1,32 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#ifndef CARBON_TOOLCHAIN_SEM_IR_FIELD_H_ +#define CARBON_TOOLCHAIN_SEM_IR_FIELD_H_ + +#include "toolchain/base/value_store.h" +#include "toolchain/sem_ir/ids.h" + +namespace Carbon::SemIR { + +// A class field. +struct Field : public Printable { + ElementIndex index; + SemIR::InstId initializer_id; + + auto Print(llvm::raw_ostream& out) const -> void { + out << "{index: " << index << ", initializer_id: " << initializer_id << "}"; + } +}; + +using FieldStore = ValueStore>; + +} // namespace Carbon::SemIR + +namespace Carbon { +extern template class ValueStore>; +} // namespace Carbon + +#endif // CARBON_TOOLCHAIN_SEM_IR_FIELD_H_ diff --git a/toolchain/sem_ir/file.cpp b/toolchain/sem_ir/file.cpp index b1174c906928..948664d8fea3 100644 --- a/toolchain/sem_ir/file.cpp +++ b/toolchain/sem_ir/file.cpp @@ -45,6 +45,7 @@ File::File(const Parse::Tree* parse_tree, CheckIRId check_ir_id, cpp_overload_sets_(check_ir_id), thunks_(check_ir_id), classes_(check_ir_id), + fields_(check_ir_id), interfaces_(check_ir_id), named_constraints_(check_ir_id), require_impls_(check_ir_id), diff --git a/toolchain/sem_ir/file.h b/toolchain/sem_ir/file.h index 3451be3ce03a..0db52bfc333c 100644 --- a/toolchain/sem_ir/file.h +++ b/toolchain/sem_ir/file.h @@ -27,6 +27,7 @@ #include "toolchain/sem_ir/cpp_overload_set.h" #include "toolchain/sem_ir/entity_name.h" #include "toolchain/sem_ir/facet_type_info.h" +#include "toolchain/sem_ir/field.h" #include "toolchain/sem_ir/function.h" #include "toolchain/sem_ir/generic.h" #include "toolchain/sem_ir/ids.h" @@ -180,6 +181,8 @@ class File : public Printable { auto thunks() const -> const ThunkStore& { return thunks_; } auto classes() -> ClassStore& { return classes_; } auto classes() const -> const ClassStore& { return classes_; } + auto fields() -> FieldStore& { return fields_; } + auto fields() const -> const FieldStore& { return fields_; } auto interfaces() -> InterfaceStore& { return interfaces_; } auto interfaces() const -> const InterfaceStore& { return interfaces_; } auto named_constraints() -> NamedConstraintStore& { @@ -208,11 +211,6 @@ class File : public Printable { auto facet_types() -> FacetTypeInfoStore& { return facet_types_; } auto facet_types() const -> const FacetTypeInfoStore& { return facet_types_; } - using FieldInitializerMap = Map; - auto field_initializers() -> FieldInitializerMap& { - return field_initializers_; - } - // If `class_id` is an imported C++ class, appends the Clang mangled name of // its type to `out` and returns true. Otherwise returns false and leaves // `out` unchanged. @@ -370,12 +368,8 @@ class File : public Printable { // Storage for classes. ClassStore classes_; - // Map containing initializers for class fields. The map keys are - // `InstId`s corresponding to `FielDecl`s. - // - // TODO: consider replacing this map with a separate store for fields - // and tracking a new `FieldId` in the `FieldDecl`. - FieldInitializerMap field_initializers_; + // Storage for class fields. + FieldStore fields_; // Storage for interfaces. InterfaceStore interfaces_; diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index ca8f2390cebb..7abaa1c8fa15 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -1562,6 +1562,15 @@ auto Formatter::FormatArg(FacetTypeId id) -> void { out() << ">"; } +auto Formatter::FormatArg(FieldId id) -> void { + const auto& field = sem_ir_->fields().Get(id); + out() << field.index; + if (field.initializer_id.has_value()) { + out() << ", initializer = "; + out() << field.initializer_id; + } +} + auto Formatter::FormatArg(ImportIRId id) -> void { if (id.has_value()) { out() << GetImportIRLabel(id); diff --git a/toolchain/sem_ir/formatter.h b/toolchain/sem_ir/formatter.h index 3e2123131149..35dcb000d65c 100644 --- a/toolchain/sem_ir/formatter.h +++ b/toolchain/sem_ir/formatter.h @@ -265,6 +265,7 @@ class Formatter { auto FormatArg(CharId c) -> void { out() << c; } auto FormatArg(EntityNameId id) -> void; auto FormatArg(FacetTypeId id) -> void; + auto FormatArg(FieldId id) -> void; auto FormatArg(IntKind k) -> void { k.Print(out()); } auto FormatArg(FloatKind k) -> void { k.Print(out()); } auto FormatArg(ImportIRId id) -> void; diff --git a/toolchain/sem_ir/id_kind.h b/toolchain/sem_ir/id_kind.h index 560c04f11bcc..ac89838db70c 100644 --- a/toolchain/sem_ir/id_kind.h +++ b/toolchain/sem_ir/id_kind.h @@ -47,6 +47,7 @@ using IdKind = TypeEnum< EntityNameId, ExprRegionId, FacetTypeId, + FieldId, FloatKind, FunctionId, GenericId, diff --git a/toolchain/sem_ir/ids.h b/toolchain/sem_ir/ids.h index 3b8bc7c8e55a..6862641899ae 100644 --- a/toolchain/sem_ir/ids.h +++ b/toolchain/sem_ir/ids.h @@ -330,6 +330,13 @@ struct ClassId : public IdBase { using IdBase::IdBase; }; +// The ID of a `Field`. +struct FieldId : public IdBase { + static constexpr llvm::StringLiteral Label = "field"; + + using IdBase::IdBase; +}; + // The ID of a `Vtable`. struct VtableId : public IdBase { static constexpr llvm::StringLiteral Label = "vtable"; diff --git a/toolchain/sem_ir/inst_fingerprinter.cpp b/toolchain/sem_ir/inst_fingerprinter.cpp index 1887a8cd0272..3a830600a329 100644 --- a/toolchain/sem_ir/inst_fingerprinter.cpp +++ b/toolchain/sem_ir/inst_fingerprinter.cpp @@ -442,6 +442,12 @@ struct Worklist { } } + auto Add(FieldId field_id) -> void { + const auto& field = sem_ir->fields().Get(field_id); + Add(field.index); + Add(field.initializer_id); + } + auto Add(VtableId vtable_id) -> void { const auto& vtable = sem_ir->vtables().Get(vtable_id); if (vtable.class_id.has_value()) { diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index a152df65e063..b781300c8725 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -724,7 +724,7 @@ struct FieldDecl { TypeId type_id; NameId name_id; - ElementIndex index; + FieldId field_id; }; // The float literal type.