浏览代码

Remove param_refs and implicit_param_refs (#4479)

This introduces `calling_convention_param_ids`, a single block that
consolidates all the information that was being used by consumers of
`param_refs` and `implicit_param_refs`, in a form that's easier to
produce and typically easier to consume.

See also [this Discord
discussion](https://discord.com/channels/655572317891461132/655578254970716160/1300545448909738125)
regarding the decision to keep the return slot last in the SemIR calling
convention, even though it goes first in the LLVM calling convention.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
Geoff Romer 1 年之前
父节点
当前提交
4f816dd03f
共有 38 个文件被更改,包括 940 次插入1105 次删除
  1. 1 1
      toolchain/check/call.cpp
  2. 1 2
      toolchain/check/decl_name_stack.h
  3. 1 2
      toolchain/check/global_init.cpp
  4. 17 17
      toolchain/check/handle_function.cpp
  5. 6 7
      toolchain/check/handle_impl.cpp
  6. 5 127
      toolchain/check/import_ref.cpp
  7. 5 7
      toolchain/check/name_component.cpp
  8. 6 2
      toolchain/check/name_component.h
  9. 23 19
      toolchain/check/pattern_match.cpp
  10. 9 14
      toolchain/check/pattern_match.h
  11. 2 1
      toolchain/check/testdata/basics/no_prelude/raw_and_textual_ir.carbon
  12. 17 18
      toolchain/check/testdata/basics/no_prelude/raw_ir.carbon
  13. 2 2
      toolchain/check/testdata/builtins/float/make_type.carbon
  14. 315 315
      toolchain/check/testdata/builtins/int/convert_checked.carbon
  15. 3 3
      toolchain/check/testdata/builtins/int/make_type_signed.carbon
  16. 1 1
      toolchain/check/testdata/builtins/print.carbon
  17. 6 6
      toolchain/check/testdata/class/generic/base_is_generic.carbon
  18. 101 101
      toolchain/check/testdata/class/generic/import.carbon
  19. 10 10
      toolchain/check/testdata/class/import.carbon
  20. 6 6
      toolchain/check/testdata/class/import_base.carbon
  21. 3 3
      toolchain/check/testdata/const/import.carbon
  22. 25 25
      toolchain/check/testdata/function/declaration/import.carbon
  23. 7 7
      toolchain/check/testdata/function/definition/import.carbon
  24. 2 2
      toolchain/check/testdata/if_expr/fail_not_in_function.carbon
  25. 1 1
      toolchain/check/testdata/impl/fail_redefinition.carbon
  26. 1 1
      toolchain/check/testdata/impl/lookup/no_prelude/import.carbon
  27. 2 2
      toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon
  28. 33 33
      toolchain/check/testdata/packages/implicit_imports_prelude.carbon
  29. 34 34
      toolchain/check/testdata/pointer/import.carbon
  30. 31 31
      toolchain/check/testdata/return/no_prelude/import_convert_function.carbon
  31. 113 113
      toolchain/check/testdata/struct/import.carbon
  32. 113 113
      toolchain/check/testdata/tuple/import.carbon
  33. 18 37
      toolchain/lower/file_context.cpp
  34. 16 13
      toolchain/sem_ir/entity_with_params_base.h
  35. 0 14
      toolchain/sem_ir/function.cpp
  36. 0 11
      toolchain/sem_ir/function.h
  37. 2 0
      toolchain/sem_ir/ids.h
  38. 2 4
      toolchain/sem_ir/typed_insts.h

+ 1 - 1
toolchain/check/call.cpp

@@ -46,7 +46,7 @@ static auto ResolveCalleeInCall(Context& context, SemIR::LocId loc_id,
                                 llvm::ArrayRef<SemIR::InstId> arg_ids)
     -> std::optional<SemIR::SpecificId> {
   // Check that the arity matches.
-  auto params = context.inst_blocks().GetOrEmpty(entity.param_refs_id);
+  auto params = context.inst_blocks().GetOrEmpty(entity.param_patterns_id);
   if (arg_ids.size() != params.size()) {
     CARBON_DIAGNOSTIC(CallArgCountMismatch, Error,
                       "{0} argument{0:s} passed to "

+ 1 - 2
toolchain/check/decl_name_stack.h

@@ -101,10 +101,9 @@ class DeclNameStack {
           .first_param_node_id = name.first_param_node_id,
           .last_param_node_id = name.last_param_node_id,
           .pattern_block_id = name.pattern_block_id,
-          .implicit_param_refs_id = name.implicit_params_id,
           .implicit_param_patterns_id = name.implicit_param_patterns_id,
-          .param_refs_id = name.params_id,
           .param_patterns_id = name.param_patterns_id,
+          .call_params_id = name.call_params_id,
           .is_extern = is_extern,
           .extern_library_id = extern_library,
           .non_owning_decl_id =

+ 1 - 2
toolchain/check/global_init.cpp

@@ -41,10 +41,9 @@ auto GlobalInit::Finalize() -> void {
         .first_param_node_id = Parse::NodeId::Invalid,
         .last_param_node_id = Parse::NodeId::Invalid,
         .pattern_block_id = SemIR::InstBlockId::Empty,
-        .implicit_param_refs_id = SemIR::InstBlockId::Invalid,
         .implicit_param_patterns_id = SemIR::InstBlockId::Invalid,
-        .param_refs_id = SemIR::InstBlockId::Empty,
         .param_patterns_id = SemIR::InstBlockId::Empty,
+        .call_params_id = SemIR::InstBlockId::Empty,
         .is_extern = false,
         .extern_library_id = SemIR::LibraryNameId::Invalid,
         .non_owning_decl_id = SemIR::InstId::Invalid,

+ 17 - 17
toolchain/check/handle_function.cpp

@@ -182,10 +182,8 @@ static auto BuildFunctionDecl(Context& context,
   }
 
   auto name = PopNameComponent(context, return_slot_pattern_id);
-  if (!name.params_id.is_valid()) {
-    CARBON_CHECK(!name.param_patterns_id.is_valid());
+  if (!name.param_patterns_id.is_valid()) {
     context.TODO(node_id, "function with positional parameters");
-    name.params_id = SemIR::InstBlockId::Empty;
     name.param_patterns_id = SemIR::InstBlockId::Empty;
   }
 
@@ -341,26 +339,28 @@ static auto HandleFunctionDefinitionAfterSignature(
   CheckFunctionReturnType(context, function.return_slot_id, function,
                           SemIR::SpecificId::Invalid);
 
+  auto params_to_complete =
+      context.inst_blocks().GetOrEmpty(function.call_params_id);
+  if (function.return_slot_id.is_valid()) {
+    // Exclude the return slot because it's diagnosed above.
+    params_to_complete = params_to_complete.drop_back();
+  }
   // Check the parameter types are complete.
-  for (auto param_ref_id : llvm::concat<const SemIR::InstId>(
-           context.inst_blocks().GetOrEmpty(function.implicit_param_refs_id),
-           context.inst_blocks().GetOrEmpty(function.param_refs_id))) {
+  for (auto param_ref_id : params_to_complete) {
     if (param_ref_id == SemIR::InstId::BuiltinErrorInst) {
       continue;
     }
-    auto param_info =
-        SemIR::Function::GetParamFromParamRefId(context.sem_ir(), param_ref_id);
 
     // The parameter types need to be complete.
-    context.TryToCompleteType(param_info.inst.type_id, [&] {
-      CARBON_DIAGNOSTIC(
-          IncompleteTypeInFunctionParam, Error,
-          "parameter has incomplete type {0} in function definition",
-          TypeOfInstId);
-      return context.emitter().Build(param_info.inst_id,
-                                     IncompleteTypeInFunctionParam,
-                                     param_info.inst_id);
-    });
+    context.TryToCompleteType(
+        context.insts().GetAs<SemIR::AnyParam>(param_ref_id).type_id, [&] {
+          CARBON_DIAGNOSTIC(
+              IncompleteTypeInFunctionParam, Error,
+              "parameter has incomplete type {0} in function definition",
+              TypeOfInstId);
+          return context.emitter().Build(
+              param_ref_id, IncompleteTypeInFunctionParam, param_ref_id);
+        });
   }
 
   context.node_stack().Push(node_id, function_id);

+ 6 - 7
toolchain/check/handle_impl.cpp

@@ -198,14 +198,14 @@ static auto PopImplIntroducerAndParamsAsNameComponent(
   auto [implicit_params_loc_id, implicit_param_patterns_id] =
       context.node_stack().PopWithNodeIdIf<Parse::NodeKind::ImplForall>();
 
-  ParameterBlocks parameter_blocks{
-      .implicit_params_id = SemIR::InstBlockId::Invalid,
-      .params_id = SemIR::InstBlockId::Invalid,
-      .return_slot_id = SemIR::InstId::Invalid};
   if (implicit_param_patterns_id) {
-    parameter_blocks =
+    // Emit the `forall` match. This shouldn't produce any `Call` params,
+    // because `impl`s are never actually called at runtime.
+    auto parameter_blocks =
         CalleePatternMatch(context, *implicit_param_patterns_id,
                            SemIR::InstBlockId::Invalid, SemIR::InstId::Invalid);
+    CARBON_CHECK(parameter_blocks.call_params_id == SemIR::InstBlockId::Empty);
+    CARBON_CHECK(parameter_blocks.return_slot_id == SemIR::InstId::Invalid);
   }
 
   Parse::NodeId first_param_node_id =
@@ -218,12 +218,11 @@ static auto PopImplIntroducerAndParamsAsNameComponent(
       .first_param_node_id = first_param_node_id,
       .last_param_node_id = last_param_node_id,
       .implicit_params_loc_id = implicit_params_loc_id,
-      .implicit_params_id = parameter_blocks.implicit_params_id,
       .implicit_param_patterns_id =
           implicit_param_patterns_id.value_or(SemIR::InstBlockId::Invalid),
       .params_loc_id = Parse::NodeId::Invalid,
-      .params_id = SemIR::InstBlockId::Invalid,
       .param_patterns_id = SemIR::InstBlockId::Invalid,
+      .call_params_id = SemIR::InstBlockId::Invalid,
       .return_slot_pattern_id = SemIR::InstId::Invalid,
       .return_slot_id = SemIR::InstId::Invalid,
       .pattern_block_id = context.pattern_block_stack().Pop(),

+ 5 - 127
toolchain/check/import_ref.cpp

@@ -667,27 +667,6 @@ class ImportRefResolver {
     return specific_id;
   }
 
-  // Adds unresolved constants for each parameter's type to work_stack_.
-  auto LoadLocalParamConstantIds(SemIR::InstBlockId param_refs_id) -> void {
-    if (!param_refs_id.is_valid() ||
-        param_refs_id == SemIR::InstBlockId::Empty) {
-      return;
-    }
-
-    const auto& param_refs = import_ir_.inst_blocks().Get(param_refs_id);
-    for (auto inst_id : param_refs) {
-      GetLocalConstantId(import_ir_.insts().Get(inst_id).type_id());
-
-      // If the parameter is a symbolic binding, build the BindSymbolicName
-      // constant.
-      auto bind_id = inst_id;
-      auto bind_inst = import_ir_.insts().Get(bind_id);
-      if (bind_inst.Is<SemIR::BindSymbolicName>()) {
-        GetLocalConstantId(bind_id);
-      }
-    }
-  }
-
   // Adds unresolved constants for each parameter's type to work_stack_.
   auto LoadLocalPatternConstantIds(SemIR::InstBlockId param_patterns_id)
       -> void {
@@ -718,10 +697,11 @@ class ImportRefResolver {
     }
   }
 
-  // Returns a version of param_refs_id localized to the current IR.
+  // Returns a version of param_patterns_id localized to the current IR.
   //
-  // Must only be called after a call to GetLocalParamConstantIds(param_refs_id)
-  // has completed without adding any new work to work_stack_.
+  // Must only be called after a call to
+  // LoadLocalPatternConstantIds(param_patterns_id) has completed without adding
+  // any new work to work_stack_.
   //
   // TODO: This is inconsistent with the rest of this class, which expects
   // the relevant constants to be explicitly passed in. That makes it
@@ -730,81 +710,6 @@ class ImportRefResolver {
   // take a holistic look at how to balance those concerns. For example,
   // could the same function be used to load the constants and use them, with
   // a parameter to select between the two?
-  auto GetLocalParamRefsId(SemIR::InstBlockId param_refs_id)
-      -> SemIR::InstBlockId {
-    if (!param_refs_id.is_valid() ||
-        param_refs_id == SemIR::InstBlockId::Empty) {
-      return param_refs_id;
-    }
-    const auto& param_refs = import_ir_.inst_blocks().Get(param_refs_id);
-    llvm::SmallVector<SemIR::InstId> new_param_refs;
-    for (auto ref_id : param_refs) {
-      // Figure out the param structure. This echoes
-      // Function::GetParamFromParamRefId, and could use that function if we
-      // added `bool addr` and `InstId bind_inst_id` to its return `ParamInfo`.
-      // TODO: Consider a different parameter handling to simplify import logic.
-      auto inst = import_ir_.insts().Get(ref_id);
-
-      auto bind_id = ref_id;
-      auto param_id = ref_id;
-
-      auto bind_inst = inst.As<SemIR::AnyBindName>();
-      param_id = bind_inst.value_id;
-      inst = import_ir_.insts().Get(param_id);
-      auto param_inst = inst.As<SemIR::ValueParam>();
-
-      // Rebuild the param instruction.
-      auto entity_name =
-          import_ir_.entity_names().Get(bind_inst.entity_name_id);
-      auto name_id = GetLocalNameId(entity_name.name_id);
-      auto type_id = context_.GetTypeIdForTypeConstant(
-          GetLocalConstantIdChecked(param_inst.type_id));
-
-      auto new_param_id = context_.AddInstInNoBlock<SemIR::ValueParam>(
-          AddImportIRInst(param_id),
-          {.type_id = type_id,
-           .runtime_index = param_inst.runtime_index,
-           .pretty_name_id = GetLocalNameId(param_inst.pretty_name_id)});
-      switch (bind_inst.kind) {
-        case SemIR::BindName::Kind: {
-          auto entity_name_id = context_.entity_names().Add(
-              {.name_id = name_id,
-               .parent_scope_id = SemIR::NameScopeId::Invalid,
-               .bind_index = SemIR::CompileTimeBindIndex::Invalid});
-          new_param_id = context_.AddInstInNoBlock<SemIR::BindName>(
-              AddImportIRInst(bind_id), {.type_id = type_id,
-                                         .entity_name_id = entity_name_id,
-                                         .value_id = new_param_id});
-          break;
-        }
-        case SemIR::BindSymbolicName::Kind: {
-          // We already imported a constant value for this symbolic binding.
-          // We can reuse most of it, but update the value to point to our
-          // specific parameter, and preserve the constant value.
-          auto new_bind_inst = context_.insts().GetAs<SemIR::BindSymbolicName>(
-              context_.constant_values().GetInstId(
-                  GetLocalConstantIdChecked(bind_id)));
-          new_bind_inst.value_id = new_param_id;
-          new_param_id = context_.AddInstInNoBlock(AddImportIRInst(bind_id),
-                                                   new_bind_inst);
-          context_.constant_values().Set(new_param_id,
-                                         GetLocalConstantIdChecked(bind_id));
-          break;
-        }
-        default: {
-          CARBON_FATAL("Unexpected kind: {0}", bind_inst.kind);
-        }
-      }
-      new_param_refs.push_back(new_param_id);
-    }
-    return context_.inst_blocks().Add(new_param_refs);
-  }
-
-  // Returns a version of param_patterns_id localized to the current IR.
-  //
-  // Must only be called after a call to
-  // LoadLocalPatternConstantIds(param_patterns_id) has completed without adding
-  // any new work to work_stack_.
   auto GetLocalParamPatternsId(SemIR::InstBlockId param_patterns_id)
       -> SemIR::InstBlockId {
     if (!param_patterns_id.is_valid() ||
@@ -1035,19 +940,14 @@ class ImportRefResolver {
         .first_param_node_id = Parse::NodeId::Invalid,
         .last_param_node_id = Parse::NodeId::Invalid,
         .pattern_block_id = SemIR::InstBlockId::Invalid,
-        .implicit_param_refs_id = import_base.implicit_param_refs_id.is_valid()
-                                      ? SemIR::InstBlockId::Empty
-                                      : SemIR::InstBlockId::Invalid,
         .implicit_param_patterns_id =
             import_base.implicit_param_patterns_id.is_valid()
                 ? SemIR::InstBlockId::Empty
                 : SemIR::InstBlockId::Invalid,
-        .param_refs_id = import_base.param_refs_id.is_valid()
-                             ? SemIR::InstBlockId::Empty
-                             : SemIR::InstBlockId::Invalid,
         .param_patterns_id = import_base.param_patterns_id.is_valid()
                                  ? SemIR::InstBlockId::Empty
                                  : SemIR::InstBlockId::Invalid,
+        .call_params_id = SemIR::InstBlockId::Invalid,
         .is_extern = import_base.is_extern,
         .extern_library_id = extern_library_id,
         .non_owning_decl_id = import_base.non_owning_decl_id.is_valid()
@@ -1527,9 +1427,7 @@ class ImportRefResolver {
 
     // Load constants for the definition.
     auto parent_scope_id = GetLocalNameScopeId(import_class.parent_scope_id);
-    LoadLocalParamConstantIds(import_class.implicit_param_refs_id);
     LoadLocalPatternConstantIds(import_class.implicit_param_patterns_id);
-    LoadLocalParamConstantIds(import_class.param_refs_id);
     LoadLocalPatternConstantIds(import_class.param_patterns_id);
     auto generic_data = GetLocalGenericData(import_class.generic_id);
     auto self_const_id = GetLocalConstantId(import_class.self_type_id);
@@ -1547,11 +1445,8 @@ class ImportRefResolver {
 
     auto& new_class = context_.classes().Get(class_id);
     new_class.parent_scope_id = parent_scope_id;
-    new_class.implicit_param_refs_id =
-        GetLocalParamRefsId(import_class.implicit_param_refs_id);
     new_class.implicit_param_patterns_id =
         GetLocalParamPatternsId(import_class.implicit_param_patterns_id);
-    new_class.param_refs_id = GetLocalParamRefsId(import_class.param_refs_id);
     new_class.param_patterns_id =
         GetLocalParamPatternsId(import_class.param_patterns_id);
     SetGenericData(import_class.generic_id, new_class.generic_id, generic_data);
@@ -1705,9 +1600,7 @@ class ImportRefResolver {
           import_ir_.insts().Get(import_function.return_slot_id).type_id());
     }
     auto parent_scope_id = GetLocalNameScopeId(import_function.parent_scope_id);
-    LoadLocalParamConstantIds(import_function.implicit_param_refs_id);
     LoadLocalPatternConstantIds(import_function.implicit_param_patterns_id);
-    LoadLocalParamConstantIds(import_function.param_refs_id);
     LoadLocalPatternConstantIds(import_function.param_patterns_id);
     auto generic_data = GetLocalGenericData(import_function.generic_id);
 
@@ -1718,12 +1611,8 @@ class ImportRefResolver {
     // Add the function declaration.
     auto& new_function = context_.functions().Get(function_id);
     new_function.parent_scope_id = parent_scope_id;
-    new_function.implicit_param_refs_id =
-        GetLocalParamRefsId(import_function.implicit_param_refs_id);
     new_function.implicit_param_patterns_id =
         GetLocalParamPatternsId(import_function.implicit_param_patterns_id);
-    new_function.param_refs_id =
-        GetLocalParamRefsId(import_function.param_refs_id);
     new_function.param_patterns_id =
         GetLocalParamPatternsId(import_function.param_patterns_id);
     new_function.return_slot_pattern_id =
@@ -1874,7 +1763,6 @@ class ImportRefResolver {
 
     // Load constants for the definition.
     auto parent_scope_id = GetLocalNameScopeId(import_impl.parent_scope_id);
-    LoadLocalParamConstantIds(import_impl.implicit_param_refs_id);
     LoadLocalPatternConstantIds(import_impl.implicit_param_patterns_id);
     auto generic_data = GetLocalGenericData(import_impl.generic_id);
     auto self_const_id = GetLocalConstantId(
@@ -1888,12 +1776,8 @@ class ImportRefResolver {
 
     auto& new_impl = context_.impls().Get(impl_id);
     new_impl.parent_scope_id = parent_scope_id;
-    new_impl.implicit_param_refs_id =
-        GetLocalParamRefsId(import_impl.implicit_param_refs_id);
     new_impl.implicit_param_patterns_id =
         GetLocalParamPatternsId(import_impl.implicit_param_patterns_id);
-    CARBON_CHECK(!import_impl.param_refs_id.is_valid() &&
-                 !new_impl.param_refs_id.is_valid());
     SetGenericData(import_impl.generic_id, new_impl.generic_id, generic_data);
 
     // Create instructions for self and constraint to hold the symbolic constant
@@ -2043,9 +1927,7 @@ class ImportRefResolver {
 
     auto parent_scope_id =
         GetLocalNameScopeId(import_interface.parent_scope_id);
-    LoadLocalParamConstantIds(import_interface.implicit_param_refs_id);
     LoadLocalPatternConstantIds(import_interface.implicit_param_patterns_id);
-    LoadLocalParamConstantIds(import_interface.param_refs_id);
     LoadLocalPatternConstantIds(import_interface.param_patterns_id);
     auto generic_data = GetLocalGenericData(import_interface.generic_id);
 
@@ -2060,12 +1942,8 @@ class ImportRefResolver {
 
     auto& new_interface = context_.interfaces().Get(interface_id);
     new_interface.parent_scope_id = parent_scope_id;
-    new_interface.implicit_param_refs_id =
-        GetLocalParamRefsId(import_interface.implicit_param_refs_id);
     new_interface.implicit_param_patterns_id =
         GetLocalParamPatternsId(import_interface.implicit_param_patterns_id);
-    new_interface.param_refs_id =
-        GetLocalParamRefsId(import_interface.param_refs_id);
     new_interface.param_patterns_id =
         GetLocalParamPatternsId(import_interface.param_patterns_id);
     SetGenericData(import_interface.generic_id, new_interface.generic_id,

+ 5 - 7
toolchain/check/name_component.cpp

@@ -43,7 +43,7 @@ auto PopNameComponent(Context& context, SemIR::InstId return_slot_pattern_id)
     implicit_param_patterns_id = SemIR::InstBlockId::Invalid;
   }
 
-  auto [implicit_params_id, params_id, return_slot_id] =
+  auto [call_params_id, return_slot_id] =
       CalleePatternMatch(context, *implicit_param_patterns_id,
                          *param_patterns_id, return_slot_pattern_id);
 
@@ -54,11 +54,10 @@ auto PopNameComponent(Context& context, SemIR::InstId return_slot_pattern_id)
       .first_param_node_id = first_param_node_id,
       .last_param_node_id = last_param_node_id,
       .implicit_params_loc_id = implicit_params_loc_id,
-      .implicit_params_id = implicit_params_id,
       .implicit_param_patterns_id = *implicit_param_patterns_id,
       .params_loc_id = params_loc_id,
-      .params_id = params_id,
       .param_patterns_id = *param_patterns_id,
+      .call_params_id = call_params_id,
       .return_slot_pattern_id = return_slot_pattern_id,
       .return_slot_id = return_slot_id,
       .pattern_block_id = context.pattern_block_stack().Pop(),
@@ -70,18 +69,17 @@ auto PopNameComponent(Context& context, SemIR::InstId return_slot_pattern_id)
 auto PopNameComponentWithoutParams(Context& context, Lex::TokenKind introducer)
     -> NameComponent {
   NameComponent name = PopNameComponent(context);
-  if (name.implicit_params_id.is_valid() || name.params_id.is_valid()) {
+  if (name.call_params_id.is_valid()) {
     CARBON_DIAGNOSTIC(UnexpectedDeclNameParams, Error,
                       "`{0}` declaration cannot have parameters",
                       Lex::TokenKind);
     // Point to the lexically first parameter list in the diagnostic.
-    context.emitter().Emit(name.implicit_params_id.is_valid()
+    context.emitter().Emit(name.implicit_param_patterns_id.is_valid()
                                ? name.implicit_params_loc_id
                                : name.params_loc_id,
                            UnexpectedDeclNameParams, introducer);
 
-    name.implicit_params_id = SemIR::InstBlockId::Invalid;
-    name.params_id = SemIR::InstBlockId::Invalid;
+    name.call_params_id = SemIR::InstBlockId::Invalid;
   }
   return name;
 }

+ 6 - 2
toolchain/check/name_component.h

@@ -28,14 +28,18 @@ struct NameComponent {
 
   // The implicit parameter list.
   Parse::NodeId implicit_params_loc_id;
-  SemIR::InstBlockId implicit_params_id;
   SemIR::InstBlockId implicit_param_patterns_id;
 
   // The explicit parameter list.
   Parse::NodeId params_loc_id;
-  SemIR::InstBlockId params_id;
   SemIR::InstBlockId param_patterns_id;
 
+  // The `Call` parameters of the entity, if it's a function (see the
+  // corresponding member of SemIR::EntityWithParamsBase).
+  // TODO: This is only used for function declarations. Should it go somewhere
+  // else?
+  SemIR::InstBlockId call_params_id;
+
   // The return slot.
   // TODO: These are only used for function declarations. Should they go
   // somewhere else?

+ 23 - 19
toolchain/check/pattern_match.cpp

@@ -161,7 +161,11 @@ auto MatchContext::EmitPatternMatch(Context& context,
       bind_name.value_id = entry.scrutinee_id;
       context.ReplaceInstBeforeConstantUse(bind_name_id, bind_name);
       context.inst_block_stack().AddInstId(bind_name_id);
-      results_.push_back(bind_name_id);
+      if (context.insts()
+              .GetAs<SemIR::AnyParam>(entry.scrutinee_id)
+              .runtime_index.is_valid()) {
+        results_.push_back(entry.scrutinee_id);
+      }
       break;
     }
     case CARBON_KIND(SemIR::AddrPattern addr_pattern): {
@@ -280,6 +284,7 @@ auto MatchContext::EmitPatternMatch(Context& context,
           pattern.loc_id, {.type_id = return_slot_pattern.type_id,
                            .type_inst_id = return_slot_pattern.type_inst_id,
                            .storage_id = entry.scrutinee_id});
+      results_.push_back(entry.scrutinee_id);
       break;
     }
     default: {
@@ -293,20 +298,19 @@ auto CalleePatternMatch(Context& context,
                         SemIR::InstBlockId param_patterns_id,
                         SemIR::InstId return_slot_pattern_id)
     -> ParameterBlocks {
-  auto params_id = SemIR::InstBlockId::Invalid;
-  auto implicit_params_id = SemIR::InstBlockId::Invalid;
+  if (!return_slot_pattern_id.is_valid() && !param_patterns_id.is_valid() &&
+      !implicit_param_patterns_id.is_valid()) {
+    return {.call_params_id = SemIR::InstBlockId::Invalid,
+            .return_slot_id = SemIR::InstId::Invalid};
+  }
 
   MatchContext match(MatchKind::Callee);
 
-  if (implicit_param_patterns_id.is_valid()) {
-    // We add work to the stack in reverse so that the results will be produced
-    // in the original order.
-    for (SemIR::InstId inst_id :
-         llvm::reverse(context.inst_blocks().Get(implicit_param_patterns_id))) {
-      match.AddWork(
-          {.pattern_id = inst_id, .scrutinee_id = SemIR::InstId::Invalid});
-    }
-    implicit_params_id = match.DoWork(context);
+  // We add work to the stack in reverse so that the results will be produced
+  // in the original order.
+  if (return_slot_pattern_id.is_valid()) {
+    match.AddWork({.pattern_id = return_slot_pattern_id,
+                   .scrutinee_id = SemIR::InstId::Invalid});
   }
 
   if (param_patterns_id.is_valid()) {
@@ -315,17 +319,17 @@ auto CalleePatternMatch(Context& context,
       match.AddWork(
           {.pattern_id = inst_id, .scrutinee_id = SemIR::InstId::Invalid});
     }
-    params_id = match.DoWork(context);
   }
 
-  if (return_slot_pattern_id.is_valid()) {
-    match.AddWork({.pattern_id = return_slot_pattern_id,
-                   .scrutinee_id = SemIR::InstId::Invalid});
-    CARBON_CHECK(match.DoWork(context) == SemIR::InstBlockId::Empty);
+  if (implicit_param_patterns_id.is_valid()) {
+    for (SemIR::InstId inst_id :
+         llvm::reverse(context.inst_blocks().Get(implicit_param_patterns_id))) {
+      match.AddWork(
+          {.pattern_id = inst_id, .scrutinee_id = SemIR::InstId::Invalid});
+    }
   }
 
-  return {.implicit_params_id = implicit_params_id,
-          .params_id = params_id,
+  return {.call_params_id = match.DoWork(context),
           .return_slot_id = match.return_slot_id()};
 }
 

+ 9 - 14
toolchain/check/pattern_match.h

@@ -10,15 +10,14 @@
 
 namespace Carbon::Check {
 
-// The pattern-match counterparts of the patterns passed to CalleePatternMatch.
+// The outputs of CalleePatternMatch.
+// TODO: Rename or remove this struct.
 struct ParameterBlocks {
-  // The implicit parameter list.
-  SemIR::InstBlockId implicit_params_id;
-
-  // The explicit parameter list.
-  SemIR::InstBlockId params_id;
+  // The `Call` parameters of the function.
+  SemIR::InstBlockId call_params_id;
 
   // The return slot.
+  // TODO: Drop this and just use the last element of above?
   SemIR::InstId return_slot_id;
 };
 
@@ -29,16 +28,13 @@ struct ParameterBlocks {
 // between the two: pattern insts that are descendants of a `ParamPattern`
 // are matched by the callee, and pattern insts that have a `ParamPattern`
 // as a descendant are matched by the caller.
-//
-// "Calling convention arguments" are the values actually passed from caller to
-// callee at the semantic IR level, and "calling convention parameters" are
-// the corresponding semantic placeholders that they bind to.
 
 // Emits the pattern-match IR for the declaration of a parameterized entity with
 // the given implicit and explicit parameter patterns, and the given return slot
 // pattern (any of which may be invalid if not applicable). This IR performs the
 // callee side of pattern matching, starting at the `ParamPattern` insts, and
-// matching them against the corresponding calling-convention parameters.
+// matching them against the corresponding `Call` parameters (see
+// entity_with_params_base.h for the definition of that term).
 auto CalleePatternMatch(Context& context,
                         SemIR::InstBlockId implicit_param_patterns_id,
                         SemIR::InstBlockId param_patterns_id,
@@ -46,9 +42,8 @@ auto CalleePatternMatch(Context& context,
     -> ParameterBlocks;
 
 // Emits the pattern-match IR for matching the given arguments with the given
-// parameter patterns, and returns an inst block with one inst for each
-// calling convention argument. This IR performs the caller side of pattern
-// matching.
+// parameter patterns, and returns an inst block of the arguments that should
+// be passed to the `Call` inst.
 auto CallerPatternMatch(Context& context, SemIR::SpecificId specific_id,
                         SemIR::InstId self_pattern_id,
                         SemIR::InstBlockId param_patterns_id,

+ 2 - 1
toolchain/check/testdata/basics/no_prelude/raw_and_textual_ir.carbon

@@ -117,7 +117,8 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:       0:               inst+7
 // CHECK:STDOUT:       1:               inst+8
 // CHECK:STDOUT:     block6:
-// CHECK:STDOUT:       0:               inst+4
+// CHECK:STDOUT:       0:               inst+16
+// CHECK:STDOUT:       1:               inst+17
 // CHECK:STDOUT:     block7:
 // CHECK:STDOUT:       0:               inst+5
 // CHECK:STDOUT:       1:               inst+6

+ 17 - 18
toolchain/check/testdata/basics/no_prelude/raw_ir.carbon

@@ -28,12 +28,12 @@ fn Foo[T:! type](n: T) -> (T, ()) {
 // CHECK:STDOUT:     entity_name0:    {name: name1, parent_scope: name_scope<invalid>, index: comp_time_bind0}
 // CHECK:STDOUT:     entity_name1:    {name: name2, parent_scope: name_scope<invalid>, index: comp_time_bind<invalid>}
 // CHECK:STDOUT:   functions:
-// CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, return_slot_pattern: inst+19, return_slot: inst+23, body: [block15]}
+// CHECK:STDOUT:     function0:       {name: name0, parent_scope: name_scope0, return_slot_pattern: inst+19, return_slot: inst+23, body: [block14]}
 // CHECK:STDOUT:   classes:         {}
 // CHECK:STDOUT:   generics:
-// CHECK:STDOUT:     generic0:        {decl: inst+24, bindings: block11}
+// CHECK:STDOUT:     generic0:        {decl: inst+24, bindings: block10}
 // CHECK:STDOUT:   specifics:
-// CHECK:STDOUT:     specific0:       {generic: generic0, args: block13}
+// CHECK:STDOUT:     specific0:       {generic: generic0, args: block12}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     type_block0:     {}
 // CHECK:STDOUT:   types:
@@ -83,7 +83,7 @@ fn Foo[T:! type](n: T) -> (T, ()) {
 // CHECK:STDOUT:     'inst+21':         {kind: ValueParam, arg0: runtime_param0, arg1: name2, type: type(symbolicConstant3)}
 // CHECK:STDOUT:     'inst+22':         {kind: OutParam, arg0: runtime_param1, arg1: nameReturnSlot, type: type(symbolicConstant5)}
 // CHECK:STDOUT:     'inst+23':         {kind: ReturnSlot, arg0: inst+14, arg1: inst+22, type: type(symbolicConstant5)}
-// CHECK:STDOUT:     'inst+24':         {kind: FunctionDecl, arg0: function0, arg1: block10, type: type(inst+28)}
+// CHECK:STDOUT:     'inst+24':         {kind: FunctionDecl, arg0: function0, arg1: block9, type: type(inst+28)}
 // CHECK:STDOUT:     'inst+25':         {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<invalid>, type: typeTypeType}
 // CHECK:STDOUT:     'inst+26':         {kind: SymbolicBindingPattern, arg0: entity_name0, type: typeTypeType}
 // CHECK:STDOUT:     'inst+27':         {kind: TupleType, arg0: type_block3, type: typeTypeType}
@@ -92,14 +92,14 @@ fn Foo[T:! type](n: T) -> (T, ()) {
 // CHECK:STDOUT:     'inst+30':         {kind: PointerType, arg0: type(symbolicConstant2), type: typeTypeType}
 // CHECK:STDOUT:     'inst+31':         {kind: NameRef, arg0: name2, arg1: inst+7, type: type(symbolicConstant3)}
 // CHECK:STDOUT:     'inst+32':         {kind: TupleLiteral, arg0: empty, type: type(inst+11)}
-// CHECK:STDOUT:     'inst+33':         {kind: TupleLiteral, arg0: block16, type: type(symbolicConstant5)}
+// CHECK:STDOUT:     'inst+33':         {kind: TupleLiteral, arg0: block15, type: type(symbolicConstant5)}
 // CHECK:STDOUT:     'inst+34':         {kind: TupleAccess, arg0: inst+23, arg1: element0, type: type(symbolicConstant3)}
 // CHECK:STDOUT:     'inst+35':         {kind: InitializeFrom, arg0: inst+31, arg1: inst+34, type: type(symbolicConstant3)}
 // CHECK:STDOUT:     'inst+36':         {kind: TupleAccess, arg0: inst+23, arg1: element1, type: type(inst+11)}
 // CHECK:STDOUT:     'inst+37':         {kind: TupleInit, arg0: empty, arg1: inst+36, type: type(inst+11)}
 // CHECK:STDOUT:     'inst+38':         {kind: TupleValue, arg0: empty, type: type(inst+11)}
 // CHECK:STDOUT:     'inst+39':         {kind: Converted, arg0: inst+32, arg1: inst+37, type: type(inst+11)}
-// CHECK:STDOUT:     'inst+40':         {kind: TupleInit, arg0: block17, arg1: inst+23, type: type(symbolicConstant5)}
+// CHECK:STDOUT:     'inst+40':         {kind: TupleInit, arg0: block16, arg1: inst+23, type: type(symbolicConstant5)}
 // CHECK:STDOUT:     'inst+41':         {kind: Converted, arg0: inst+33, arg1: inst+40, type: type(symbolicConstant5)}
 // CHECK:STDOUT:     'inst+42':         {kind: ReturnExpr, arg0: inst+41, arg1: inst+23}
 // CHECK:STDOUT:   constant_values:
@@ -148,17 +148,16 @@ fn Foo[T:! type](n: T) -> (T, ()) {
 // CHECK:STDOUT:       0:               inst+10
 // CHECK:STDOUT:       1:               inst+12
 // CHECK:STDOUT:     block7:
-// CHECK:STDOUT:       0:               inst+1
+// CHECK:STDOUT:       0:               inst+21
+// CHECK:STDOUT:       1:               inst+22
 // CHECK:STDOUT:     block8:
-// CHECK:STDOUT:       0:               inst+7
-// CHECK:STDOUT:     block9:
 // CHECK:STDOUT:       0:               inst+3
 // CHECK:STDOUT:       1:               inst+5
 // CHECK:STDOUT:       2:               inst+8
 // CHECK:STDOUT:       3:               inst+9
 // CHECK:STDOUT:       4:               inst+18
 // CHECK:STDOUT:       5:               inst+19
-// CHECK:STDOUT:     block10:
+// CHECK:STDOUT:     block9:
 // CHECK:STDOUT:       0:               inst+6
 // CHECK:STDOUT:       1:               inst+10
 // CHECK:STDOUT:       2:               inst+12
@@ -171,19 +170,19 @@ fn Foo[T:! type](n: T) -> (T, ()) {
 // CHECK:STDOUT:       9:               inst+7
 // CHECK:STDOUT:       10:              inst+22
 // CHECK:STDOUT:       11:              inst+23
-// CHECK:STDOUT:     block11:
+// CHECK:STDOUT:     block10:
 // CHECK:STDOUT:       0:               inst+1
-// CHECK:STDOUT:     block12:
+// CHECK:STDOUT:     block11:
 // CHECK:STDOUT:       0:               inst+25
 // CHECK:STDOUT:       1:               inst+26
 // CHECK:STDOUT:       2:               inst+27
-// CHECK:STDOUT:     block13:
+// CHECK:STDOUT:     block12:
 // CHECK:STDOUT:       0:               inst+2
-// CHECK:STDOUT:     block14:
+// CHECK:STDOUT:     block13:
 // CHECK:STDOUT:       0:               inst+2
 // CHECK:STDOUT:       1:               inst+2
 // CHECK:STDOUT:       2:               inst+16
-// CHECK:STDOUT:     block15:
+// CHECK:STDOUT:     block14:
 // CHECK:STDOUT:       0:               inst+31
 // CHECK:STDOUT:       1:               inst+32
 // CHECK:STDOUT:       2:               inst+33
@@ -195,13 +194,13 @@ fn Foo[T:! type](n: T) -> (T, ()) {
 // CHECK:STDOUT:       8:               inst+40
 // CHECK:STDOUT:       9:               inst+41
 // CHECK:STDOUT:       10:              inst+42
-// CHECK:STDOUT:     block16:
+// CHECK:STDOUT:     block15:
 // CHECK:STDOUT:       0:               inst+31
 // CHECK:STDOUT:       1:               inst+32
-// CHECK:STDOUT:     block17:
+// CHECK:STDOUT:     block16:
 // CHECK:STDOUT:       0:               inst+35
 // CHECK:STDOUT:       1:               inst+39
-// CHECK:STDOUT:     block18:
+// CHECK:STDOUT:     block17:
 // CHECK:STDOUT:       0:               inst+0
 // CHECK:STDOUT:       1:               inst+24
 // CHECK:STDOUT: ...

+ 2 - 2
toolchain/check/testdata/builtins/float/make_type.carbon

@@ -111,7 +111,7 @@ var dyn: Float(dyn_size);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: %Float.type = import_ref Main//types, inst+29, loaded [template = constants.%Float]
+// CHECK:STDOUT:   %import_ref.1: %Float.type = import_ref Main//types, inst+27, loaded [template = constants.%Float]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.2
 // CHECK:STDOUT:     .Int = %import_ref.38
@@ -201,7 +201,7 @@ var dyn: Float(dyn_size);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: %Float.type = import_ref Main//types, inst+29, loaded [template = constants.%Float]
+// CHECK:STDOUT:   %import_ref.1: %Float.type = import_ref Main//types, inst+27, loaded [template = constants.%Float]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.2
 // CHECK:STDOUT:     .Int = %import_ref.38

+ 315 - 315
toolchain/check/testdata/builtins/int/convert_checked.carbon

@@ -832,27 +832,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+33, loaded [template = constants.%NegateI32]
-// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+60, loaded [template = constants.%SubI32]
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4: %IntLiteral.type = import_ref Main//int_ops, inst+106, loaded [template = constants.%IntLiteral]
-// CHECK:STDOUT:   %import_ref.5: %Int32ToInt32.type = import_ref Main//int_ops, inst+125, loaded [template = constants.%Int32ToInt32]
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9: %IntLiteralToIntLiteral.type = import_ref Main//int_ops, inst+201, loaded [template = constants.%IntLiteralToIntLiteral]
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20: %Int32ToIntLiteral.type = import_ref Main//int_ops, inst+416, loaded [template = constants.%Int32ToIntLiteral]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+31, loaded [template = constants.%NegateI32]
+// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+58, loaded [template = constants.%SubI32]
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4: %IntLiteral.type = import_ref Main//int_ops, inst+102, loaded [template = constants.%IntLiteral]
+// CHECK:STDOUT:   %import_ref.5: %Int32ToInt32.type = import_ref Main//int_ops, inst+121, loaded [template = constants.%Int32ToInt32]
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9: %IntLiteralToIntLiteral.type = import_ref Main//int_ops, inst+197, loaded [template = constants.%IntLiteralToIntLiteral]
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20: %Int32ToIntLiteral.type = import_ref Main//int_ops, inst+412, loaded [template = constants.%Int32ToIntLiteral]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -1024,27 +1024,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7: %Uint32ToInt32.type = import_ref Main//int_ops, inst+163, loaded [template = constants.%Uint32ToInt32]
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7: %Uint32ToInt32.type = import_ref Main//int_ops, inst+159, loaded [template = constants.%Uint32ToInt32]
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -1194,27 +1194,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+33, loaded [template = constants.%NegateI32]
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+222, loaded [template = constants.%Int32ToInt16]
-// CHECK:STDOUT:   %import_ref.11: %Int32ToUint16.type = import_ref Main//int_ops, inst+242, loaded [template = constants.%Int32ToUint16]
-// CHECK:STDOUT:   %import_ref.12: %Uint32ToInt16.type = import_ref Main//int_ops, inst+261, loaded [template = constants.%Uint32ToInt16]
-// CHECK:STDOUT:   %import_ref.13: %Uint32ToUint16.type = import_ref Main//int_ops, inst+280, loaded [template = constants.%Uint32ToUint16]
-// CHECK:STDOUT:   %import_ref.14: %IntLiteralToInt16.type = import_ref Main//int_ops, inst+299, loaded [template = constants.%IntLiteralToInt16]
-// CHECK:STDOUT:   %import_ref.15: %IntLiteralToUint16.type = import_ref Main//int_ops, inst+318, loaded [template = constants.%IntLiteralToUint16]
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20: %Int32ToIntLiteral.type = import_ref Main//int_ops, inst+416, loaded [template = constants.%Int32ToIntLiteral]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+31, loaded [template = constants.%NegateI32]
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+218, loaded [template = constants.%Int32ToInt16]
+// CHECK:STDOUT:   %import_ref.11: %Int32ToUint16.type = import_ref Main//int_ops, inst+238, loaded [template = constants.%Int32ToUint16]
+// CHECK:STDOUT:   %import_ref.12: %Uint32ToInt16.type = import_ref Main//int_ops, inst+257, loaded [template = constants.%Uint32ToInt16]
+// CHECK:STDOUT:   %import_ref.13: %Uint32ToUint16.type = import_ref Main//int_ops, inst+276, loaded [template = constants.%Uint32ToUint16]
+// CHECK:STDOUT:   %import_ref.14: %IntLiteralToInt16.type = import_ref Main//int_ops, inst+295, loaded [template = constants.%IntLiteralToInt16]
+// CHECK:STDOUT:   %import_ref.15: %IntLiteralToUint16.type = import_ref Main//int_ops, inst+314, loaded [template = constants.%IntLiteralToUint16]
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20: %Int32ToIntLiteral.type = import_ref Main//int_ops, inst+412, loaded [template = constants.%Int32ToIntLiteral]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -1569,27 +1569,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3: %AddU32.type = import_ref Main//int_ops, inst+99, loaded [template = constants.%AddU32]
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18: %Uint32ToInt64.type = import_ref Main//int_ops, inst+378, loaded [template = constants.%Uint32ToInt64]
-// CHECK:STDOUT:   %import_ref.19: %Uint32ToUint64.type = import_ref Main//int_ops, inst+397, loaded [template = constants.%Uint32ToUint64]
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3: %AddU32.type = import_ref Main//int_ops, inst+95, loaded [template = constants.%AddU32]
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18: %Uint32ToInt64.type = import_ref Main//int_ops, inst+374, loaded [template = constants.%Uint32ToInt64]
+// CHECK:STDOUT:   %import_ref.19: %Uint32ToUint64.type = import_ref Main//int_ops, inst+393, loaded [template = constants.%Uint32ToUint64]
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -1830,27 +1830,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+33, loaded [template = constants.%NegateI32]
-// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+60, loaded [template = constants.%SubI32]
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16: %Int32ToInt64.type = import_ref Main//int_ops, inst+339, loaded [template = constants.%Int32ToInt64]
-// CHECK:STDOUT:   %import_ref.17: %Int32ToUint64.type = import_ref Main//int_ops, inst+359, loaded [template = constants.%Int32ToUint64]
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+31, loaded [template = constants.%NegateI32]
+// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+58, loaded [template = constants.%SubI32]
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16: %Int32ToInt64.type = import_ref Main//int_ops, inst+335, loaded [template = constants.%Int32ToInt64]
+// CHECK:STDOUT:   %import_ref.17: %Int32ToUint64.type = import_ref Main//int_ops, inst+355, loaded [template = constants.%Int32ToUint64]
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2018,27 +2018,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3: %AddU32.type = import_ref Main//int_ops, inst+99, loaded [template = constants.%AddU32]
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7: %Uint32ToInt32.type = import_ref Main//int_ops, inst+163, loaded [template = constants.%Uint32ToInt32]
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3: %AddU32.type = import_ref Main//int_ops, inst+95, loaded [template = constants.%AddU32]
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7: %Uint32ToInt32.type = import_ref Main//int_ops, inst+159, loaded [template = constants.%Uint32ToInt32]
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2146,27 +2146,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+222, loaded [template = constants.%Int32ToInt16]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+218, loaded [template = constants.%Int32ToInt16]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2251,27 +2251,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11: %Int32ToUint16.type = import_ref Main//int_ops, inst+242, loaded [template = constants.%Int32ToUint16]
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11: %Int32ToUint16.type = import_ref Main//int_ops, inst+238, loaded [template = constants.%Int32ToUint16]
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2360,27 +2360,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12: %Uint32ToInt16.type = import_ref Main//int_ops, inst+261, loaded [template = constants.%Uint32ToInt16]
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12: %Uint32ToInt16.type = import_ref Main//int_ops, inst+257, loaded [template = constants.%Uint32ToInt16]
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2475,27 +2475,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13: %Uint32ToUint16.type = import_ref Main//int_ops, inst+280, loaded [template = constants.%Uint32ToUint16]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13: %Uint32ToUint16.type = import_ref Main//int_ops, inst+276, loaded [template = constants.%Uint32ToUint16]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2593,27 +2593,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+60, loaded [template = constants.%SubI32]
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11: %Int32ToUint16.type = import_ref Main//int_ops, inst+242, loaded [template = constants.%Int32ToUint16]
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+58, loaded [template = constants.%SubI32]
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11: %Int32ToUint16.type = import_ref Main//int_ops, inst+238, loaded [template = constants.%Int32ToUint16]
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2717,27 +2717,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+60, loaded [template = constants.%SubI32]
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+144, loaded [template = constants.%Int32ToUint32]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+58, loaded [template = constants.%SubI32]
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6: %Int32ToUint32.type = import_ref Main//int_ops, inst+140, loaded [template = constants.%Int32ToUint32]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2842,27 +2842,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+60, loaded [template = constants.%SubI32]
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17: %Int32ToUint64.type = import_ref Main//int_ops, inst+359, loaded [template = constants.%Int32ToUint64]
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2: %SubI32.type = import_ref Main//int_ops, inst+58, loaded [template = constants.%SubI32]
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//int_ops, inst+218, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17: %Int32ToUint64.type = import_ref Main//int_ops, inst+355, loaded [template = constants.%Int32ToUint64]
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .UInt = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -2963,27 +2963,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+33, loaded [template = constants.%NegateI32]
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+125, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+222, loaded [template = constants.%Int32ToInt16]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+339, unloaded
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1: %NegateI32.type = import_ref Main//int_ops, inst+31, loaded [template = constants.%NegateI32]
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//int_ops, inst+121, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+218, loaded [template = constants.%Int32ToInt16]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//int_ops, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23
@@ -3079,27 +3079,27 @@ let convert_not_constant_widen: i64 = Int32ToInt64(not_constant);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+33, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+99, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+106, unloaded
-// CHECK:STDOUT:   %import_ref.5: %Int32ToInt32.type = import_ref Main//int_ops, inst+125, loaded [template = constants.%Int32ToInt32]
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+144, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+163, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+201, unloaded
-// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+222, loaded [template = constants.%Int32ToInt16]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+242, unloaded
-// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+261, unloaded
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+280, unloaded
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+299, unloaded
-// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+318, unloaded
-// CHECK:STDOUT:   %import_ref.16: %Int32ToInt64.type = import_ref Main//int_ops, inst+339, loaded [template = constants.%Int32ToInt64]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+359, unloaded
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+378, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+397, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+416, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+435, unloaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Main//int_ops, inst+31, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//int_ops, inst+58, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//int_ops, inst+95, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//int_ops, inst+102, unloaded
+// CHECK:STDOUT:   %import_ref.5: %Int32ToInt32.type = import_ref Main//int_ops, inst+121, loaded [template = constants.%Int32ToInt32]
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//int_ops, inst+140, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//int_ops, inst+159, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//int_ops, inst+178, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//int_ops, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.10: %Int32ToInt16.type = import_ref Main//int_ops, inst+218, loaded [template = constants.%Int32ToInt16]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//int_ops, inst+238, unloaded
+// CHECK:STDOUT:   %import_ref.12 = import_ref Main//int_ops, inst+257, unloaded
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//int_ops, inst+276, unloaded
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//int_ops, inst+295, unloaded
+// CHECK:STDOUT:   %import_ref.15 = import_ref Main//int_ops, inst+314, unloaded
+// CHECK:STDOUT:   %import_ref.16: %Int32ToInt64.type = import_ref Main//int_ops, inst+335, loaded [template = constants.%Int32ToInt64]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Main//int_ops, inst+355, unloaded
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//int_ops, inst+374, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//int_ops, inst+393, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//int_ops, inst+412, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//int_ops, inst+431, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.22
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.23

+ 3 - 3
toolchain/check/testdata/builtins/int/make_type_signed.carbon

@@ -323,9 +323,9 @@ var m: Int(1000000000);
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//types, inst+7, unloaded
 // CHECK:STDOUT:   %import_ref.2: %Int.type = import_ref Main//types, inst+23, loaded [template = constants.%Int]
-// CHECK:STDOUT:   %import_ref.3: %F.type = import_ref Main//use_types, inst+37, loaded [template = constants.%F]
-// CHECK:STDOUT:   %import_ref.4: %G.type = import_ref Main//use_types, inst+62, loaded [template = constants.%G]
-// CHECK:STDOUT:   %import_ref.5: %Symbolic.type = import_ref Main//use_types, inst+102, loaded [template = constants.%Symbolic]
+// CHECK:STDOUT:   %import_ref.3: %F.type = import_ref Main//use_types, inst+35, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.4: %G.type = import_ref Main//use_types, inst+60, loaded [template = constants.%G]
+// CHECK:STDOUT:   %import_ref.5: %Symbolic.type = import_ref Main//use_types, inst+100, loaded [template = constants.%Symbolic]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...

+ 1 - 1
toolchain/check/testdata/builtins/print.carbon

@@ -52,7 +52,7 @@ fn Main() {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.38: %Print.type.2 = import_ref Core//prelude, inst+57, loaded [template = constants.%Print.2]
+// CHECK:STDOUT:   %import_ref.38: %Print.type.2 = import_ref Core//prelude, inst+55, loaded [template = constants.%Print.2]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 6 - 6
toolchain/check/testdata/class/generic/base_is_generic.carbon

@@ -267,20 +267,20 @@ fn H() {
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//extend_generic_base, inst+9, unloaded
 // CHECK:STDOUT:   %import_ref.2 = import_ref Main//extend_generic_base, inst+26, unloaded
-// CHECK:STDOUT:   %import_ref.3: type = import_ref Main//extend_generic_base, inst+50, loaded [template = constants.%Derived]
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//extend_generic_base, inst+80, unloaded
+// CHECK:STDOUT:   %import_ref.3: type = import_ref Main//extend_generic_base, inst+48, loaded [template = constants.%Derived]
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//extend_generic_base, inst+78, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.12
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.5 = import_ref Main//extend_generic_base, inst+27, unloaded
-// CHECK:STDOUT:   %import_ref.6: %.17 = import_ref Main//extend_generic_base, inst+46, loaded [template = %.1]
+// CHECK:STDOUT:   %import_ref.6: %.17 = import_ref Main//extend_generic_base, inst+44, loaded [template = %.1]
 // CHECK:STDOUT:   %import_ref.7 = import_ref Main//extend_generic_base, inst+15, unloaded
 // CHECK:STDOUT:   %import_ref.8: @Base.%.1 (%.9) = import_ref Main//extend_generic_base, inst+18, loaded [template = %.2]
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//extend_generic_base, inst+51, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//extend_generic_base, inst+63, unloaded
-// CHECK:STDOUT:   %import_ref.11: type = import_ref Main//extend_generic_base, inst+54, loaded [template = constants.%Base.3]
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//extend_generic_base, inst+49, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//extend_generic_base, inst+61, unloaded
+// CHECK:STDOUT:   %import_ref.11: type = import_ref Main//extend_generic_base, inst+52, loaded [template = constants.%Base.3]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 101 - 101
toolchain/check/testdata/class/generic/import.carbon

@@ -365,41 +365,41 @@ class Class(U:! type) {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//foo, inst+77, unloaded
-// CHECK:STDOUT:   %import_ref.5: @ImplicitAs.%.1 (%.2) = import_ref Main//foo, inst+78, loaded [symbolic = @ImplicitAs.%.2 (constants.%.34)]
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//foo, inst+79, unloaded
-// CHECK:STDOUT:   %import_ref.7: type = import_ref Main//foo, inst+124, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Main//foo, inst+125, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.9: <witness> = import_ref Main//foo, inst+126, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//foo, inst+95, unloaded
-// CHECK:STDOUT:   %import_ref.11: type = import_ref Main//foo, inst+154, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Main//foo, inst+155, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//foo, inst+156, unloaded
-// CHECK:STDOUT:   %import_ref.14: type = import_ref Main//foo, inst+183, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Main//foo, inst+184, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//foo, inst+185, unloaded
-// CHECK:STDOUT:   %import_ref.18: type = import_ref Main//foo, inst+215, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Main//foo, inst+216, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//foo, inst+217, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//foo, inst+247, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Main//foo, inst+248, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Main//foo, inst+249, unloaded
-// CHECK:STDOUT:   %import_ref.24: type = import_ref Main//foo, inst+255, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Main//foo, inst+256, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.26 = import_ref Main//foo, inst+257, unloaded
-// CHECK:STDOUT:   %import_ref.27 = import_ref Main//foo, inst+273, unloaded
-// CHECK:STDOUT:   %import_ref.28: type = import_ref Main//foo, inst+312, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Main//foo, inst+313, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.30 = import_ref Main//foo, inst+314, unloaded
-// CHECK:STDOUT:   %import_ref.31: type = import_ref Main//foo, inst+341, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Main//foo, inst+342, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.33 = import_ref Main//foo, inst+343, unloaded
-// CHECK:STDOUT:   %import_ref.35: type = import_ref Main//foo, inst+373, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Main//foo, inst+374, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.37 = import_ref Main//foo, inst+375, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//foo, inst+73, unloaded
+// CHECK:STDOUT:   %import_ref.5: @ImplicitAs.%.1 (%.2) = import_ref Main//foo, inst+74, loaded [symbolic = @ImplicitAs.%.2 (constants.%.34)]
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//foo, inst+75, unloaded
+// CHECK:STDOUT:   %import_ref.7: type = import_ref Main//foo, inst+116, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Main//foo, inst+117, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.9: <witness> = import_ref Main//foo, inst+118, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//foo, inst+89, unloaded
+// CHECK:STDOUT:   %import_ref.11: type = import_ref Main//foo, inst+142, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Main//foo, inst+143, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//foo, inst+144, unloaded
+// CHECK:STDOUT:   %import_ref.14: type = import_ref Main//foo, inst+167, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Main//foo, inst+168, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//foo, inst+169, unloaded
+// CHECK:STDOUT:   %import_ref.18: type = import_ref Main//foo, inst+195, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Main//foo, inst+196, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//foo, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//foo, inst+223, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Main//foo, inst+224, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Main//foo, inst+225, unloaded
+// CHECK:STDOUT:   %import_ref.24: type = import_ref Main//foo, inst+229, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Main//foo, inst+230, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.26 = import_ref Main//foo, inst+231, unloaded
+// CHECK:STDOUT:   %import_ref.27 = import_ref Main//foo, inst+245, unloaded
+// CHECK:STDOUT:   %import_ref.28: type = import_ref Main//foo, inst+280, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Main//foo, inst+281, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.30 = import_ref Main//foo, inst+282, unloaded
+// CHECK:STDOUT:   %import_ref.31: type = import_ref Main//foo, inst+305, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Main//foo, inst+306, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.33 = import_ref Main//foo, inst+307, unloaded
+// CHECK:STDOUT:   %import_ref.35: type = import_ref Main//foo, inst+333, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Main//foo, inst+334, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.37 = import_ref Main//foo, inst+335, unloaded
 // CHECK:STDOUT:   %import_ref.38 = import_ref Main//foo, inst+25, unloaded
-// CHECK:STDOUT:   %import_ref.39 = import_ref Main//foo, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.40 = import_ref Main//foo, inst+53, unloaded
+// CHECK:STDOUT:   %import_ref.39 = import_ref Main//foo, inst+42, unloaded
+// CHECK:STDOUT:   %import_ref.40 = import_ref Main//foo, inst+51, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1113,15 +1113,15 @@ class Class(U:! type) {
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//foo, inst+9, unloaded
 // CHECK:STDOUT:   %import_ref.2: %CompleteClass.type = import_ref Main//foo, inst+20, loaded [template = constants.%CompleteClass.1]
-// CHECK:STDOUT:   %import_ref.3: %F.type.3 = import_ref Main//foo, inst+419, loaded [template = constants.%F.3]
+// CHECK:STDOUT:   %import_ref.3: %F.type.3 = import_ref Main//foo, inst+377, loaded [template = constants.%F.3]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.4
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.5 = import_ref Main//foo, inst+25, unloaded
-// CHECK:STDOUT:   %import_ref.6: @CompleteClass.%.1 (%.4) = import_ref Main//foo, inst+44, loaded [template = %.1]
-// CHECK:STDOUT:   %import_ref.7: @CompleteClass.%F.type (%F.type.1) = import_ref Main//foo, inst+53, loaded [symbolic = @CompleteClass.%F (constants.%F.1)]
+// CHECK:STDOUT:   %import_ref.6: @CompleteClass.%.1 (%.4) = import_ref Main//foo, inst+42, loaded [template = %.1]
+// CHECK:STDOUT:   %import_ref.7: @CompleteClass.%F.type (%F.type.1) = import_ref Main//foo, inst+51, loaded [symbolic = @CompleteClass.%F (constants.%F.1)]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1345,7 +1345,7 @@ class Class(U:! type) {
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//foo, inst+9, unloaded
 // CHECK:STDOUT:   %import_ref.2: %CompleteClass.type = import_ref Main//foo, inst+20, loaded [template = constants.%CompleteClass.1]
-// CHECK:STDOUT:   %import_ref.3: %F.type.3 = import_ref Main//foo, inst+419, loaded [template = constants.%F.3]
+// CHECK:STDOUT:   %import_ref.3: %F.type.3 = import_ref Main//foo, inst+377, loaded [template = constants.%F.3]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.7
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.8
@@ -1353,36 +1353,36 @@ class Class(U:! type) {
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.4 = import_ref Main//foo, inst+25, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//foo, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//foo, inst+53, unloaded
-// CHECK:STDOUT:   %import_ref.14: type = import_ref Main//foo, inst+124, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Main//foo, inst+125, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//foo, inst+126, unloaded
-// CHECK:STDOUT:   %import_ref.17: type = import_ref Main//foo, inst+154, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.18: type = import_ref Main//foo, inst+155, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.5)]
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//foo, inst+156, unloaded
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Main//foo, inst+183, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.21: type = import_ref Main//foo, inst+184, loaded [template = constants.%ImplicitAs.type.6]
-// CHECK:STDOUT:   %import_ref.22 = import_ref Main//foo, inst+185, unloaded
-// CHECK:STDOUT:   %import_ref.24: type = import_ref Main//foo, inst+215, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Main//foo, inst+216, loaded [template = constants.%ImplicitAs.type.6]
-// CHECK:STDOUT:   %import_ref.26 = import_ref Main//foo, inst+217, unloaded
-// CHECK:STDOUT:   %import_ref.27 = import_ref Main//foo, inst+247, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Main//foo, inst+248, unloaded
-// CHECK:STDOUT:   %import_ref.29 = import_ref Main//foo, inst+249, unloaded
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Main//foo, inst+255, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.31: type = import_ref Main//foo, inst+256, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.32 = import_ref Main//foo, inst+257, unloaded
-// CHECK:STDOUT:   %import_ref.33 = import_ref Main//foo, inst+273, unloaded
-// CHECK:STDOUT:   %import_ref.34: type = import_ref Main//foo, inst+312, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.35: type = import_ref Main//foo, inst+313, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.36 = import_ref Main//foo, inst+314, unloaded
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Main//foo, inst+341, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.38: type = import_ref Main//foo, inst+342, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.39 = import_ref Main//foo, inst+343, unloaded
-// CHECK:STDOUT:   %import_ref.41: type = import_ref Main//foo, inst+373, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.42: type = import_ref Main//foo, inst+374, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.43 = import_ref Main//foo, inst+375, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//foo, inst+42, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//foo, inst+51, unloaded
+// CHECK:STDOUT:   %import_ref.14: type = import_ref Main//foo, inst+116, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Main//foo, inst+117, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//foo, inst+118, unloaded
+// CHECK:STDOUT:   %import_ref.17: type = import_ref Main//foo, inst+142, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.18: type = import_ref Main//foo, inst+143, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.5)]
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//foo, inst+144, unloaded
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Main//foo, inst+167, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.21: type = import_ref Main//foo, inst+168, loaded [template = constants.%ImplicitAs.type.6]
+// CHECK:STDOUT:   %import_ref.22 = import_ref Main//foo, inst+169, unloaded
+// CHECK:STDOUT:   %import_ref.24: type = import_ref Main//foo, inst+195, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Main//foo, inst+196, loaded [template = constants.%ImplicitAs.type.6]
+// CHECK:STDOUT:   %import_ref.26 = import_ref Main//foo, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.27 = import_ref Main//foo, inst+223, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Main//foo, inst+224, unloaded
+// CHECK:STDOUT:   %import_ref.29 = import_ref Main//foo, inst+225, unloaded
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Main//foo, inst+229, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.31: type = import_ref Main//foo, inst+230, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.32 = import_ref Main//foo, inst+231, unloaded
+// CHECK:STDOUT:   %import_ref.33 = import_ref Main//foo, inst+245, unloaded
+// CHECK:STDOUT:   %import_ref.34: type = import_ref Main//foo, inst+280, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.35: type = import_ref Main//foo, inst+281, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.36 = import_ref Main//foo, inst+282, unloaded
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Main//foo, inst+305, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.38: type = import_ref Main//foo, inst+306, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.39 = import_ref Main//foo, inst+307, unloaded
+// CHECK:STDOUT:   %import_ref.41: type = import_ref Main//foo, inst+333, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.42: type = import_ref Main//foo, inst+334, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.43 = import_ref Main//foo, inst+335, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1994,43 +1994,43 @@ class Class(U:! type) {
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1: %Class.type = import_ref Main//foo, inst+9, loaded [template = constants.%Class.1]
 // CHECK:STDOUT:   %import_ref.2 = import_ref Main//foo, inst+20, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//foo, inst+419, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//foo, inst+377, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//foo, inst+77, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Main//foo, inst+78, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Main//foo, inst+79, unloaded
-// CHECK:STDOUT:   %import_ref.7: type = import_ref Main//foo, inst+124, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Main//foo, inst+125, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//foo, inst+126, unloaded
-// CHECK:STDOUT:   %import_ref.10 = import_ref Main//foo, inst+95, unloaded
-// CHECK:STDOUT:   %import_ref.11: type = import_ref Main//foo, inst+154, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Main//foo, inst+155, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.13 = import_ref Main//foo, inst+156, unloaded
-// CHECK:STDOUT:   %import_ref.14: type = import_ref Main//foo, inst+183, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Main//foo, inst+184, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.16 = import_ref Main//foo, inst+185, unloaded
-// CHECK:STDOUT:   %import_ref.18: type = import_ref Main//foo, inst+215, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Main//foo, inst+216, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//foo, inst+217, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//foo, inst+247, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Main//foo, inst+248, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Main//foo, inst+249, unloaded
-// CHECK:STDOUT:   %import_ref.24: type = import_ref Main//foo, inst+255, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Main//foo, inst+256, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.26 = import_ref Main//foo, inst+257, unloaded
-// CHECK:STDOUT:   %import_ref.27 = import_ref Main//foo, inst+273, unloaded
-// CHECK:STDOUT:   %import_ref.28: type = import_ref Main//foo, inst+312, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Main//foo, inst+313, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.30 = import_ref Main//foo, inst+314, unloaded
-// CHECK:STDOUT:   %import_ref.31: type = import_ref Main//foo, inst+341, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Main//foo, inst+342, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.33 = import_ref Main//foo, inst+343, unloaded
-// CHECK:STDOUT:   %import_ref.35: type = import_ref Main//foo, inst+373, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Main//foo, inst+374, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.37 = import_ref Main//foo, inst+375, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//foo, inst+73, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Main//foo, inst+74, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Main//foo, inst+75, unloaded
+// CHECK:STDOUT:   %import_ref.7: type = import_ref Main//foo, inst+116, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Main//foo, inst+117, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//foo, inst+118, unloaded
+// CHECK:STDOUT:   %import_ref.10 = import_ref Main//foo, inst+89, unloaded
+// CHECK:STDOUT:   %import_ref.11: type = import_ref Main//foo, inst+142, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Main//foo, inst+143, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.13 = import_ref Main//foo, inst+144, unloaded
+// CHECK:STDOUT:   %import_ref.14: type = import_ref Main//foo, inst+167, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Main//foo, inst+168, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.16 = import_ref Main//foo, inst+169, unloaded
+// CHECK:STDOUT:   %import_ref.18: type = import_ref Main//foo, inst+195, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Main//foo, inst+196, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//foo, inst+197, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//foo, inst+223, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Main//foo, inst+224, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Main//foo, inst+225, unloaded
+// CHECK:STDOUT:   %import_ref.24: type = import_ref Main//foo, inst+229, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Main//foo, inst+230, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.26 = import_ref Main//foo, inst+231, unloaded
+// CHECK:STDOUT:   %import_ref.27 = import_ref Main//foo, inst+245, unloaded
+// CHECK:STDOUT:   %import_ref.28: type = import_ref Main//foo, inst+280, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Main//foo, inst+281, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.30 = import_ref Main//foo, inst+282, unloaded
+// CHECK:STDOUT:   %import_ref.31: type = import_ref Main//foo, inst+305, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Main//foo, inst+306, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.33 = import_ref Main//foo, inst+307, unloaded
+// CHECK:STDOUT:   %import_ref.35: type = import_ref Main//foo, inst+333, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Main//foo, inst+334, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.37 = import_ref Main//foo, inst+335, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 10 - 10
toolchain/check/testdata/class/import.carbon

@@ -190,8 +190,8 @@ fn Run() {
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1: type = import_ref Main//a, inst+3, loaded [template = constants.%Empty]
 // CHECK:STDOUT:   %import_ref.2: type = import_ref Main//a, inst+8, loaded [template = constants.%Field]
-// CHECK:STDOUT:   %import_ref.3: type = import_ref Main//a, inst+33, loaded [template = constants.%ForwardDeclared.1]
-// CHECK:STDOUT:   %import_ref.4: type = import_ref Main//a, inst+56, loaded [template = constants.%Incomplete]
+// CHECK:STDOUT:   %import_ref.3: type = import_ref Main//a, inst+31, loaded [template = constants.%ForwardDeclared.1]
+// CHECK:STDOUT:   %import_ref.4: type = import_ref Main//a, inst+54, loaded [template = constants.%Incomplete]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.8
 // CHECK:STDOUT:     import Core//prelude
@@ -199,13 +199,13 @@ fn Run() {
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.5 = import_ref Main//a, inst+4, unloaded
 // CHECK:STDOUT:   %import_ref.6 = import_ref Main//a, inst+9, unloaded
-// CHECK:STDOUT:   %import_ref.7: %.37 = import_ref Main//a, inst+29, loaded [template = %.1]
-// CHECK:STDOUT:   %import_ref.44 = import_ref Main//a, inst+34, unloaded
-// CHECK:STDOUT:   %import_ref.45: %F.type = import_ref Main//a, inst+41, loaded [template = constants.%F]
-// CHECK:STDOUT:   %import_ref.46: %G.type = import_ref Main//a, inst+52, loaded [template = constants.%G]
-// CHECK:STDOUT:   %import_ref.47 = import_ref Main//a, inst+34, unloaded
-// CHECK:STDOUT:   %import_ref.48 = import_ref Main//a, inst+41, unloaded
-// CHECK:STDOUT:   %import_ref.49 = import_ref Main//a, inst+52, unloaded
+// CHECK:STDOUT:   %import_ref.7: %.37 = import_ref Main//a, inst+27, loaded [template = %.1]
+// CHECK:STDOUT:   %import_ref.44 = import_ref Main//a, inst+32, unloaded
+// CHECK:STDOUT:   %import_ref.45: %F.type = import_ref Main//a, inst+39, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.46: %G.type = import_ref Main//a, inst+50, loaded [template = constants.%G]
+// CHECK:STDOUT:   %import_ref.47 = import_ref Main//a, inst+32, unloaded
+// CHECK:STDOUT:   %import_ref.48 = import_ref Main//a, inst+39, unloaded
+// CHECK:STDOUT:   %import_ref.49 = import_ref Main//a, inst+50, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -316,5 +316,5 @@ fn Run() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F[%self.param_patt: %ForwardDeclared.1]();
 // CHECK:STDOUT:
-// CHECK:STDOUT: fn @G[addr <unexpected>.inst+443: %.42]();
+// CHECK:STDOUT: fn @G[addr <unexpected>.inst+399: %.42]();
 // CHECK:STDOUT:

+ 6 - 6
toolchain/check/testdata/class/import_base.carbon

@@ -165,7 +165,7 @@ fn Run() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//a, inst+3, unloaded
-// CHECK:STDOUT:   %import_ref.2: type = import_ref Main//a, inst+49, loaded [template = constants.%Child]
+// CHECK:STDOUT:   %import_ref.2: type = import_ref Main//a, inst+47, loaded [template = constants.%Child]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.11
 // CHECK:STDOUT:     import Core//prelude
@@ -174,11 +174,11 @@ fn Run() {
 // CHECK:STDOUT:   %import_ref.3 = import_ref Main//a, inst+4, unloaded
 // CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Main//a, inst+10, loaded [template = constants.%F]
 // CHECK:STDOUT:   %import_ref.5 = import_ref Main//a, inst+19, unloaded
-// CHECK:STDOUT:   %import_ref.6: %.44 = import_ref Main//a, inst+40, loaded [template = %.1]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//a, inst+45, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//a, inst+50, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Main//a, inst+54, unloaded
-// CHECK:STDOUT:   %import_ref.10: type = import_ref Main//a, inst+51, loaded [template = constants.%Base]
+// CHECK:STDOUT:   %import_ref.6: %.44 = import_ref Main//a, inst+38, loaded [template = %.1]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//a, inst+43, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//a, inst+48, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Main//a, inst+52, unloaded
+// CHECK:STDOUT:   %import_ref.10: type = import_ref Main//a, inst+49, loaded [template = constants.%Base]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 3 - 3
toolchain/check/testdata/const/import.carbon

@@ -109,9 +109,9 @@ var a_ptr: const i32* = a_ptr_ref;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+27, unloaded
-// CHECK:STDOUT:   %import_ref.2: ref %.2 = import_ref Implicit//default, inst+36, loaded
-// CHECK:STDOUT:   %import_ref.3: ref %.3 = import_ref Implicit//default, inst+48, loaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+25, unloaded
+// CHECK:STDOUT:   %import_ref.2: ref %.2 = import_ref Implicit//default, inst+34, loaded
+// CHECK:STDOUT:   %import_ref.3: ref %.3 = import_ref Implicit//default, inst+46, loaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.4
 // CHECK:STDOUT:     import Core//prelude

+ 25 - 25
toolchain/check/testdata/function/declaration/import.carbon

@@ -487,14 +487,14 @@ import library "extern_api";
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A]
-// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//api, inst+36, loaded [template = constants.%B]
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//api, inst+61, loaded [template = constants.%C]
-// CHECK:STDOUT:   %import_ref.4: %D.type = import_ref Main//api, inst+64, loaded [template = constants.%D]
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//api, inst+34, loaded [template = constants.%B]
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//api, inst+59, loaded [template = constants.%C]
+// CHECK:STDOUT:   %import_ref.4: %D.type = import_ref Main//api, inst+62, loaded [template = constants.%D]
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = %import_ref.6
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.6: %E.type = import_ref Main//api, inst+68, loaded [template = constants.%E]
+// CHECK:STDOUT:   %import_ref.6: %E.type = import_ref Main//api, inst+66, loaded [template = constants.%E]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.7
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.8
@@ -628,7 +628,7 @@ import library "extern_api";
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = file.%E.decl
 // CHECK:STDOUT:   }
@@ -799,7 +799,7 @@ import library "extern_api";
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//extern_api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//extern_api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = file.%E.decl
 // CHECK:STDOUT:   }
@@ -970,14 +970,14 @@ import library "extern_api";
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A]
-// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//api, inst+36, loaded [template = constants.%B]
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//api, inst+61, loaded [template = constants.%C]
-// CHECK:STDOUT:   %import_ref.4: %D.type = import_ref Main//api, inst+64, loaded [template = constants.%D]
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//api, inst+34, loaded [template = constants.%B]
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//api, inst+59, loaded [template = constants.%C]
+// CHECK:STDOUT:   %import_ref.4: %D.type = import_ref Main//api, inst+62, loaded [template = constants.%D]
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = %import_ref.6
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.6: %E.type = import_ref Main//api, inst+68, loaded [template = constants.%E]
+// CHECK:STDOUT:   %import_ref.6: %E.type = import_ref Main//api, inst+66, loaded [template = constants.%E]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.12
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.13
@@ -1111,14 +1111,14 @@ import library "extern_api";
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1: %A.type = import_ref Main//extern_api, inst+3, loaded [template = constants.%A]
-// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//extern_api, inst+36, loaded [template = constants.%B]
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//extern_api, inst+61, loaded [template = constants.%C]
-// CHECK:STDOUT:   %import_ref.4: %D.type = import_ref Main//extern_api, inst+64, loaded [template = constants.%D]
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//extern_api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//extern_api, inst+34, loaded [template = constants.%B]
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//extern_api, inst+59, loaded [template = constants.%C]
+// CHECK:STDOUT:   %import_ref.4: %D.type = import_ref Main//extern_api, inst+62, loaded [template = constants.%D]
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//extern_api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = %import_ref.6
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.6: %E.type = import_ref Main//extern_api, inst+68, loaded [template = constants.%E]
+// CHECK:STDOUT:   %import_ref.6: %E.type = import_ref Main//extern_api, inst+66, loaded [template = constants.%E]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.12
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.13
@@ -1222,10 +1222,10 @@ import library "extern_api";
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//api, inst+3, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//api, inst+36, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//api, inst+61, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//api, inst+64, unloaded
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//api, inst+34, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//api, inst+59, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//api, inst+62, unloaded
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = %import_ref.6
 // CHECK:STDOUT:   }
@@ -1252,10 +1252,10 @@ import library "extern_api";
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//extern_api, inst+3, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//extern_api, inst+36, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//extern_api, inst+61, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//extern_api, inst+64, unloaded
-// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//extern_api, inst+67, loaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//extern_api, inst+34, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//extern_api, inst+59, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//extern_api, inst+62, unloaded
+// CHECK:STDOUT:   %import_ref.5: <namespace> = import_ref Main//extern_api, inst+65, loaded
 // CHECK:STDOUT:   %NS: <namespace> = namespace %import_ref.5, [template] {
 // CHECK:STDOUT:     .E = %import_ref.6
 // CHECK:STDOUT:   }

+ 7 - 7
toolchain/check/testdata/function/definition/import.carbon

@@ -271,9 +271,9 @@ fn D() {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1: %A.type = import_ref Main//fns, inst+3, loaded [template = constants.%A]
-// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//fns, inst+37, loaded [template = constants.%B]
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//fns, inst+64, loaded [template = constants.%C]
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//fns, inst+75, unloaded
+// CHECK:STDOUT:   %import_ref.2: %B.type = import_ref Main//fns, inst+35, loaded [template = constants.%B]
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Main//fns, inst+62, loaded [template = constants.%C]
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//fns, inst+73, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.5
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.6
@@ -365,8 +365,8 @@ fn D() {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//fns, inst+64, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//fns, inst+75, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//fns, inst+62, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//fns, inst+73, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.5
 // CHECK:STDOUT:     import Core//prelude
@@ -447,8 +447,8 @@ fn D() {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %import_ref.1 = import_ref Main//fns, inst+3, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//fns, inst+37, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//fns, inst+64, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//fns, inst+35, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//fns, inst+62, unloaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...

+ 2 - 2
toolchain/check/testdata/if_expr/fail_not_in_function.carbon

@@ -61,7 +61,7 @@ class C {
 // CHECK:STDOUT: file {
 // CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Core = imports.%Core
-// CHECK:STDOUT:     .x = <unexpected>.inst+21.loc23_5
+// CHECK:STDOUT:     .x = <unexpected>.inst+19.loc23_5
 // CHECK:STDOUT:     .C = %C.decl
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Core.import = import Core
@@ -78,7 +78,7 @@ class C {
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%C
-// CHECK:STDOUT:   .n = <unexpected>.inst+413.loc37_8
+// CHECK:STDOUT:   .n = <unexpected>.inst+369.loc37_8
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @__global_init() {

+ 1 - 1
toolchain/check/testdata/impl/fail_redefinition.carbon

@@ -72,6 +72,6 @@ impl i32 as I {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: impl @impl: %.loc13_6.3 as %I.ref.loc13 {
 // CHECK:STDOUT: !members:
-// CHECK:STDOUT:   witness = <unexpected>.inst+27.loc13_15
+// CHECK:STDOUT:   witness = <unexpected>.inst+25.loc13_15
 // CHECK:STDOUT: }
 // CHECK:STDOUT:

+ 1 - 1
toolchain/check/testdata/impl/lookup/no_prelude/import.carbon

@@ -152,7 +152,7 @@ import PackageGenericInterface;
 fn M() {
   var obj: PackageHasParam.AnyParam(
     PackageGenericInterface.GenericInterface) = {};
-  // CHECK:STDERR: fail_todo_use_generic_interface_as_param.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Y` in type `AnyParam(<cannot stringify inst+41 kind StructValue>)` that does not implement that interface [MissingImplInMemberAccess]
+  // CHECK:STDERR: fail_todo_use_generic_interface_as_param.carbon:[[@LINE+4]]:3: error: cannot access member of interface `Y` in type `AnyParam(<cannot stringify inst+37 kind StructValue>)` that does not implement that interface [MissingImplInMemberAccess]
   // CHECK:STDERR:   obj.(PackageHasParam.Y.K)();
   // CHECK:STDERR:   ^~~~~~~~~~~~~~~~~~~~~~~~~
   // CHECK:STDERR:

+ 2 - 2
toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon

@@ -58,8 +58,8 @@ var or_: F(true or true);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   %.loc42_17: bool = block_arg <unexpected instblockref block25> [template = constants.%.3]
-// CHECK:STDOUT:   %F.call: init type = call <unexpected>.inst+80.loc42_10(%.loc42_17)
+// CHECK:STDOUT:   %.loc42_17: bool = block_arg <unexpected instblockref block23> [template = constants.%.3]
+// CHECK:STDOUT:   %F.call: init type = call <unexpected>.inst+76.loc42_10(%.loc42_17)
 // CHECK:STDOUT:   %.loc42_24.1: type = value_of_initializer %F.call
 // CHECK:STDOUT:   %.loc42_24.2: type = converted %F.call, %.loc42_24.1
 // CHECK:STDOUT:   %or_.var: ref <error> = var or_

+ 33 - 33
toolchain/check/testdata/packages/implicit_imports_prelude.carbon

@@ -146,44 +146,44 @@ var b: i32 = a;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: ref %i32 = import_ref Main//lib, inst+22, loaded
+// CHECK:STDOUT:   %import_ref.1: ref %i32 = import_ref Main//lib, inst+20, loaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.36
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.2 = import_ref Main//lib, inst+37, unloaded
-// CHECK:STDOUT:   %import_ref.3 = import_ref Main//lib, inst+38, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Main//lib, inst+39, unloaded
-// CHECK:STDOUT:   %import_ref.5: type = import_ref Main//lib, inst+84, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.6: type = import_ref Main//lib, inst+85, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Main//lib, inst+86, unloaded
-// CHECK:STDOUT:   %import_ref.8 = import_ref Main//lib, inst+55, unloaded
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Main//lib, inst+114, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.10: type = import_ref Main//lib, inst+115, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Main//lib, inst+116, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Main//lib, inst+143, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Main//lib, inst+144, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Main//lib, inst+145, unloaded
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Main//lib, inst+175, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.17: type = import_ref Main//lib, inst+176, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.18 = import_ref Main//lib, inst+177, unloaded
-// CHECK:STDOUT:   %import_ref.19 = import_ref Main//lib, inst+207, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Main//lib, inst+208, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Main//lib, inst+209, unloaded
-// CHECK:STDOUT:   %import_ref.22: type = import_ref Main//lib, inst+215, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.23: type = import_ref Main//lib, inst+216, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.24 = import_ref Main//lib, inst+217, unloaded
-// CHECK:STDOUT:   %import_ref.25 = import_ref Main//lib, inst+233, unloaded
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Main//lib, inst+272, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.27: type = import_ref Main//lib, inst+273, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.28 = import_ref Main//lib, inst+274, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Main//lib, inst+301, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Main//lib, inst+302, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Main//lib, inst+303, unloaded
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Main//lib, inst+333, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.34: type = import_ref Main//lib, inst+334, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.35 = import_ref Main//lib, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Main//lib, inst+33, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Main//lib, inst+34, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Main//lib, inst+35, unloaded
+// CHECK:STDOUT:   %import_ref.5: type = import_ref Main//lib, inst+76, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.6: type = import_ref Main//lib, inst+77, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Main//lib, inst+78, unloaded
+// CHECK:STDOUT:   %import_ref.8 = import_ref Main//lib, inst+49, unloaded
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Main//lib, inst+102, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.10: type = import_ref Main//lib, inst+103, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Main//lib, inst+104, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Main//lib, inst+127, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Main//lib, inst+128, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Main//lib, inst+129, unloaded
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Main//lib, inst+155, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.17: type = import_ref Main//lib, inst+156, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.18 = import_ref Main//lib, inst+157, unloaded
+// CHECK:STDOUT:   %import_ref.19 = import_ref Main//lib, inst+183, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Main//lib, inst+184, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Main//lib, inst+185, unloaded
+// CHECK:STDOUT:   %import_ref.22: type = import_ref Main//lib, inst+189, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.23: type = import_ref Main//lib, inst+190, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.24 = import_ref Main//lib, inst+191, unloaded
+// CHECK:STDOUT:   %import_ref.25 = import_ref Main//lib, inst+205, unloaded
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Main//lib, inst+240, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.27: type = import_ref Main//lib, inst+241, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.28 = import_ref Main//lib, inst+242, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Main//lib, inst+265, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Main//lib, inst+266, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Main//lib, inst+267, unloaded
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Main//lib, inst+293, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.34: type = import_ref Main//lib, inst+294, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.35 = import_ref Main//lib, inst+295, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 34 - 34
toolchain/check/testdata/pointer/import.carbon

@@ -158,45 +158,45 @@ var a: i32* = a_ref;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+22, unloaded
-// CHECK:STDOUT:   %import_ref.2: ref %.22 = import_ref Implicit//default, inst+374, loaded
+// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+20, unloaded
+// CHECK:STDOUT:   %import_ref.2: ref %.22 = import_ref Implicit//default, inst+332, loaded
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.37
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.3 = import_ref Implicit//default, inst+37, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref Implicit//default, inst+38, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+39, unloaded
-// CHECK:STDOUT:   %import_ref.6: type = import_ref Implicit//default, inst+84, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.7: type = import_ref Implicit//default, inst+85, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.8 = import_ref Implicit//default, inst+86, unloaded
-// CHECK:STDOUT:   %import_ref.9 = import_ref Implicit//default, inst+55, unloaded
-// CHECK:STDOUT:   %import_ref.10: type = import_ref Implicit//default, inst+114, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.11: type = import_ref Implicit//default, inst+115, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.12 = import_ref Implicit//default, inst+116, unloaded
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+143, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.14: type = import_ref Implicit//default, inst+144, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.15 = import_ref Implicit//default, inst+145, unloaded
-// CHECK:STDOUT:   %import_ref.17: type = import_ref Implicit//default, inst+175, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.18: type = import_ref Implicit//default, inst+176, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.19 = import_ref Implicit//default, inst+177, unloaded
-// CHECK:STDOUT:   %import_ref.20 = import_ref Implicit//default, inst+207, unloaded
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+208, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+209, unloaded
-// CHECK:STDOUT:   %import_ref.23: type = import_ref Implicit//default, inst+215, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.24: type = import_ref Implicit//default, inst+216, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.25 = import_ref Implicit//default, inst+217, unloaded
-// CHECK:STDOUT:   %import_ref.26 = import_ref Implicit//default, inst+233, unloaded
-// CHECK:STDOUT:   %import_ref.27: type = import_ref Implicit//default, inst+272, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.28: type = import_ref Implicit//default, inst+273, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.29 = import_ref Implicit//default, inst+274, unloaded
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+301, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.31: type = import_ref Implicit//default, inst+302, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.32 = import_ref Implicit//default, inst+303, unloaded
-// CHECK:STDOUT:   %import_ref.34: type = import_ref Implicit//default, inst+333, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.35: type = import_ref Implicit//default, inst+334, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.36 = import_ref Implicit//default, inst+335, unloaded
+// CHECK:STDOUT:   %import_ref.3 = import_ref Implicit//default, inst+33, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref Implicit//default, inst+34, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+35, unloaded
+// CHECK:STDOUT:   %import_ref.6: type = import_ref Implicit//default, inst+76, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.7: type = import_ref Implicit//default, inst+77, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.8 = import_ref Implicit//default, inst+78, unloaded
+// CHECK:STDOUT:   %import_ref.9 = import_ref Implicit//default, inst+49, unloaded
+// CHECK:STDOUT:   %import_ref.10: type = import_ref Implicit//default, inst+102, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.11: type = import_ref Implicit//default, inst+103, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.12 = import_ref Implicit//default, inst+104, unloaded
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+127, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.14: type = import_ref Implicit//default, inst+128, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.15 = import_ref Implicit//default, inst+129, unloaded
+// CHECK:STDOUT:   %import_ref.17: type = import_ref Implicit//default, inst+155, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.18: type = import_ref Implicit//default, inst+156, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.19 = import_ref Implicit//default, inst+157, unloaded
+// CHECK:STDOUT:   %import_ref.20 = import_ref Implicit//default, inst+183, unloaded
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+184, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+185, unloaded
+// CHECK:STDOUT:   %import_ref.23: type = import_ref Implicit//default, inst+189, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.24: type = import_ref Implicit//default, inst+190, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.25 = import_ref Implicit//default, inst+191, unloaded
+// CHECK:STDOUT:   %import_ref.26 = import_ref Implicit//default, inst+205, unloaded
+// CHECK:STDOUT:   %import_ref.27: type = import_ref Implicit//default, inst+240, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.28: type = import_ref Implicit//default, inst+241, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.29 = import_ref Implicit//default, inst+242, unloaded
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+265, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.31: type = import_ref Implicit//default, inst+266, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.32 = import_ref Implicit//default, inst+267, unloaded
+// CHECK:STDOUT:   %import_ref.34: type = import_ref Implicit//default, inst+293, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.35: type = import_ref Implicit//default, inst+294, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.36 = import_ref Implicit//default, inst+295, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 31 - 31
toolchain/check/testdata/return/no_prelude/import_convert_function.carbon

@@ -1146,12 +1146,12 @@ fn F0(n: i32) -> P.D {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.8
 // CHECK:STDOUT:     import Core//default
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.2: type = import_ref P//library, inst+36, loaded [template = constants.%D]
-// CHECK:STDOUT:   %import_ref.3 = import_ref P//library, inst+37, unloaded
-// CHECK:STDOUT:   %import_ref.4 = import_ref P//library, inst+43, unloaded
-// CHECK:STDOUT:   %import_ref.5 = import_ref P//library, inst+48, unloaded
-// CHECK:STDOUT:   %import_ref.6: %C.type = import_ref P//library, inst+27, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.7 = import_ref P//library, inst+32, unloaded
+// CHECK:STDOUT:   %import_ref.2: type = import_ref P//library, inst+34, loaded [template = constants.%D]
+// CHECK:STDOUT:   %import_ref.3 = import_ref P//library, inst+35, unloaded
+// CHECK:STDOUT:   %import_ref.4 = import_ref P//library, inst+41, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref P//library, inst+46, unloaded
+// CHECK:STDOUT:   %import_ref.6: %C.type = import_ref P//library, inst+25, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.7 = import_ref P//library, inst+30, unloaded
 // CHECK:STDOUT:   %import_ref.9 = import_ref Core//default, inst+36, unloaded
 // CHECK:STDOUT:   %import_ref.10: @ImplicitAs.%.1 (%.10) = import_ref Core//default, inst+60, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)]
 // CHECK:STDOUT:   %import_ref.11 = import_ref Core//default, inst+52, unloaded
@@ -1159,31 +1159,31 @@ fn F0(n: i32) -> P.D {
 // CHECK:STDOUT:   %import_ref.14: type = import_ref Core//default, inst+71, loaded [template = Core.IntLiteral]
 // CHECK:STDOUT:   %import_ref.15: type = import_ref Core//default, inst+79, loaded [template = constants.%ImplicitAs.type.3]
 // CHECK:STDOUT:   %import_ref.16: <witness> = import_ref Core//default, inst+103, loaded [template = constants.%.16]
-// CHECK:STDOUT:   %import_ref.17: type = import_ref P//library, inst+156, loaded [template = constants.%C.3]
-// CHECK:STDOUT:   %import_ref.18: type = import_ref P//library, inst+161, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.19: <witness> = import_ref P//library, inst+182, loaded [template = constants.%.29]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref P//library, inst+199, loaded [template = constants.%C.4]
-// CHECK:STDOUT:   %import_ref.21: type = import_ref P//library, inst+204, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.22: <witness> = import_ref P//library, inst+220, loaded [template = constants.%.32]
-// CHECK:STDOUT:   %import_ref.23: type = import_ref P//library, inst+236, loaded [template = constants.%C.5]
-// CHECK:STDOUT:   %import_ref.24: type = import_ref P//library, inst+241, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.25: <witness> = import_ref P//library, inst+257, loaded [template = constants.%.35]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref P//library, inst+273, loaded [template = constants.%C.6]
-// CHECK:STDOUT:   %import_ref.27: type = import_ref P//library, inst+278, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.28: <witness> = import_ref P//library, inst+294, loaded [template = constants.%.38]
-// CHECK:STDOUT:   %import_ref.29: type = import_ref P//library, inst+310, loaded [template = constants.%C.7]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref P//library, inst+315, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.31: <witness> = import_ref P//library, inst+331, loaded [template = constants.%.41]
-// CHECK:STDOUT:   %import_ref.32: type = import_ref P//library, inst+347, loaded [template = constants.%C.8]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref P//library, inst+352, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.34: <witness> = import_ref P//library, inst+368, loaded [template = constants.%.44]
-// CHECK:STDOUT:   %import_ref.35: type = import_ref P//library, inst+384, loaded [template = constants.%C.9]
-// CHECK:STDOUT:   %import_ref.36: type = import_ref P//library, inst+389, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.37: <witness> = import_ref P//library, inst+405, loaded [template = constants.%.47]
-// CHECK:STDOUT:   %import_ref.38: type = import_ref P//library, inst+421, loaded [template = constants.%C.10]
-// CHECK:STDOUT:   %import_ref.39: type = import_ref P//library, inst+426, loaded [template = constants.%ImplicitAs.type.4]
-// CHECK:STDOUT:   %import_ref.40: <witness> = import_ref P//library, inst+442, loaded [template = constants.%.50]
-// CHECK:STDOUT:   %import_ref.41: %Make.type = import_ref P//library, inst+57, loaded [template = constants.%Make]
+// CHECK:STDOUT:   %import_ref.17: type = import_ref P//library, inst+148, loaded [template = constants.%C.3]
+// CHECK:STDOUT:   %import_ref.18: type = import_ref P//library, inst+153, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.19: <witness> = import_ref P//library, inst+174, loaded [template = constants.%.29]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref P//library, inst+191, loaded [template = constants.%C.4]
+// CHECK:STDOUT:   %import_ref.21: type = import_ref P//library, inst+196, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.22: <witness> = import_ref P//library, inst+212, loaded [template = constants.%.32]
+// CHECK:STDOUT:   %import_ref.23: type = import_ref P//library, inst+228, loaded [template = constants.%C.5]
+// CHECK:STDOUT:   %import_ref.24: type = import_ref P//library, inst+233, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.25: <witness> = import_ref P//library, inst+249, loaded [template = constants.%.35]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref P//library, inst+265, loaded [template = constants.%C.6]
+// CHECK:STDOUT:   %import_ref.27: type = import_ref P//library, inst+270, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.28: <witness> = import_ref P//library, inst+286, loaded [template = constants.%.38]
+// CHECK:STDOUT:   %import_ref.29: type = import_ref P//library, inst+302, loaded [template = constants.%C.7]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref P//library, inst+307, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.31: <witness> = import_ref P//library, inst+323, loaded [template = constants.%.41]
+// CHECK:STDOUT:   %import_ref.32: type = import_ref P//library, inst+339, loaded [template = constants.%C.8]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref P//library, inst+344, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.34: <witness> = import_ref P//library, inst+360, loaded [template = constants.%.44]
+// CHECK:STDOUT:   %import_ref.35: type = import_ref P//library, inst+376, loaded [template = constants.%C.9]
+// CHECK:STDOUT:   %import_ref.36: type = import_ref P//library, inst+381, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.37: <witness> = import_ref P//library, inst+397, loaded [template = constants.%.47]
+// CHECK:STDOUT:   %import_ref.38: type = import_ref P//library, inst+413, loaded [template = constants.%C.10]
+// CHECK:STDOUT:   %import_ref.39: type = import_ref P//library, inst+418, loaded [template = constants.%ImplicitAs.type.4]
+// CHECK:STDOUT:   %import_ref.40: <witness> = import_ref P//library, inst+434, loaded [template = constants.%.50]
+// CHECK:STDOUT:   %import_ref.41: %Make.type = import_ref P//library, inst+55, loaded [template = constants.%Make]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 113 - 113
toolchain/check/testdata/struct/import.carbon

@@ -43,10 +43,10 @@ var c_bad: C({.c = 1, .d = 2}) = F();
 // --- fail_bad_value.impl.carbon
 
 impl package Implicit;
-// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+6]]:1: error: cannot implicitly convert from `C(<cannot stringify inst+400 kind StructValue>)` to `C(<cannot stringify inst+388 kind StructValue>)` [ImplicitAsConversionFailure]
+// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+6]]:1: error: cannot implicitly convert from `C(<cannot stringify inst+358 kind StructValue>)` to `C(<cannot stringify inst+346 kind StructValue>)` [ImplicitAsConversionFailure]
 // CHECK:STDERR: var c_bad: C({.a = 3, .b = 4}) = F();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+3]]:1: note: type `C(<cannot stringify inst+400 kind StructValue>)` does not implement interface `ImplicitAs(C(<cannot stringify inst+388 kind StructValue>))` [MissingImplInMemberAccessNote]
+// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+3]]:1: note: type `C(<cannot stringify inst+358 kind StructValue>)` does not implement interface `ImplicitAs(C(<cannot stringify inst+346 kind StructValue>))` [MissingImplInMemberAccessNote]
 // CHECK:STDERR: var c_bad: C({.a = 3, .b = 4}) = F();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 var c_bad: C({.a = 3, .b = 4}) = F();
@@ -369,49 +369,49 @@ var c_bad: C({.a = 3, .b = 4}) = F();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: ref %.22 = import_ref Implicit//default, inst+24, loaded
-// CHECK:STDOUT:   %import_ref.2: ref %.24 = import_ref Implicit//default, inst+399, loaded
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+458, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+502, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.1: ref %.22 = import_ref Implicit//default, inst+22, loaded
+// CHECK:STDOUT:   %import_ref.2: ref %.24 = import_ref Implicit//default, inst+357, loaded
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+416, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+460, loaded [template = constants.%F]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.39
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.41
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+42, unloaded
-// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+43, loaded [symbolic = @ImplicitAs.%.2 (constants.%.37)]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+89, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+90, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+91, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+119, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+120, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+121, unloaded
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+148, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+149, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+150, unloaded
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+180, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+181, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+212, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+213, unloaded
-// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+214, unloaded
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+220, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+221, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+238, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+277, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+278, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+279, unloaded
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+306, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+307, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+308, unloaded
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+338, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+339, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+340, unloaded
-// CHECK:STDOUT:   %import_ref.40 = import_ref Implicit//default, inst+463, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+38, unloaded
+// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+39, loaded [symbolic = @ImplicitAs.%.2 (constants.%.37)]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+40, unloaded
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+81, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+82, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+83, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+54, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+107, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+108, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+109, unloaded
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+132, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+133, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+134, unloaded
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+160, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+161, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+162, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+188, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+189, unloaded
+// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+190, unloaded
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+194, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+195, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+196, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+210, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+245, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+246, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+247, unloaded
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+270, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+271, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+272, unloaded
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+298, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+299, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+300, unloaded
+// CHECK:STDOUT:   %import_ref.40 = import_ref Implicit//default, inst+421, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1172,47 +1172,47 @@ var c_bad: C({.a = 3, .b = 4}) = F();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+24, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+399, unloaded
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+458, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+502, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+22, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+357, unloaded
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+416, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+460, loaded [template = constants.%F]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+42, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Implicit//default, inst+43, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+89, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+90, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.10 = import_ref Implicit//default, inst+91, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+119, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+120, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+121, unloaded
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+148, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+149, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+150, unloaded
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+180, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+181, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+212, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+213, unloaded
-// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+214, unloaded
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+220, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+221, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+238, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+277, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+278, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+279, unloaded
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+306, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+307, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+308, unloaded
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+338, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+339, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+340, unloaded
-// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+463, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+38, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Implicit//default, inst+39, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+40, unloaded
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+81, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+82, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.10 = import_ref Implicit//default, inst+83, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+54, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+107, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+108, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+109, unloaded
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+132, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+133, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+134, unloaded
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+160, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+161, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+162, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+188, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+189, unloaded
+// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+190, unloaded
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+194, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+195, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+196, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+210, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+245, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+246, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+247, unloaded
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+270, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+271, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+272, unloaded
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+298, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+299, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+300, unloaded
+// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+421, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1892,48 +1892,48 @@ var c_bad: C({.a = 3, .b = 4}) = F();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+24, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+399, unloaded
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+458, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+502, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+22, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+357, unloaded
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+416, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+460, loaded [template = constants.%F]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.40
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+42, unloaded
-// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+43, loaded [symbolic = @ImplicitAs.%.2 (constants.%.31)]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+89, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+90, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+91, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+60, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+119, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+120, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+121, unloaded
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+148, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+149, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+150, unloaded
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+180, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+181, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+182, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+212, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+213, unloaded
-// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+214, unloaded
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+220, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+221, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+222, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+238, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+277, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+278, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+279, unloaded
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+306, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+307, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+308, unloaded
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+338, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+339, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+340, unloaded
-// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+463, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+38, unloaded
+// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+39, loaded [symbolic = @ImplicitAs.%.2 (constants.%.31)]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+40, unloaded
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+81, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+82, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+83, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+54, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+107, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+108, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+109, unloaded
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+132, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+133, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+134, unloaded
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+160, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+161, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+162, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+188, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+189, unloaded
+// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+190, unloaded
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+194, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+195, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+196, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+210, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+245, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+246, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+247, unloaded
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+270, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+271, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+272, unloaded
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+298, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+299, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+300, unloaded
+// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+421, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 113 - 113
toolchain/check/testdata/tuple/import.carbon

@@ -45,10 +45,10 @@ var c_bad: C((1, 2, 3)) = F();
 
 impl package Implicit;
 
-// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+6]]:1: error: cannot implicitly convert from `C(<cannot stringify inst+400 kind TupleValue>)` to `C(<cannot stringify inst+388 kind TupleValue>)` [ImplicitAsConversionFailure]
+// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+6]]:1: error: cannot implicitly convert from `C(<cannot stringify inst+358 kind TupleValue>)` to `C(<cannot stringify inst+346 kind TupleValue>)` [ImplicitAsConversionFailure]
 // CHECK:STDERR: var c_bad: C((3, 4)) = F();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~
-// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+3]]:1: note: type `C(<cannot stringify inst+400 kind TupleValue>)` does not implement interface `ImplicitAs(C(<cannot stringify inst+388 kind TupleValue>))` [MissingImplInMemberAccessNote]
+// CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+3]]:1: note: type `C(<cannot stringify inst+358 kind TupleValue>)` does not implement interface `ImplicitAs(C(<cannot stringify inst+346 kind TupleValue>))` [MissingImplInMemberAccessNote]
 // CHECK:STDERR: var c_bad: C((3, 4)) = F();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~
 var c_bad: C((3, 4)) = F();
@@ -400,49 +400,49 @@ var c_bad: C((3, 4)) = F();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1: ref %tuple.type.2 = import_ref Implicit//default, inst+26, loaded
-// CHECK:STDOUT:   %import_ref.2: ref %tuple.type.8 = import_ref Implicit//default, inst+412, loaded
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+495, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+529, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.1: ref %tuple.type.2 = import_ref Implicit//default, inst+24, loaded
+// CHECK:STDOUT:   %import_ref.2: ref %tuple.type.8 = import_ref Implicit//default, inst+370, loaded
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+453, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+487, loaded [template = constants.%F]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .Int = %import_ref.39
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.41
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+45, loaded [symbolic = @ImplicitAs.%.2 (constants.%.31)]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+46, unloaded
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+91, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+92, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+93, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+62, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+121, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+122, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+123, unloaded
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+150, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+151, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+152, unloaded
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+182, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+183, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+184, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+214, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+215, unloaded
-// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+216, unloaded
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+222, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+223, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+224, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+240, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+279, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+280, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+281, unloaded
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+308, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+309, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+310, unloaded
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+340, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+341, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+342, unloaded
-// CHECK:STDOUT:   %import_ref.40 = import_ref Implicit//default, inst+500, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+40, unloaded
+// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+41, loaded [symbolic = @ImplicitAs.%.2 (constants.%.31)]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+42, unloaded
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+83, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+84, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+85, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+56, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+109, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+110, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+111, unloaded
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+134, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+135, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+136, unloaded
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+162, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+163, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+164, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+190, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+191, unloaded
+// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+192, unloaded
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+196, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+197, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+198, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+212, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+247, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+248, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+249, unloaded
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+272, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+273, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+274, unloaded
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+300, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+301, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+302, unloaded
+// CHECK:STDOUT:   %import_ref.40 = import_ref Implicit//default, inst+458, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1221,47 +1221,47 @@ var c_bad: C((3, 4)) = F();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+26, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+412, unloaded
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+495, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+529, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+24, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+370, unloaded
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+453, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+487, loaded [template = constants.%F]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.6 = import_ref Implicit//default, inst+45, unloaded
-// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+46, unloaded
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+91, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+92, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.10 = import_ref Implicit//default, inst+93, unloaded
-// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+62, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+121, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+122, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+123, unloaded
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+150, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+151, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+152, unloaded
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+182, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+183, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+184, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+214, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+215, unloaded
-// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+216, unloaded
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+222, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+223, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+224, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+240, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+279, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+280, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+281, unloaded
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+308, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+309, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+310, unloaded
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+340, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+341, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+342, unloaded
-// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+500, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+40, unloaded
+// CHECK:STDOUT:   %import_ref.6 = import_ref Implicit//default, inst+41, unloaded
+// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+42, unloaded
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+83, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+84, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.10 = import_ref Implicit//default, inst+85, unloaded
+// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+56, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+109, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+110, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+111, unloaded
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+134, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+135, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+136, unloaded
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+162, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+163, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+164, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+190, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+191, unloaded
+// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+192, unloaded
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+196, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+197, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+198, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+212, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+247, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+248, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+249, unloaded
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+272, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+273, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+274, unloaded
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+300, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+301, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+302, unloaded
+// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+458, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
@@ -1942,48 +1942,48 @@ var c_bad: C((3, 4)) = F();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+26, unloaded
-// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+412, unloaded
-// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+495, loaded [template = constants.%C.1]
-// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+529, loaded [template = constants.%F]
+// CHECK:STDOUT:   %import_ref.1 = import_ref Implicit//default, inst+24, unloaded
+// CHECK:STDOUT:   %import_ref.2 = import_ref Implicit//default, inst+370, unloaded
+// CHECK:STDOUT:   %import_ref.3: %C.type = import_ref Implicit//default, inst+453, loaded [template = constants.%C.1]
+// CHECK:STDOUT:   %import_ref.4: %F.type = import_ref Implicit//default, inst+487, loaded [template = constants.%F]
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [template] {
 // CHECK:STDOUT:     .ImplicitAs = %import_ref.40
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+44, unloaded
-// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+45, loaded [symbolic = @ImplicitAs.%.2 (constants.%.29)]
-// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+46, unloaded
-// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+91, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+92, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
-// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+93, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
-// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+62, unloaded
-// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+121, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+122, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
-// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+123, unloaded
-// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+150, loaded [symbolic = @impl.3.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+151, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+152, unloaded
-// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+182, loaded [symbolic = @impl.4.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+183, loaded [template = constants.%ImplicitAs.type.5]
-// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+184, unloaded
-// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+214, unloaded
-// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+215, unloaded
-// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+216, unloaded
-// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+222, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+223, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
-// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+224, unloaded
-// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+240, unloaded
-// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+279, loaded [template = Core.IntLiteral]
-// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+280, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
-// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+281, unloaded
-// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+308, loaded [symbolic = @impl.7.%iN (constants.%iN)]
-// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+309, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+310, unloaded
-// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+340, loaded [symbolic = @impl.8.%uN (constants.%uN)]
-// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+341, loaded [template = constants.%As.type.5]
-// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+342, unloaded
-// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+500, unloaded
+// CHECK:STDOUT:   %import_ref.5 = import_ref Implicit//default, inst+40, unloaded
+// CHECK:STDOUT:   %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+41, loaded [symbolic = @ImplicitAs.%.2 (constants.%.29)]
+// CHECK:STDOUT:   %import_ref.7 = import_ref Implicit//default, inst+42, unloaded
+// CHECK:STDOUT:   %import_ref.8: type = import_ref Implicit//default, inst+83, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.9: type = import_ref Implicit//default, inst+84, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
+// CHECK:STDOUT:   %import_ref.10: <witness> = import_ref Implicit//default, inst+85, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
+// CHECK:STDOUT:   %import_ref.11 = import_ref Implicit//default, inst+56, unloaded
+// CHECK:STDOUT:   %import_ref.12: type = import_ref Implicit//default, inst+109, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.13: type = import_ref Implicit//default, inst+110, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
+// CHECK:STDOUT:   %import_ref.14 = import_ref Implicit//default, inst+111, unloaded
+// CHECK:STDOUT:   %import_ref.15: type = import_ref Implicit//default, inst+134, loaded [symbolic = @impl.3.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.16: type = import_ref Implicit//default, inst+135, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.17 = import_ref Implicit//default, inst+136, unloaded
+// CHECK:STDOUT:   %import_ref.19: type = import_ref Implicit//default, inst+162, loaded [symbolic = @impl.4.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.20: type = import_ref Implicit//default, inst+163, loaded [template = constants.%ImplicitAs.type.5]
+// CHECK:STDOUT:   %import_ref.21 = import_ref Implicit//default, inst+164, unloaded
+// CHECK:STDOUT:   %import_ref.22 = import_ref Implicit//default, inst+190, unloaded
+// CHECK:STDOUT:   %import_ref.23 = import_ref Implicit//default, inst+191, unloaded
+// CHECK:STDOUT:   %import_ref.24 = import_ref Implicit//default, inst+192, unloaded
+// CHECK:STDOUT:   %import_ref.25: type = import_ref Implicit//default, inst+196, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.26: type = import_ref Implicit//default, inst+197, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
+// CHECK:STDOUT:   %import_ref.27 = import_ref Implicit//default, inst+198, unloaded
+// CHECK:STDOUT:   %import_ref.28 = import_ref Implicit//default, inst+212, unloaded
+// CHECK:STDOUT:   %import_ref.29: type = import_ref Implicit//default, inst+247, loaded [template = Core.IntLiteral]
+// CHECK:STDOUT:   %import_ref.30: type = import_ref Implicit//default, inst+248, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
+// CHECK:STDOUT:   %import_ref.31 = import_ref Implicit//default, inst+249, unloaded
+// CHECK:STDOUT:   %import_ref.32: type = import_ref Implicit//default, inst+272, loaded [symbolic = @impl.7.%iN (constants.%iN)]
+// CHECK:STDOUT:   %import_ref.33: type = import_ref Implicit//default, inst+273, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.34 = import_ref Implicit//default, inst+274, unloaded
+// CHECK:STDOUT:   %import_ref.36: type = import_ref Implicit//default, inst+300, loaded [symbolic = @impl.8.%uN (constants.%uN)]
+// CHECK:STDOUT:   %import_ref.37: type = import_ref Implicit//default, inst+301, loaded [template = constants.%As.type.5]
+// CHECK:STDOUT:   %import_ref.38 = import_ref Implicit//default, inst+302, unloaded
+// CHECK:STDOUT:   %import_ref.39 = import_ref Implicit//default, inst+458, unloaded
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {

+ 18 - 37
toolchain/lower/file_context.cpp

@@ -326,35 +326,9 @@ auto FileContext::BuildFunctionDefinition(SemIR::FunctionId function_id)
   // TODO: This duplicates the mapping between sem_ir instructions and LLVM
   // function parameters that was already computed in BuildFunctionDecl.
   // We should only do that once.
-  auto implicit_param_refs =
-      sem_ir().inst_blocks().GetOrEmpty(function.implicit_param_refs_id);
-  auto param_refs = sem_ir().inst_blocks().GetOrEmpty(function.param_refs_id);
+  auto call_param_ids =
+      sem_ir().inst_blocks().GetOrEmpty(function.call_params_id);
   int param_index = 0;
-  // The SemIR calling-convention parameters of the function, in order of
-  // runtime index. This is a transitional step toward generating this list
-  // in the check phase, which is why we're using the runtime index order
-  // even though it's less convenient for this usage.
-  llvm::SmallVector<SemIR::InstId> calling_convention_param_ids;
-  // This is an upper bound on the size because `self` and the return slot
-  // are the only runtime parameters that don't appear in the explicit
-  // parameter list.
-  calling_convention_param_ids.reserve(param_refs.size() + 2);
-  bool has_return_slot =
-      SemIR::ReturnTypeInfo::ForFunction(sem_ir(), function, specific_id)
-          .has_return_slot();
-  for (auto param_ref_id :
-       llvm::concat<const SemIR::InstId>(implicit_param_refs, param_refs)) {
-    auto param_info =
-        SemIR::Function::GetParamFromParamRefId(sem_ir(), param_ref_id);
-    if (param_info.inst.runtime_index.is_valid()) {
-      calling_convention_param_ids.push_back(param_info.inst_id);
-    }
-  }
-  if (has_return_slot) {
-    auto return_slot =
-        sem_ir().insts().GetAs<SemIR::ReturnSlot>(function.return_slot_id);
-    calling_convention_param_ids.push_back(return_slot.storage_id);
-  }
 
   // TODO: Find a way to ensure this code and the function-call lowering use
   // the same parameter ordering.
@@ -375,16 +349,23 @@ auto FileContext::BuildFunctionDefinition(SemIR::FunctionId function_id)
     function_lowering.SetLocal(param_id, param_value);
   };
 
-  // The subset of calling_convention_param_id that is in sequential order.
-  llvm::ArrayRef<SemIR::InstId> sequential_param_ids =
-      calling_convention_param_ids;
-
-  // The LLVM calling convention has the return slot first rather than last.
-  if (has_return_slot) {
-    lower_param(calling_convention_param_ids.back());
-
-    sequential_param_ids = sequential_param_ids.drop_back();
+  // The subset of call_param_ids that is already in the order that the LLVM
+  // calling convention expects.
+  llvm::ArrayRef<SemIR::InstId> sequential_param_ids;
+  if (function.return_slot_id.is_valid()) {
+    // The LLVM calling convention has the return slot first rather than last.
+    // Note that this queries whether there is a return slot at the LLVM level,
+    // whereas `function.return_slot_id.is_valid()` queries whether there is a
+    // return slot at the SemIR level.
+    if (SemIR::ReturnTypeInfo::ForFunction(sem_ir(), function, specific_id)
+            .has_return_slot()) {
+      lower_param(call_param_ids.back());
+    }
+    sequential_param_ids = call_param_ids.drop_back();
+  } else {
+    sequential_param_ids = call_param_ids;
   }
+
   for (auto param_id : sequential_param_ids) {
     lower_param(param_id);
   }

+ 16 - 13
toolchain/sem_ir/entity_with_params_base.h

@@ -45,10 +45,9 @@ struct EntityWithParamsBase {
     first_param_node_id = definition.first_param_node_id;
     last_param_node_id = definition.last_param_node_id;
     pattern_block_id = definition.pattern_block_id;
-    implicit_param_refs_id = definition.implicit_param_refs_id;
     implicit_param_patterns_id = definition.implicit_param_patterns_id;
-    param_refs_id = definition.param_refs_id;
     param_patterns_id = definition.param_patterns_id;
+    call_params_id = definition.call_params_id;
     definition_id = definition.definition_id;
   }
 
@@ -99,26 +98,30 @@ struct EntityWithParamsBase {
   // A block containing the pattern insts for the parameter lists.
   InstBlockId pattern_block_id;
 
-  // A block containing, for each implicit parameter, a reference to the
-  // instruction in the entity's declaration block that depends on all other
-  // pattern-match insts pertaining to that parameter.
-  InstBlockId implicit_param_refs_id;
-
   // A block containing, for each implicit parameter, a reference to the
   // instruction in the entity's pattern block that depends on all other
   // pattern insts pertaining to that parameter.
   InstBlockId implicit_param_patterns_id;
-
-  // A block containing, for each explicit parameter, a reference to the
-  // instruction in the entity's declaration block that depends on all other
-  // pattern-match insts pertaining to that parameter.
-  InstBlockId param_refs_id;
-
   // A block containing, for each explicit parameter, a reference to the
   // instruction in the entity's pattern block that depends on all other
   // pattern insts pertaining to that parameter.
   InstBlockId param_patterns_id;
 
+  // If this entity is a function, this block consists of references to the
+  // `AnyParam` insts that represent the function's `Call` parameters. The
+  // "`Call` parameters" are the parameters corresponding to the arguments that
+  // are passed to a `Call` inst, so they do not include compile-time
+  // parameters, but they do include the return slot.
+  //
+  // The parameters appear in declaration order: `self` (if present), then the
+  // explicit runtime parameters, then the return slot (which is "declared" by
+  // the function's return type declaration). This is not populated on imported
+  // functions, because it is relevant only for a function definition.
+  //
+  // TODO: Can this be moved to `Function`, since it is not applicable to other
+  // kinds of entities?
+  InstBlockId call_params_id;
+
   // True if declarations are `extern`.
   bool is_extern;
 

+ 0 - 14
toolchain/sem_ir/function.cpp

@@ -102,20 +102,6 @@ auto Function::GetNameFromPatternId(const File& sem_ir, InstId pattern_id)
   return sem_ir.entity_names().Get(binding_pattern.entity_name_id).name_id;
 }
 
-auto Function::GetParamFromParamRefId(const File& sem_ir, InstId param_ref_id)
-    -> ParamInfo {
-  auto ref = sem_ir.insts().Get(param_ref_id);
-
-  auto bind_name = ref.TryAs<AnyBindName>();
-  if (bind_name) {
-    param_ref_id = bind_name->value_id;
-    ref = sem_ir.insts().Get(param_ref_id);
-  } else {
-    CARBON_FATAL();
-  }
-  return {param_ref_id, ref.As<AnyParam>(), bind_name};
-}
-
 auto Function::GetDeclaredReturnType(const File& file,
                                      SpecificId specific_id) const -> TypeId {
   if (!return_slot_id.is_valid()) {

+ 0 - 11
toolchain/sem_ir/function.h

@@ -92,17 +92,6 @@ struct Function : public EntityWithParamsBase,
   static auto GetNameFromPatternId(const File& sem_ir, InstId param_pattern_id)
       -> SemIR::NameId;
 
-  // Given a parameter reference instruction from `param_refs_id` or
-  // `implicit_param_refs_id`, returns a `ParamInfo` value with the
-  // corresponding instruction, its ID, and the name binding, if present.
-  struct ParamInfo {
-    InstId inst_id;
-    AnyParam inst;
-    std::optional<AnyBindName> bind_name;
-  };
-  static auto GetParamFromParamRefId(const File& sem_ir, InstId param_ref_id)
-      -> ParamInfo;
-
   // Gets the declared return type for a specific version of this function, or
   // the canonical return type for the original declaration no specific is
   // specified.  Returns `Invalid` if no return type was specified, in which

+ 2 - 0
toolchain/sem_ir/ids.h

@@ -254,6 +254,8 @@ constexpr CompileTimeBindIndex CompileTimeBindIndex::Invalid =
 // arguments passed to them at runtime. In a `call` instruction, a runtime
 // argument will have the position in the argument list corresponding to its
 // runtime parameter index.
+// TODO: Rename this to CallParamIndex, for consistency with the "`Call`
+// parameters" terminology in EntityWithParamsBase.
 struct RuntimeParamIndex : public IndexBase,
                            public Printable<RuntimeParamIndex> {
   // An explicitly invalid index.

+ 2 - 4
toolchain/sem_ir/typed_insts.h

@@ -453,10 +453,8 @@ struct Call {
 
   TypeId type_id;
   InstId callee_id;
-  // The arguments block contains IDs for the following arguments, in order:
-  //  - The argument for each implicit parameter.
-  //  - The argument for each explicit parameter.
-  //  - The argument for the return slot, if present.
+  // Runtime arguments in lexical order of the parameter declarations, followed
+  // by the argument for the return slot, if present.
   InstBlockId args_id;
 };