Explorar o código

Replace builtin `CppVoidType` with a prelude type. (#6403)

Following #6357, map C++ `void` to a prelude class type
`Core.CppCompat.VoidBase`, not to a builtin type. This is mostly just
moving logic around, but does notably change `Cpp.void` from being an
incomplete type to being a complete-but-abstract type.

Also change `NullptrT` to be an adapter for `void*` instead of `()*`, to
follow the approved design.

Implicit conversions to `void` and to `void*` are still absent.

Part of #6280.
Richard Smith hai 5 meses
pai
achega
0678501038
Modificáronse 29 ficheiros con 2427 adicións e 2253 borrados
  1. 2 1
      core/prelude/types.carbon
  2. 3 2
      core/prelude/types/cpp/nullptr.carbon
  3. 29 0
      core/prelude/types/cpp/void.carbon
  4. 9 8
      toolchain/check/cpp/import.cpp
  5. 5 33
      toolchain/check/cpp/type_mapping.cpp
  6. 4 6
      toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon
  7. 209 211
      toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon
  8. 61 61
      toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon
  9. 61 61
      toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon
  10. 1549 1549
      toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon
  11. 122 122
      toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon
  12. 6 6
      toolchain/check/testdata/interop/cpp/function/decayed_param.carbon
  13. 128 118
      toolchain/check/testdata/interop/cpp/function/void_pointer.carbon
  14. 66 0
      toolchain/check/testdata/interop/cpp/void.carbon
  15. 29 25
      toolchain/check/testdata/interop/cpp/void_pointer.carbon
  16. 0 14
      toolchain/check/type_completion.cpp
  17. 0 1
      toolchain/diagnostics/diagnostic_kind.def
  18. 4 4
      toolchain/driver/testdata/stdin.carbon
  19. 8 9
      toolchain/lower/file_context.cpp
  20. 3 3
      toolchain/lower/testdata/interop/cpp/nullptr.carbon
  21. 1 1
      toolchain/lower/testdata/interop/cpp/return.carbon
  22. 109 0
      toolchain/lower/testdata/interop/cpp/void.carbon
  23. 0 1
      toolchain/sem_ir/expr_info.cpp
  24. 0 1
      toolchain/sem_ir/inst_kind.def
  25. 13 7
      toolchain/sem_ir/singleton_insts.h
  26. 4 0
      toolchain/sem_ir/type_info.cpp
  27. 2 0
      toolchain/sem_ir/type_info.h
  28. 0 1
      toolchain/sem_ir/type_iterator.cpp
  29. 0 8
      toolchain/sem_ir/typed_insts.h

+ 2 - 1
core/prelude/types.carbon

@@ -7,12 +7,13 @@ package Core library "prelude/types";
 export import library "prelude/types/bool";
 export import library "prelude/types/char";
 export import library "prelude/types/cpp/int";
+export import library "prelude/types/cpp/nullptr";
+export import library "prelude/types/cpp/void";
 export import library "prelude/types/float";
 export import library "prelude/types/float_literal";
 export import library "prelude/types/int";
 export import library "prelude/types/int_literal";
 export import library "prelude/types/maybe_unformed";
-export import library "prelude/types/cpp/nullptr";
 export import library "prelude/types/optional";
 export import library "prelude/types/string";
 export import library "prelude/types/uint";

+ 3 - 2
core/prelude/types/cpp/nullptr.carbon

@@ -7,8 +7,9 @@ package Core library "prelude/types/cpp/nullptr";
 import library "prelude/copy";
 import library "prelude/destroy";
 import library "prelude/operators/as";
-import library "prelude/types/optional";
+import library "prelude/types/cpp/void";
 import library "prelude/types/maybe_unformed";
+import library "prelude/types/optional";
 
 namespace CppCompat;
 
@@ -26,7 +27,7 @@ class CppCompat.NullptrT {
   // nullptr_t has the same size and alignment as a pointer, but the
   // corresponding pointer is always unformed.
   // TODO: Give this type a custom empty value representation.
-  adapt MaybeUnformed(()*);
+  adapt MaybeUnformed(VoidBase*);
 
   fn Make() -> Self {
     returned var s: Self;

+ 29 - 0
core/prelude/types/cpp/void.carbon

@@ -0,0 +1,29 @@
+// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+package Core library "prelude/types/cpp/void";
+
+namespace CppCompat;
+
+// C++ `void` as a Carbon type.
+//
+// This type represents a notional "base-most" object at the root of every
+// inheritance hierarchy. There are no objects of type `VoidType`, but any value
+// can be converted to a value of type `VoidType`.
+//
+// This type is used as the default mapping for C++ `void`, which is used in
+// most contexts in which `void` can appear: for example, as a pointee of a
+// pointer type, as the type of a typedef, or as a type template argument.
+// However, in a function signature, a `void` return type maps to `()` instead,
+// and a `(void)` parameter list maps to `()`.
+//
+// This type is also available via the alias `Cpp.void`.
+abstract class CppCompat.VoidBase {
+  adapt ();
+}
+
+// TODO: An unqualified pointer to `T` should implicitly convert to a pointer to
+// `<qualifiers> void` if `<qualifiers>` includes all of the qualifiers for `T`.
+// Similarly, a value of type `T` should implicitly convert to a value of type
+// `void`.

+ 9 - 8
toolchain/check/cpp/import.cpp

@@ -1062,6 +1062,12 @@ static auto MakeIntType(Context& context, IntId size_id, bool is_signed)
   return ExprAsType(context, Parse::NodeId::None, type_inst_id);
 }
 
+static auto MakeCppCompatType(Context& context, SemIR::LocId loc_id,
+                              llvm::StringRef name) -> TypeExpr {
+  return ExprAsType(context, loc_id,
+                    LookupNameInCore(context, loc_id, {"CppCompat", name}));
+}
+
 // Maps a C++ builtin integer type to a Carbon type.
 // TODO: Handle integer types that map to named aliases.
 static auto MapBuiltinIntegerType(Context& context, SemIR::LocId loc_id,
@@ -1090,17 +1096,13 @@ static auto MapBuiltinIntegerType(Context& context, SemIR::LocId loc_id,
   }
   if (clang::ASTContext::hasSameType(qual_type, ast_context.LongTy) &&
       width == 32) {
-    return ExprAsType(context, Parse::NodeId::None,
-                      LookupNameInCore(context, Parse::NodeId::None,
-                                       {"CppCompat", "Long32"}));
+    return MakeCppCompatType(context, loc_id, "Long32");
   }
   return TypeExpr::None;
 }
 
 static auto MapNullptrType(Context& context, SemIR::LocId loc_id) -> TypeExpr {
-  return ExprAsType(
-      context, loc_id,
-      LookupNameInCore(context, loc_id, {"CppCompat", "NullptrT"}));
+  return MakeCppCompatType(context, loc_id, "NullptrT");
 }
 
 // Maps a C++ builtin type to a Carbon type.
@@ -1129,8 +1131,7 @@ static auto MapBuiltinType(Context& context, SemIR::LocId loc_id,
     }
     // TODO: Handle floating-point types that map to named aliases.
   } else if (type.isVoidType()) {
-    return ExprAsType(context, Parse::NodeId::None,
-                      SemIR::CppVoidType::TypeInstId);
+    return MakeCppCompatType(context, loc_id, "VoidBase");
   } else if (type.isNullPtrType()) {
     return MapNullptrType(context, loc_id);
   }

+ 5 - 33
toolchain/check/cpp/type_mapping.cpp

@@ -161,6 +161,9 @@ static auto TryMapClassType(Context& context, SemIR::ClassType class_type)
     case SemIR::RecognizedTypeInfo::CppNullptrT: {
       return ast_context.NullPtrTy;
     }
+    case SemIR::RecognizedTypeInfo::CppVoidBase: {
+      return ast_context.VoidTy;
+    }
     case SemIR::RecognizedTypeInfo::Str: {
       return LookupCppType(context, {"std", "string_view"});
     }
@@ -207,33 +210,6 @@ static auto MapNonWrapperType(Context& context, SemIR::InstId inst_id,
   }
 }
 
-// Returns `void*` if the type is a wrapped `Cpp.void*`, consuming the pointer
-// from `wrapper_types`. Otherwise returns no type.
-static auto TryMapVoidPointer(Context& context, SemIR::TypeId type_id,
-                              llvm::SmallVector<SemIR::TypeId>& wrapper_types)
-    -> clang::QualType {
-  if (type_id != SemIR::CppVoidType::TypeId || wrapper_types.empty()) {
-    return clang::QualType();
-  }
-
-  if (context.types().Is<SemIR::PointerType>(wrapper_types.back())) {
-    // `void*`.
-    wrapper_types.pop_back();
-  } else if (wrapper_types.size() >= 2 &&
-             context.types().Is<SemIR::ConstType>(wrapper_types.back()) &&
-             context.types().Is<SemIR::PointerType>(
-                 wrapper_types[wrapper_types.size() - 2])) {
-    // `const void*`.
-    wrapper_types.erase(wrapper_types.end() - 2);
-  } else {
-    return clang::QualType();
-  }
-
-  return context.ast_context().getAttributedType(
-      clang::attr::TypeNonNull, context.ast_context().VoidPtrTy,
-      context.ast_context().VoidPtrTy);
-}
-
 // Maps a Carbon type to a C++ type. Accepts an InstId, representing a value
 // whose type is mapped to a C++ type. Returns `clang::QualType` if the mapping
 // succeeds, or `clang::QualType::isNull()` if the type is not supported.
@@ -258,13 +234,9 @@ static auto MapToCppType(Context& context, SemIR::InstId inst_id)
     wrapper_types.push_back(orig_type_id);
   }
 
-  clang::QualType mapped_type =
-      TryMapVoidPointer(context, type_id, wrapper_types);
+  clang::QualType mapped_type = MapNonWrapperType(context, inst_id, type_id);
   if (mapped_type.isNull()) {
-    mapped_type = MapNonWrapperType(context, inst_id, type_id);
-    if (mapped_type.isNull()) {
-      return mapped_type;
-    }
+    return mapped_type;
   }
 
   for (auto wrapper_type_id : llvm::reverse(wrapper_types)) {

+ 4 - 6
toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon

@@ -20,7 +20,7 @@
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {}}
 // CHECK:STDOUT:   entity_names:    {}
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:       {}
@@ -42,7 +42,6 @@
 // CHECK:STDOUT:     'inst(BoolType)':  {kind: BoolType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(BoundMethodType)': {kind: BoundMethodType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(CharLiteralType)': {kind: CharLiteralType, type: type(TypeType)}
-// CHECK:STDOUT:     'inst(CppVoidType)': {kind: CppVoidType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(ErrorInst)': {kind: ErrorInst, type: type(Error)}
 // CHECK:STDOUT:     'inst(FloatLiteralType)': {kind: FloatLiteralType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(InstType)':  {kind: InstType, type: type(TypeType)}
@@ -51,7 +50,7 @@
 // CHECK:STDOUT:     'inst(SpecificFunctionType)': {kind: SpecificFunctionType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(VtableType)': {kind: VtableType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(WitnessType)': {kind: WitnessType, type: type(TypeType)}
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       'inst(TypeType)':  concrete_constant(inst(TypeType))
@@ -59,7 +58,6 @@
 // CHECK:STDOUT:       'inst(BoolType)':  concrete_constant(inst(BoolType))
 // CHECK:STDOUT:       'inst(BoundMethodType)': concrete_constant(inst(BoundMethodType))
 // CHECK:STDOUT:       'inst(CharLiteralType)': concrete_constant(inst(CharLiteralType))
-// CHECK:STDOUT:       'inst(CppVoidType)': concrete_constant(inst(CppVoidType))
 // CHECK:STDOUT:       'inst(ErrorInst)': concrete_constant(inst(ErrorInst))
 // CHECK:STDOUT:       'inst(FloatLiteralType)': concrete_constant(inst(FloatLiteralType))
 // CHECK:STDOUT:       'inst(InstType)':  concrete_constant(inst(InstType))
@@ -68,7 +66,7 @@
 // CHECK:STDOUT:       'inst(SpecificFunctionType)': concrete_constant(inst(SpecificFunctionType))
 // CHECK:STDOUT:       'inst(VtableType)': concrete_constant(inst(VtableType))
 // CHECK:STDOUT:       'inst(WitnessType)': concrete_constant(inst(WitnessType))
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
@@ -76,5 +74,5 @@
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
-// CHECK:STDOUT:       0:               instE
+// CHECK:STDOUT:       0:               instD
 // CHECK:STDOUT: ...

+ 209 - 211
toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon

@@ -43,18 +43,18 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir(Cpp), clang_source_loc_id: clang_source_loc60000001}
 // CHECK:STDOUT:     import_ir_inst2: {ir_id: import_ir(Cpp), clang_source_loc_id: clang_source_loc60000002}
 // CHECK:STDOUT:   clang_decls:
-// CHECK:STDOUT:     clang_decl_id60000000: {key: "<translation unit>", inst_id: inst60000010}
-// CHECK:STDOUT:     clang_decl_id60000001: {key: "struct X {}", inst_id: inst60000013}
-// CHECK:STDOUT:     clang_decl_id60000002: {key: "X * _Nonnull p", inst_id: inst60000021}
-// CHECK:STDOUT:     clang_decl_id60000003: {key: {decl: "void f(X x = {})", num_params: 0}, inst_id: inst6000002C}
-// CHECK:STDOUT:     clang_decl_id60000004: {key: {decl: "extern void f__carbon_thunk()", num_params: 0}, inst_id: inst6000002F}
-// CHECK:STDOUT:     clang_decl_id60000005: {key: {decl: "void f(X x = {})", num_params: 1}, inst_id: inst6000003A}
-// CHECK:STDOUT:     clang_decl_id60000006: {key: {decl: "extern void f__carbon_thunk(X * _Nonnull x)", num_params: 1}, inst_id: inst60000042}
-// CHECK:STDOUT:     clang_decl_id60000007: {key: "X * _Nonnull global", inst_id: inst6000004B}
+// CHECK:STDOUT:     clang_decl_id60000000: {key: "<translation unit>", inst_id: inst6000000F}
+// CHECK:STDOUT:     clang_decl_id60000001: {key: "struct X {}", inst_id: inst60000012}
+// CHECK:STDOUT:     clang_decl_id60000002: {key: "X * _Nonnull p", inst_id: inst60000020}
+// CHECK:STDOUT:     clang_decl_id60000003: {key: {decl: "void f(X x = {})", num_params: 0}, inst_id: inst6000002B}
+// CHECK:STDOUT:     clang_decl_id60000004: {key: {decl: "extern void f__carbon_thunk()", num_params: 0}, inst_id: inst6000002E}
+// CHECK:STDOUT:     clang_decl_id60000005: {key: {decl: "void f(X x = {})", num_params: 1}, inst_id: inst60000039}
+// CHECK:STDOUT:     clang_decl_id60000006: {key: {decl: "extern void f__carbon_thunk(X * _Nonnull x)", num_params: 1}, inst_id: inst60000041}
+// CHECK:STDOUT:     clang_decl_id60000007: {key: "X * _Nonnull global", inst_id: inst6000004A}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name(Cpp): inst60000010, name0: inst6000001C}}
-// CHECK:STDOUT:     name_scope60000001: {inst: inst60000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name2: inst60000013, name3: inst60000029, name4: inst6000004B}}
-// CHECK:STDOUT:     name_scope60000002: {inst: inst60000013, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name(Cpp): inst6000000F, name0: inst6000001B}}
+// CHECK:STDOUT:     name_scope60000001: {inst: inst6000000F, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name2: inst60000012, name3: inst60000028, name4: inst6000004A}}
+// CHECK:STDOUT:     name_scope60000002: {inst: inst60000012, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name60000000: {name: name1, parent_scope: name_scope<none>, index: -1, is_template: 0}
 // CHECK:STDOUT:     entity_name60000001: {name: name1, parent_scope: name_scope<none>, index: -1, is_template: 0}
@@ -69,15 +69,15 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     function60000003: {name: name3, parent_scope: name_scope60000001, call_params_id: inst_block6000000D}
 // CHECK:STDOUT:     function60000004: {name: name6, parent_scope: name_scope60000001, call_params_id: inst_block60000012}
 // CHECK:STDOUT:   classes:
-// CHECK:STDOUT:     class60000000:   {name: name2, parent_scope: name_scope60000001, self_type_id: type(inst60000014), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope60000002, body_block_id: inst_block6000000A, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: inst60000024, vtable_decl_id: inst<none>}}
+// CHECK:STDOUT:     class60000000:   {name: name2, parent_scope: name_scope60000001, self_type_id: type(inst60000013), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope60000002, body_block_id: inst_block6000000A, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: inst60000023, vtable_decl_id: inst<none>}}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:     struct_type_fields60000001:
-// CHECK:STDOUT:       0:               {name_id: name5, type_inst_id: inst6000001F}
+// CHECK:STDOUT:       0:               {name_id: name5, type_inst_id: inst6000001E}
 // CHECK:STDOUT:     struct_type_fields60000002:
-// CHECK:STDOUT:       0:               {name_id: name5, type_inst_id: inst6000001F}
+// CHECK:STDOUT:       0:               {name_id: name5, type_inst_id: inst6000001E}
 // CHECK:STDOUT:   types:
 // CHECK:STDOUT:     'type(TypeType)':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(TypeType)}
@@ -86,38 +86,37 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     'type(inst(InstType))':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst60000012)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst6000001D)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst6000001F)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000001F)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst60000011)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst6000001C)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst6000001E)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000001E)}
 // CHECK:STDOUT:     'type(inst(WitnessType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     'type(inst60000026)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst60000026)}
-// CHECK:STDOUT:     'type(inst60000023)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst60000026)}
-// CHECK:STDOUT:     'type(inst60000014)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst60000026)}
-// CHECK:STDOUT:     'type(inst60000028)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst6000002D)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst60000030)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst6000003B)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
-// CHECK:STDOUT:     'type(inst60000043)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
+// CHECK:STDOUT:     'type(inst60000025)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst60000025)}
+// CHECK:STDOUT:     'type(inst60000022)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst60000025)}
+// CHECK:STDOUT:     'type(inst60000013)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst60000025)}
+// CHECK:STDOUT:     'type(inst60000027)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst6000002C)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst6000002F)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst6000003A)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:     'type(inst60000042)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     'inst(TypeType)':  {kind: TypeType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(AutoType)':  {kind: AutoType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(BoolType)':  {kind: BoolType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(BoundMethodType)': {kind: BoundMethodType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(CharLiteralType)': {kind: CharLiteralType, type: type(TypeType)}
-// CHECK:STDOUT:     'inst(CppVoidType)': {kind: CppVoidType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(ErrorInst)': {kind: ErrorInst, type: type(Error)}
 // CHECK:STDOUT:     'inst(FloatLiteralType)': {kind: FloatLiteralType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(InstType)':  {kind: InstType, type: type(TypeType)}
@@ -126,79 +125,79 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     'inst(SpecificFunctionType)': {kind: SpecificFunctionType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(VtableType)': {kind: VtableType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(WitnessType)': {kind: WitnessType, type: type(TypeType)}
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst6000000F:    {kind: ImportCppDecl}
-// CHECK:STDOUT:     inst60000010:    {kind: Namespace, arg0: name_scope60000001, arg1: inst6000000F, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst60000011:    {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst60000012:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000013:    {kind: ClassDecl, arg0: class60000000, arg1: inst_block<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000014:    {kind: ClassType, arg0: class60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000015:    {kind: NameRef, arg0: name2, arg1: inst60000013, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000016:    {kind: ValueBinding, arg0: entity_name60000000, arg1: inst6000001A, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000017:    {kind: PatternType, arg0: inst60000014, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000018:    {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000017)}
-// CHECK:STDOUT:     inst60000019:    {kind: ValueParamPattern, arg0: inst60000018, arg1: call_param0, type: type(inst60000017)}
-// CHECK:STDOUT:     inst6000001A:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000014)}
-// CHECK:STDOUT:     inst6000001B:    {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000015, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001C:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000008, type: type(inst6000001D)}
-// CHECK:STDOUT:     inst6000001D:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001E:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000001D)}
-// CHECK:STDOUT:     inst6000001F:    {kind: PointerType, arg0: inst60000014, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000020:    {kind: UnboundElementType, arg0: inst60000014, arg1: inst6000001F, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000021:    {kind: FieldDecl, arg0: name5, arg1: element0, type: type(inst60000020)}
-// CHECK:STDOUT:     inst60000022:    {kind: CustomLayoutType, arg0: struct_type_fields60000001, arg1: custom_layout60000001, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000023:    {kind: CustomLayoutType, arg0: struct_type_fields60000002, arg1: custom_layout60000001, type: type(TypeType)}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst6000000E:    {kind: ImportCppDecl}
+// CHECK:STDOUT:     inst6000000F:    {kind: Namespace, arg0: name_scope60000001, arg1: inst6000000E, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst60000010:    {kind: NameRef, arg0: name(Cpp), arg1: inst6000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst60000011:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000012:    {kind: ClassDecl, arg0: class60000000, arg1: inst_block<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000013:    {kind: ClassType, arg0: class60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000014:    {kind: NameRef, arg0: name2, arg1: inst60000012, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000015:    {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000019, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000016:    {kind: PatternType, arg0: inst60000013, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000017:    {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000016)}
+// CHECK:STDOUT:     inst60000018:    {kind: ValueParamPattern, arg0: inst60000017, arg1: call_param0, type: type(inst60000016)}
+// CHECK:STDOUT:     inst60000019:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000013)}
+// CHECK:STDOUT:     inst6000001A:    {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000014, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001B:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000008, type: type(inst6000001C)}
+// CHECK:STDOUT:     inst6000001C:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001D:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000001C)}
+// CHECK:STDOUT:     inst6000001E:    {kind: PointerType, arg0: inst60000013, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001F:    {kind: UnboundElementType, arg0: inst60000013, arg1: inst6000001E, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000020:    {kind: FieldDecl, arg0: name5, arg1: element0, type: type(inst6000001F)}
+// CHECK:STDOUT:     inst60000021:    {kind: CustomLayoutType, arg0: struct_type_fields60000001, arg1: custom_layout60000001, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000022:    {kind: CustomLayoutType, arg0: struct_type_fields60000002, arg1: custom_layout60000001, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000023:    {kind: CompleteTypeWitness, arg0: inst60000021, type: type(inst(WitnessType))}
 // CHECK:STDOUT:     inst60000024:    {kind: CompleteTypeWitness, arg0: inst60000022, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000025:    {kind: CompleteTypeWitness, arg0: inst60000023, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000026:    {kind: PointerType, arg0: inst60000023, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000027:    {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst60000028:    {kind: CppOverloadSetType, arg0: cpp_overload_set60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000029:    {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000028)}
-// CHECK:STDOUT:     inst6000002A:    {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000028)}
-// CHECK:STDOUT:     inst6000002B:    {kind: NameRef, arg0: name3, arg1: inst60000029, type: type(inst60000028)}
-// CHECK:STDOUT:     inst6000002C:    {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst6000002D)}
-// CHECK:STDOUT:     inst6000002D:    {kind: FunctionType, arg0: function60000001, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000002E:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000002D)}
-// CHECK:STDOUT:     inst6000002F:    {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(inst60000030)}
-// CHECK:STDOUT:     inst60000030:    {kind: FunctionType, arg0: function60000002, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000031:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000030)}
-// CHECK:STDOUT:     inst60000032:    {kind: Call, arg0: inst6000002F, arg1: inst_block_empty, type: type(inst60000012)}
-// CHECK:STDOUT:     inst60000033:    {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst60000034:    {kind: NameRef, arg0: name3, arg1: inst60000029, type: type(inst60000028)}
-// CHECK:STDOUT:     inst60000035:    {kind: NameRef, arg0: name1, arg1: inst60000016, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000036:    {kind: ValueBinding, arg0: entity_name60000001, arg1: inst60000039, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000037:    {kind: ValueBindingPattern, arg0: entity_name60000001, type: type(inst60000017)}
-// CHECK:STDOUT:     inst60000038:    {kind: ValueParamPattern, arg0: inst60000037, arg1: call_param0, type: type(inst60000017)}
-// CHECK:STDOUT:     inst60000039:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000014)}
-// CHECK:STDOUT:     inst6000003A:    {kind: FunctionDecl, arg0: function60000003, arg1: inst_block6000000F, type: type(inst6000003B)}
-// CHECK:STDOUT:     inst6000003B:    {kind: FunctionType, arg0: function60000003, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000003C:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000003B)}
-// CHECK:STDOUT:     inst6000003D:    {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000041, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst6000003E:    {kind: PatternType, arg0: inst6000001F, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000003F:    {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(inst6000003E)}
-// CHECK:STDOUT:     inst60000040:    {kind: ValueParamPattern, arg0: inst6000003F, arg1: call_param0, type: type(inst6000003E)}
-// CHECK:STDOUT:     inst60000041:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst60000042:    {kind: FunctionDecl, arg0: function60000004, arg1: inst_block60000014, type: type(inst60000043)}
-// CHECK:STDOUT:     inst60000043:    {kind: FunctionType, arg0: function60000004, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000044:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000043)}
-// CHECK:STDOUT:     inst60000045:    {kind: ValueAsRef, arg0: inst60000035, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000046:    {kind: AddrOf, arg0: inst60000045, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst60000047:    {kind: Call, arg0: inst60000042, arg1: inst_block60000016, type: type(inst60000012)}
-// CHECK:STDOUT:     inst60000048:    {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst60000049:    {kind: NameRef, arg0: name3, arg1: inst60000029, type: type(inst60000028)}
-// CHECK:STDOUT:     inst6000004A:    {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst6000004B:    {kind: VarStorage, arg0: inst6000004D, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst6000004C:    {kind: RefBindingPattern, arg0: entity_name60000003, type: type(inst6000003E)}
-// CHECK:STDOUT:     inst6000004D:    {kind: VarPattern, arg0: inst6000004C, type: type(inst6000003E)}
-// CHECK:STDOUT:     inst6000004E:    {kind: NameBindingDecl, arg0: inst_block60000017}
-// CHECK:STDOUT:     inst6000004F:    {kind: NameRef, arg0: name4, arg1: inst6000004B, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst60000050:    {kind: AcquireValue, arg0: inst6000004F, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst60000051:    {kind: Deref, arg0: inst60000050, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000052:    {kind: AcquireValue, arg0: inst60000051, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000053:    {kind: ValueAsRef, arg0: inst60000052, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000054:    {kind: AddrOf, arg0: inst60000053, type: type(inst6000001F)}
-// CHECK:STDOUT:     inst60000055:    {kind: Call, arg0: inst60000042, arg1: inst_block60000019, type: type(inst60000012)}
-// CHECK:STDOUT:     inst60000056:    {kind: Return}
+// CHECK:STDOUT:     inst60000025:    {kind: PointerType, arg0: inst60000022, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000026:    {kind: NameRef, arg0: name(Cpp), arg1: inst6000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst60000027:    {kind: CppOverloadSetType, arg0: cpp_overload_set60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000028:    {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000027)}
+// CHECK:STDOUT:     inst60000029:    {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000027)}
+// CHECK:STDOUT:     inst6000002A:    {kind: NameRef, arg0: name3, arg1: inst60000028, type: type(inst60000027)}
+// CHECK:STDOUT:     inst6000002B:    {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst6000002C)}
+// CHECK:STDOUT:     inst6000002C:    {kind: FunctionType, arg0: function60000001, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000002D:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000002C)}
+// CHECK:STDOUT:     inst6000002E:    {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(inst6000002F)}
+// CHECK:STDOUT:     inst6000002F:    {kind: FunctionType, arg0: function60000002, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000030:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000002F)}
+// CHECK:STDOUT:     inst60000031:    {kind: Call, arg0: inst6000002E, arg1: inst_block_empty, type: type(inst60000011)}
+// CHECK:STDOUT:     inst60000032:    {kind: NameRef, arg0: name(Cpp), arg1: inst6000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst60000033:    {kind: NameRef, arg0: name3, arg1: inst60000028, type: type(inst60000027)}
+// CHECK:STDOUT:     inst60000034:    {kind: NameRef, arg0: name1, arg1: inst60000015, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000035:    {kind: ValueBinding, arg0: entity_name60000001, arg1: inst60000038, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000036:    {kind: ValueBindingPattern, arg0: entity_name60000001, type: type(inst60000016)}
+// CHECK:STDOUT:     inst60000037:    {kind: ValueParamPattern, arg0: inst60000036, arg1: call_param0, type: type(inst60000016)}
+// CHECK:STDOUT:     inst60000038:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000039:    {kind: FunctionDecl, arg0: function60000003, arg1: inst_block6000000F, type: type(inst6000003A)}
+// CHECK:STDOUT:     inst6000003A:    {kind: FunctionType, arg0: function60000003, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000003B:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000003A)}
+// CHECK:STDOUT:     inst6000003C:    {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000040, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst6000003D:    {kind: PatternType, arg0: inst6000001E, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000003E:    {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(inst6000003D)}
+// CHECK:STDOUT:     inst6000003F:    {kind: ValueParamPattern, arg0: inst6000003E, arg1: call_param0, type: type(inst6000003D)}
+// CHECK:STDOUT:     inst60000040:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst60000041:    {kind: FunctionDecl, arg0: function60000004, arg1: inst_block60000014, type: type(inst60000042)}
+// CHECK:STDOUT:     inst60000042:    {kind: FunctionType, arg0: function60000004, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000043:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000042)}
+// CHECK:STDOUT:     inst60000044:    {kind: ValueAsRef, arg0: inst60000034, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000045:    {kind: AddrOf, arg0: inst60000044, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst60000046:    {kind: Call, arg0: inst60000041, arg1: inst_block60000016, type: type(inst60000011)}
+// CHECK:STDOUT:     inst60000047:    {kind: NameRef, arg0: name(Cpp), arg1: inst6000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst60000048:    {kind: NameRef, arg0: name3, arg1: inst60000028, type: type(inst60000027)}
+// CHECK:STDOUT:     inst60000049:    {kind: NameRef, arg0: name(Cpp), arg1: inst6000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst6000004A:    {kind: VarStorage, arg0: inst6000004C, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst6000004B:    {kind: RefBindingPattern, arg0: entity_name60000003, type: type(inst6000003D)}
+// CHECK:STDOUT:     inst6000004C:    {kind: VarPattern, arg0: inst6000004B, type: type(inst6000003D)}
+// CHECK:STDOUT:     inst6000004D:    {kind: NameBindingDecl, arg0: inst_block60000017}
+// CHECK:STDOUT:     inst6000004E:    {kind: NameRef, arg0: name4, arg1: inst6000004A, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst6000004F:    {kind: AcquireValue, arg0: inst6000004E, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst60000050:    {kind: Deref, arg0: inst6000004F, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000051:    {kind: AcquireValue, arg0: inst60000050, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000052:    {kind: ValueAsRef, arg0: inst60000051, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000053:    {kind: AddrOf, arg0: inst60000052, type: type(inst6000001E)}
+// CHECK:STDOUT:     inst60000054:    {kind: Call, arg0: inst60000041, arg1: inst_block60000019, type: type(inst60000011)}
+// CHECK:STDOUT:     inst60000055:    {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
 // CHECK:STDOUT:       'inst(TypeType)':  concrete_constant(inst(TypeType))
@@ -206,7 +205,6 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:       'inst(BoolType)':  concrete_constant(inst(BoolType))
 // CHECK:STDOUT:       'inst(BoundMethodType)': concrete_constant(inst(BoundMethodType))
 // CHECK:STDOUT:       'inst(CharLiteralType)': concrete_constant(inst(CharLiteralType))
-// CHECK:STDOUT:       'inst(CppVoidType)': concrete_constant(inst(CppVoidType))
 // CHECK:STDOUT:       'inst(ErrorInst)': concrete_constant(inst(ErrorInst))
 // CHECK:STDOUT:       'inst(FloatLiteralType)': concrete_constant(inst(FloatLiteralType))
 // CHECK:STDOUT:       'inst(InstType)':  concrete_constant(inst(InstType))
@@ -215,149 +213,149 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:       'inst(SpecificFunctionType)': concrete_constant(inst(SpecificFunctionType))
 // CHECK:STDOUT:       'inst(VtableType)': concrete_constant(inst(VtableType))
 // CHECK:STDOUT:       'inst(WitnessType)': concrete_constant(inst(WitnessType))
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
-// CHECK:STDOUT:       inst60000010:    concrete_constant(inst60000010)
-// CHECK:STDOUT:       inst60000011:    concrete_constant(inst60000010)
-// CHECK:STDOUT:       inst60000012:    concrete_constant(inst60000012)
-// CHECK:STDOUT:       inst60000013:    concrete_constant(inst60000014)
-// CHECK:STDOUT:       inst60000014:    concrete_constant(inst60000014)
-// CHECK:STDOUT:       inst60000015:    concrete_constant(inst60000014)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       inst60000010:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       inst60000011:    concrete_constant(inst60000011)
+// CHECK:STDOUT:       inst60000012:    concrete_constant(inst60000013)
+// CHECK:STDOUT:       inst60000013:    concrete_constant(inst60000013)
+// CHECK:STDOUT:       inst60000014:    concrete_constant(inst60000013)
+// CHECK:STDOUT:       inst60000016:    concrete_constant(inst60000016)
 // CHECK:STDOUT:       inst60000017:    concrete_constant(inst60000017)
 // CHECK:STDOUT:       inst60000018:    concrete_constant(inst60000018)
-// CHECK:STDOUT:       inst60000019:    concrete_constant(inst60000019)
-// CHECK:STDOUT:       inst6000001B:    concrete_constant(inst60000014)
-// CHECK:STDOUT:       inst6000001C:    concrete_constant(inst6000001E)
+// CHECK:STDOUT:       inst6000001A:    concrete_constant(inst60000013)
+// CHECK:STDOUT:       inst6000001B:    concrete_constant(inst6000001D)
+// CHECK:STDOUT:       inst6000001C:    concrete_constant(inst6000001C)
 // CHECK:STDOUT:       inst6000001D:    concrete_constant(inst6000001D)
 // CHECK:STDOUT:       inst6000001E:    concrete_constant(inst6000001E)
 // CHECK:STDOUT:       inst6000001F:    concrete_constant(inst6000001F)
 // CHECK:STDOUT:       inst60000020:    concrete_constant(inst60000020)
-// CHECK:STDOUT:       inst60000021:    concrete_constant(inst60000021)
-// CHECK:STDOUT:       inst60000022:    concrete_constant(inst60000023)
-// CHECK:STDOUT:       inst60000023:    concrete_constant(inst60000023)
-// CHECK:STDOUT:       inst60000024:    concrete_constant(inst60000025)
+// CHECK:STDOUT:       inst60000021:    concrete_constant(inst60000022)
+// CHECK:STDOUT:       inst60000022:    concrete_constant(inst60000022)
+// CHECK:STDOUT:       inst60000023:    concrete_constant(inst60000024)
+// CHECK:STDOUT:       inst60000024:    concrete_constant(inst60000024)
 // CHECK:STDOUT:       inst60000025:    concrete_constant(inst60000025)
-// CHECK:STDOUT:       inst60000026:    concrete_constant(inst60000026)
-// CHECK:STDOUT:       inst60000027:    concrete_constant(inst60000010)
-// CHECK:STDOUT:       inst60000028:    concrete_constant(inst60000028)
-// CHECK:STDOUT:       inst60000029:    concrete_constant(inst6000002A)
-// CHECK:STDOUT:       inst6000002A:    concrete_constant(inst6000002A)
-// CHECK:STDOUT:       inst6000002B:    concrete_constant(inst6000002A)
-// CHECK:STDOUT:       inst6000002C:    concrete_constant(inst6000002E)
+// CHECK:STDOUT:       inst60000026:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       inst60000027:    concrete_constant(inst60000027)
+// CHECK:STDOUT:       inst60000028:    concrete_constant(inst60000029)
+// CHECK:STDOUT:       inst60000029:    concrete_constant(inst60000029)
+// CHECK:STDOUT:       inst6000002A:    concrete_constant(inst60000029)
+// CHECK:STDOUT:       inst6000002B:    concrete_constant(inst6000002D)
+// CHECK:STDOUT:       inst6000002C:    concrete_constant(inst6000002C)
 // CHECK:STDOUT:       inst6000002D:    concrete_constant(inst6000002D)
-// CHECK:STDOUT:       inst6000002E:    concrete_constant(inst6000002E)
-// CHECK:STDOUT:       inst6000002F:    concrete_constant(inst60000031)
+// CHECK:STDOUT:       inst6000002E:    concrete_constant(inst60000030)
+// CHECK:STDOUT:       inst6000002F:    concrete_constant(inst6000002F)
 // CHECK:STDOUT:       inst60000030:    concrete_constant(inst60000030)
-// CHECK:STDOUT:       inst60000031:    concrete_constant(inst60000031)
-// CHECK:STDOUT:       inst60000033:    concrete_constant(inst60000010)
-// CHECK:STDOUT:       inst60000034:    concrete_constant(inst6000002A)
+// CHECK:STDOUT:       inst60000032:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       inst60000033:    concrete_constant(inst60000029)
+// CHECK:STDOUT:       inst60000036:    concrete_constant(inst60000036)
 // CHECK:STDOUT:       inst60000037:    concrete_constant(inst60000037)
-// CHECK:STDOUT:       inst60000038:    concrete_constant(inst60000038)
-// CHECK:STDOUT:       inst6000003A:    concrete_constant(inst6000003C)
+// CHECK:STDOUT:       inst60000039:    concrete_constant(inst6000003B)
+// CHECK:STDOUT:       inst6000003A:    concrete_constant(inst6000003A)
 // CHECK:STDOUT:       inst6000003B:    concrete_constant(inst6000003B)
-// CHECK:STDOUT:       inst6000003C:    concrete_constant(inst6000003C)
+// CHECK:STDOUT:       inst6000003D:    concrete_constant(inst6000003D)
 // CHECK:STDOUT:       inst6000003E:    concrete_constant(inst6000003E)
 // CHECK:STDOUT:       inst6000003F:    concrete_constant(inst6000003F)
-// CHECK:STDOUT:       inst60000040:    concrete_constant(inst60000040)
-// CHECK:STDOUT:       inst60000042:    concrete_constant(inst60000044)
+// CHECK:STDOUT:       inst60000041:    concrete_constant(inst60000043)
+// CHECK:STDOUT:       inst60000042:    concrete_constant(inst60000042)
 // CHECK:STDOUT:       inst60000043:    concrete_constant(inst60000043)
-// CHECK:STDOUT:       inst60000044:    concrete_constant(inst60000044)
-// CHECK:STDOUT:       inst60000048:    concrete_constant(inst60000010)
-// CHECK:STDOUT:       inst60000049:    concrete_constant(inst6000002A)
-// CHECK:STDOUT:       inst6000004A:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000047:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       inst60000048:    concrete_constant(inst60000029)
+// CHECK:STDOUT:       inst60000049:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       inst6000004A:    concrete_constant(inst6000004A)
 // CHECK:STDOUT:       inst6000004B:    concrete_constant(inst6000004B)
 // CHECK:STDOUT:       inst6000004C:    concrete_constant(inst6000004C)
-// CHECK:STDOUT:       inst6000004D:    concrete_constant(inst6000004D)
-// CHECK:STDOUT:       inst6000004F:    concrete_constant(inst6000004B)
+// CHECK:STDOUT:       inst6000004E:    concrete_constant(inst6000004A)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst6000001C
+// CHECK:STDOUT:       0:               inst6000001B
 // CHECK:STDOUT:     imports:
-// CHECK:STDOUT:       0:               inst60000010
-// CHECK:STDOUT:       1:               inst60000013
-// CHECK:STDOUT:       2:               inst60000029
-// CHECK:STDOUT:       3:               inst6000002C
-// CHECK:STDOUT:       4:               inst6000002F
-// CHECK:STDOUT:       5:               inst6000003A
-// CHECK:STDOUT:       6:               inst60000042
-// CHECK:STDOUT:       7:               inst6000004B
-// CHECK:STDOUT:       8:               inst6000004E
+// CHECK:STDOUT:       0:               inst6000000F
+// CHECK:STDOUT:       1:               inst60000012
+// CHECK:STDOUT:       2:               inst60000028
+// CHECK:STDOUT:       3:               inst6000002B
+// CHECK:STDOUT:       4:               inst6000002E
+// CHECK:STDOUT:       5:               inst60000039
+// CHECK:STDOUT:       6:               inst60000041
+// CHECK:STDOUT:       7:               inst6000004A
+// CHECK:STDOUT:       8:               inst6000004D
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
-// CHECK:STDOUT:       0:               inst60000011
-// CHECK:STDOUT:       1:               inst60000015
+// CHECK:STDOUT:       0:               inst60000010
+// CHECK:STDOUT:       1:               inst60000014
 // CHECK:STDOUT:     inst_block60000005:
-// CHECK:STDOUT:       0:               inst60000019
+// CHECK:STDOUT:       0:               inst60000018
 // CHECK:STDOUT:     inst_block60000006:
-// CHECK:STDOUT:       0:               inst6000001A
+// CHECK:STDOUT:       0:               inst60000019
 // CHECK:STDOUT:     inst_block60000007:
-// CHECK:STDOUT:       0:               inst60000018
-// CHECK:STDOUT:       1:               inst60000019
+// CHECK:STDOUT:       0:               inst60000017
+// CHECK:STDOUT:       1:               inst60000018
 // CHECK:STDOUT:     inst_block60000008:
-// CHECK:STDOUT:       0:               inst6000001A
-// CHECK:STDOUT:       1:               inst6000001B
-// CHECK:STDOUT:       2:               inst60000016
+// CHECK:STDOUT:       0:               inst60000019
+// CHECK:STDOUT:       1:               inst6000001A
+// CHECK:STDOUT:       2:               inst60000015
 // CHECK:STDOUT:     inst_block60000009:
-// CHECK:STDOUT:       0:               inst60000027
-// CHECK:STDOUT:       1:               inst6000002B
-// CHECK:STDOUT:       2:               inst60000032
-// CHECK:STDOUT:       3:               inst60000033
-// CHECK:STDOUT:       4:               inst60000034
-// CHECK:STDOUT:       5:               inst60000035
-// CHECK:STDOUT:       6:               inst60000045
-// CHECK:STDOUT:       7:               inst60000046
-// CHECK:STDOUT:       8:               inst60000047
-// CHECK:STDOUT:       9:               inst60000048
-// CHECK:STDOUT:       10:              inst60000049
-// CHECK:STDOUT:       11:              inst6000004A
-// CHECK:STDOUT:       12:              inst6000004F
-// CHECK:STDOUT:       13:              inst60000050
-// CHECK:STDOUT:       14:              inst60000051
-// CHECK:STDOUT:       15:              inst60000052
-// CHECK:STDOUT:       16:              inst60000053
-// CHECK:STDOUT:       17:              inst60000054
-// CHECK:STDOUT:       18:              inst60000055
-// CHECK:STDOUT:       19:              inst60000056
+// CHECK:STDOUT:       0:               inst60000026
+// CHECK:STDOUT:       1:               inst6000002A
+// CHECK:STDOUT:       2:               inst60000031
+// CHECK:STDOUT:       3:               inst60000032
+// CHECK:STDOUT:       4:               inst60000033
+// CHECK:STDOUT:       5:               inst60000034
+// CHECK:STDOUT:       6:               inst60000044
+// CHECK:STDOUT:       7:               inst60000045
+// CHECK:STDOUT:       8:               inst60000046
+// CHECK:STDOUT:       9:               inst60000047
+// CHECK:STDOUT:       10:              inst60000048
+// CHECK:STDOUT:       11:              inst60000049
+// CHECK:STDOUT:       12:              inst6000004E
+// CHECK:STDOUT:       13:              inst6000004F
+// CHECK:STDOUT:       14:              inst60000050
+// CHECK:STDOUT:       15:              inst60000051
+// CHECK:STDOUT:       16:              inst60000052
+// CHECK:STDOUT:       17:              inst60000053
+// CHECK:STDOUT:       18:              inst60000054
+// CHECK:STDOUT:       19:              inst60000055
 // CHECK:STDOUT:     inst_block6000000A:
-// CHECK:STDOUT:       0:               inst60000021
-// CHECK:STDOUT:       1:               inst60000022
-// CHECK:STDOUT:       2:               inst60000024
+// CHECK:STDOUT:       0:               inst60000020
+// CHECK:STDOUT:       1:               inst60000021
+// CHECK:STDOUT:       2:               inst60000023
 // CHECK:STDOUT:     inst_block6000000B: {}
 // CHECK:STDOUT:     inst_block6000000C:
-// CHECK:STDOUT:       0:               inst60000038
+// CHECK:STDOUT:       0:               inst60000037
 // CHECK:STDOUT:     inst_block6000000D:
-// CHECK:STDOUT:       0:               inst60000039
+// CHECK:STDOUT:       0:               inst60000038
 // CHECK:STDOUT:     inst_block6000000E:
-// CHECK:STDOUT:       0:               inst60000037
-// CHECK:STDOUT:       1:               inst60000038
+// CHECK:STDOUT:       0:               inst60000036
+// CHECK:STDOUT:       1:               inst60000037
 // CHECK:STDOUT:     inst_block6000000F:
-// CHECK:STDOUT:       0:               inst60000039
-// CHECK:STDOUT:       1:               inst60000036
+// CHECK:STDOUT:       0:               inst60000038
+// CHECK:STDOUT:       1:               inst60000035
 // CHECK:STDOUT:     inst_block60000010: {}
 // CHECK:STDOUT:     inst_block60000011:
-// CHECK:STDOUT:       0:               inst60000040
+// CHECK:STDOUT:       0:               inst6000003F
 // CHECK:STDOUT:     inst_block60000012:
-// CHECK:STDOUT:       0:               inst60000041
+// CHECK:STDOUT:       0:               inst60000040
 // CHECK:STDOUT:     inst_block60000013:
-// CHECK:STDOUT:       0:               inst6000003F
-// CHECK:STDOUT:       1:               inst60000040
+// CHECK:STDOUT:       0:               inst6000003E
+// CHECK:STDOUT:       1:               inst6000003F
 // CHECK:STDOUT:     inst_block60000014:
-// CHECK:STDOUT:       0:               inst60000041
-// CHECK:STDOUT:       1:               inst6000003D
+// CHECK:STDOUT:       0:               inst60000040
+// CHECK:STDOUT:       1:               inst6000003C
 // CHECK:STDOUT:     inst_block60000015:
-// CHECK:STDOUT:       0:               inst60000035
+// CHECK:STDOUT:       0:               inst60000034
 // CHECK:STDOUT:     inst_block60000016:
-// CHECK:STDOUT:       0:               inst60000046
+// CHECK:STDOUT:       0:               inst60000045
 // CHECK:STDOUT:     inst_block60000017:
-// CHECK:STDOUT:       0:               inst6000004C
-// CHECK:STDOUT:       1:               inst6000004D
+// CHECK:STDOUT:       0:               inst6000004B
+// CHECK:STDOUT:       1:               inst6000004C
 // CHECK:STDOUT:     inst_block60000018:
-// CHECK:STDOUT:       0:               inst60000052
+// CHECK:STDOUT:       0:               inst60000051
 // CHECK:STDOUT:     inst_block60000019:
-// CHECK:STDOUT:       0:               inst60000054
+// CHECK:STDOUT:       0:               inst60000053
 // CHECK:STDOUT:     inst_block6000001A:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst6000000F
-// CHECK:STDOUT:       2:               inst6000001C
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst6000000E
+// CHECK:STDOUT:       2:               inst6000001B
 // CHECK:STDOUT: ...

+ 61 - 61
toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon

@@ -36,7 +36,7 @@ fn B() {
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst6000000F}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst6000000E}}
 // CHECK:STDOUT:   entity_names:    {}
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:
@@ -53,37 +53,37 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     'type(inst6000000F)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000010)}
 // CHECK:STDOUT:     'type(inst60000010)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
-// CHECK:STDOUT:     'type(inst60000011)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000010)}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst6000000F:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000010)}
-// CHECK:STDOUT:     inst60000010:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000011:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000012:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000010)}
-// CHECK:STDOUT:     inst60000013:    {kind: Return}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst6000000E:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst6000000F)}
+// CHECK:STDOUT:     inst6000000F:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000010:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000011:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000000F)}
+// CHECK:STDOUT:     inst60000012:    {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
-// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst60000012)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst6000000E:    concrete_constant(inst60000011)
+// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst6000000F)
 // CHECK:STDOUT:       inst60000010:    concrete_constant(inst60000010)
 // CHECK:STDOUT:       inst60000011:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000012:    concrete_constant(inst60000012)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst6000000F
+// CHECK:STDOUT:       0:               inst6000000E
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004: {}
 // CHECK:STDOUT:     inst_block60000005:
-// CHECK:STDOUT:       0:               inst60000013
+// CHECK:STDOUT:       0:               inst60000012
 // CHECK:STDOUT:     inst_block60000006:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst6000000F
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst6000000E
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        b.carbon
@@ -91,14 +91,14 @@ fn B() {
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
-// CHECK:STDOUT:     import_ir50000002: {decl_id: inst5000000F, is_export: false}
+// CHECK:STDOUT:     import_ir50000002: {decl_id: inst5000000E, is_export: false}
 // CHECK:STDOUT:   import_ir_insts:
-// CHECK:STDOUT:     import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst6000000F}
-// CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst6000000F}
+// CHECK:STDOUT:     import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst6000000E}
+// CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst6000000E}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst50000010, name0: inst50000011}}
-// CHECK:STDOUT:     name_scope50000001: {inst: inst50000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000016}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst5000000F, name0: inst50000010}}
+// CHECK:STDOUT:     name_scope50000001: {inst: inst5000000F, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000015}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name50000000: {name: name1, parent_scope: name_scope50000001, index: -1, is_template: 0}
 // CHECK:STDOUT:   cpp_global_vars: {}
@@ -117,60 +117,60 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     'type(inst50000011)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000012)}
 // CHECK:STDOUT:     'type(inst50000012)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000013)}
-// CHECK:STDOUT:     'type(inst50000013)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000013)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000012)}
 // CHECK:STDOUT:     'type(inst(InstType))':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000013)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000012)}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst5000000F:    {kind: ImportDecl, arg0: name1}
-// CHECK:STDOUT:     inst50000010:    {kind: Namespace, arg0: name_scope50000001, arg1: inst5000000F, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst50000011:    {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000012)}
-// CHECK:STDOUT:     inst50000012:    {kind: FunctionType, arg0: function50000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst50000013:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst50000014:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000012)}
-// CHECK:STDOUT:     inst50000015:    {kind: NameRef, arg0: name1, arg1: inst50000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst50000016:    {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000018)}
-// CHECK:STDOUT:     inst50000017:    {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000018)}
-// CHECK:STDOUT:     inst50000018:    {kind: FunctionType, arg0: function50000001, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst50000019:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000018)}
-// CHECK:STDOUT:     inst5000001A:    {kind: NameRef, arg0: name1, arg1: inst50000016, type: type(inst50000018)}
-// CHECK:STDOUT:     inst5000001B:    {kind: Call, arg0: inst5000001A, arg1: inst_block_empty, type: type(inst50000013)}
-// CHECK:STDOUT:     inst5000001C:    {kind: Return}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst5000000E:    {kind: ImportDecl, arg0: name1}
+// CHECK:STDOUT:     inst5000000F:    {kind: Namespace, arg0: name_scope50000001, arg1: inst5000000E, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst50000010:    {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000011)}
+// CHECK:STDOUT:     inst50000011:    {kind: FunctionType, arg0: function50000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst50000012:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst50000013:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000011)}
+// CHECK:STDOUT:     inst50000014:    {kind: NameRef, arg0: name1, arg1: inst5000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst50000015:    {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000017)}
+// CHECK:STDOUT:     inst50000016:    {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000017)}
+// CHECK:STDOUT:     inst50000017:    {kind: FunctionType, arg0: function50000001, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst50000018:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000017)}
+// CHECK:STDOUT:     inst50000019:    {kind: NameRef, arg0: name1, arg1: inst50000015, type: type(inst50000017)}
+// CHECK:STDOUT:     inst5000001A:    {kind: Call, arg0: inst50000019, arg1: inst_block_empty, type: type(inst50000012)}
+// CHECK:STDOUT:     inst5000001B:    {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
-// CHECK:STDOUT:       inst50000010:    concrete_constant(inst50000010)
-// CHECK:STDOUT:       inst50000011:    concrete_constant(inst50000014)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst5000000F:    concrete_constant(inst5000000F)
+// CHECK:STDOUT:       inst50000010:    concrete_constant(inst50000013)
+// CHECK:STDOUT:       inst50000011:    concrete_constant(inst50000011)
 // CHECK:STDOUT:       inst50000012:    concrete_constant(inst50000012)
 // CHECK:STDOUT:       inst50000013:    concrete_constant(inst50000013)
-// CHECK:STDOUT:       inst50000014:    concrete_constant(inst50000014)
-// CHECK:STDOUT:       inst50000015:    concrete_constant(inst50000010)
-// CHECK:STDOUT:       inst50000016:    concrete_constant(inst50000019)
-// CHECK:STDOUT:       inst50000017:    concrete_constant(inst50000019)
+// CHECK:STDOUT:       inst50000014:    concrete_constant(inst5000000F)
+// CHECK:STDOUT:       inst50000015:    concrete_constant(inst50000018)
+// CHECK:STDOUT:       inst50000016:    concrete_constant(inst50000018)
+// CHECK:STDOUT:       inst50000017:    concrete_constant(inst50000017)
 // CHECK:STDOUT:       inst50000018:    concrete_constant(inst50000018)
-// CHECK:STDOUT:       inst50000019:    concrete_constant(inst50000019)
-// CHECK:STDOUT:       inst5000001A:    concrete_constant(inst50000019)
+// CHECK:STDOUT:       inst50000019:    concrete_constant(inst50000018)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst50000011
-// CHECK:STDOUT:     imports:
 // CHECK:STDOUT:       0:               inst50000010
-// CHECK:STDOUT:       1:               inst50000016
-// CHECK:STDOUT:       2:               inst50000017
+// CHECK:STDOUT:     imports:
+// CHECK:STDOUT:       0:               inst5000000F
+// CHECK:STDOUT:       1:               inst50000015
+// CHECK:STDOUT:       2:               inst50000016
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block50000004: {}
 // CHECK:STDOUT:     inst_block50000005:
-// CHECK:STDOUT:       0:               inst50000015
-// CHECK:STDOUT:       1:               inst5000001A
-// CHECK:STDOUT:       2:               inst5000001B
-// CHECK:STDOUT:       3:               inst5000001C
+// CHECK:STDOUT:       0:               inst50000014
+// CHECK:STDOUT:       1:               inst50000019
+// CHECK:STDOUT:       2:               inst5000001A
+// CHECK:STDOUT:       3:               inst5000001B
 // CHECK:STDOUT:     inst_block50000006:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst5000000F
-// CHECK:STDOUT:       2:               inst50000011
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst5000000E
+// CHECK:STDOUT:       2:               inst50000010
 // CHECK:STDOUT: ...

+ 61 - 61
toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon

@@ -36,7 +36,7 @@ fn B() {
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst6000000F}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst6000000E}}
 // CHECK:STDOUT:   entity_names:    {}
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:
@@ -53,37 +53,37 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     'type(inst6000000F)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000010)}
 // CHECK:STDOUT:     'type(inst60000010)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
-// CHECK:STDOUT:     'type(inst60000011)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000011)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000010)}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst6000000F:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000010)}
-// CHECK:STDOUT:     inst60000010:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000011:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000012:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000010)}
-// CHECK:STDOUT:     inst60000013:    {kind: Return}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst6000000E:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst6000000F)}
+// CHECK:STDOUT:     inst6000000F:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000010:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000011:    {kind: StructValue, arg0: inst_block_empty, type: type(inst6000000F)}
+// CHECK:STDOUT:     inst60000012:    {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
-// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst60000012)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst6000000E:    concrete_constant(inst60000011)
+// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst6000000F)
 // CHECK:STDOUT:       inst60000010:    concrete_constant(inst60000010)
 // CHECK:STDOUT:       inst60000011:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000012:    concrete_constant(inst60000012)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst6000000F
+// CHECK:STDOUT:       0:               inst6000000E
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004: {}
 // CHECK:STDOUT:     inst_block60000005:
-// CHECK:STDOUT:       0:               inst60000013
+// CHECK:STDOUT:       0:               inst60000012
 // CHECK:STDOUT:     inst_block60000006:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst6000000F
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst6000000E
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- a.carbon
 // CHECK:STDOUT:
@@ -110,14 +110,14 @@ fn B() {
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
-// CHECK:STDOUT:     import_ir50000002: {decl_id: inst5000000F, is_export: false}
+// CHECK:STDOUT:     import_ir50000002: {decl_id: inst5000000E, is_export: false}
 // CHECK:STDOUT:   import_ir_insts:
-// CHECK:STDOUT:     import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst6000000F}
-// CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst6000000F}
+// CHECK:STDOUT:     import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst6000000E}
+// CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst6000000E}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst50000010, name0: inst50000011}}
-// CHECK:STDOUT:     name_scope50000001: {inst: inst50000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000016}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst5000000F, name0: inst50000010}}
+// CHECK:STDOUT:     name_scope50000001: {inst: inst5000000F, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000015}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name50000000: {name: name1, parent_scope: name_scope50000001, index: -1, is_template: 0}
 // CHECK:STDOUT:   cpp_global_vars: {}
@@ -136,62 +136,62 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     'type(inst50000011)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000012)}
 // CHECK:STDOUT:     'type(inst50000012)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000013)}
-// CHECK:STDOUT:     'type(inst50000013)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000013)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000012)}
 // CHECK:STDOUT:     'type(inst(InstType))':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000013)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000012)}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst5000000F:    {kind: ImportDecl, arg0: name1}
-// CHECK:STDOUT:     inst50000010:    {kind: Namespace, arg0: name_scope50000001, arg1: inst5000000F, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst50000011:    {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000012)}
-// CHECK:STDOUT:     inst50000012:    {kind: FunctionType, arg0: function50000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst50000013:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst50000014:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000012)}
-// CHECK:STDOUT:     inst50000015:    {kind: NameRef, arg0: name1, arg1: inst50000010, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst50000016:    {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000018)}
-// CHECK:STDOUT:     inst50000017:    {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000018)}
-// CHECK:STDOUT:     inst50000018:    {kind: FunctionType, arg0: function50000001, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst50000019:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000018)}
-// CHECK:STDOUT:     inst5000001A:    {kind: NameRef, arg0: name1, arg1: inst50000016, type: type(inst50000018)}
-// CHECK:STDOUT:     inst5000001B:    {kind: Call, arg0: inst5000001A, arg1: inst_block_empty, type: type(inst50000013)}
-// CHECK:STDOUT:     inst5000001C:    {kind: Return}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst5000000E:    {kind: ImportDecl, arg0: name1}
+// CHECK:STDOUT:     inst5000000F:    {kind: Namespace, arg0: name_scope50000001, arg1: inst5000000E, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst50000010:    {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000011)}
+// CHECK:STDOUT:     inst50000011:    {kind: FunctionType, arg0: function50000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst50000012:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst50000013:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000011)}
+// CHECK:STDOUT:     inst50000014:    {kind: NameRef, arg0: name1, arg1: inst5000000F, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst50000015:    {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000017)}
+// CHECK:STDOUT:     inst50000016:    {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000017)}
+// CHECK:STDOUT:     inst50000017:    {kind: FunctionType, arg0: function50000001, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst50000018:    {kind: StructValue, arg0: inst_block_empty, type: type(inst50000017)}
+// CHECK:STDOUT:     inst50000019:    {kind: NameRef, arg0: name1, arg1: inst50000015, type: type(inst50000017)}
+// CHECK:STDOUT:     inst5000001A:    {kind: Call, arg0: inst50000019, arg1: inst_block_empty, type: type(inst50000012)}
+// CHECK:STDOUT:     inst5000001B:    {kind: Return}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
-// CHECK:STDOUT:       inst50000010:    concrete_constant(inst50000010)
-// CHECK:STDOUT:       inst50000011:    concrete_constant(inst50000014)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst5000000F:    concrete_constant(inst5000000F)
+// CHECK:STDOUT:       inst50000010:    concrete_constant(inst50000013)
+// CHECK:STDOUT:       inst50000011:    concrete_constant(inst50000011)
 // CHECK:STDOUT:       inst50000012:    concrete_constant(inst50000012)
 // CHECK:STDOUT:       inst50000013:    concrete_constant(inst50000013)
-// CHECK:STDOUT:       inst50000014:    concrete_constant(inst50000014)
-// CHECK:STDOUT:       inst50000015:    concrete_constant(inst50000010)
-// CHECK:STDOUT:       inst50000016:    concrete_constant(inst50000019)
-// CHECK:STDOUT:       inst50000017:    concrete_constant(inst50000019)
+// CHECK:STDOUT:       inst50000014:    concrete_constant(inst5000000F)
+// CHECK:STDOUT:       inst50000015:    concrete_constant(inst50000018)
+// CHECK:STDOUT:       inst50000016:    concrete_constant(inst50000018)
+// CHECK:STDOUT:       inst50000017:    concrete_constant(inst50000017)
 // CHECK:STDOUT:       inst50000018:    concrete_constant(inst50000018)
-// CHECK:STDOUT:       inst50000019:    concrete_constant(inst50000019)
-// CHECK:STDOUT:       inst5000001A:    concrete_constant(inst50000019)
+// CHECK:STDOUT:       inst50000019:    concrete_constant(inst50000018)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst50000011
-// CHECK:STDOUT:     imports:
 // CHECK:STDOUT:       0:               inst50000010
-// CHECK:STDOUT:       1:               inst50000016
-// CHECK:STDOUT:       2:               inst50000017
+// CHECK:STDOUT:     imports:
+// CHECK:STDOUT:       0:               inst5000000F
+// CHECK:STDOUT:       1:               inst50000015
+// CHECK:STDOUT:       2:               inst50000016
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block50000004: {}
 // CHECK:STDOUT:     inst_block50000005:
-// CHECK:STDOUT:       0:               inst50000015
-// CHECK:STDOUT:       1:               inst5000001A
-// CHECK:STDOUT:       2:               inst5000001B
-// CHECK:STDOUT:       3:               inst5000001C
+// CHECK:STDOUT:       0:               inst50000014
+// CHECK:STDOUT:       1:               inst50000019
+// CHECK:STDOUT:       2:               inst5000001A
+// CHECK:STDOUT:       3:               inst5000001B
 // CHECK:STDOUT:     inst_block50000006:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst5000000F
-// CHECK:STDOUT:       2:               inst50000011
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst5000000E
+// CHECK:STDOUT:       2:               inst50000010
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- b.carbon
 // CHECK:STDOUT:

+ 1549 - 1549
toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon

@@ -23,216 +23,216 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
-// CHECK:STDOUT:     import_ir60000002: {decl_id: inst6000000F, is_export: false}
-// CHECK:STDOUT:     import_ir60000003: {decl_id: inst6000000F, is_export: false}
-// CHECK:STDOUT:     import_ir60000004: {decl_id: inst6000000F, is_export: false}
-// CHECK:STDOUT:     import_ir60000005: {decl_id: inst6000000F, is_export: false}
+// CHECK:STDOUT:     import_ir60000002: {decl_id: inst6000000E, is_export: false}
+// CHECK:STDOUT:     import_ir60000003: {decl_id: inst6000000E, is_export: false}
+// CHECK:STDOUT:     import_ir60000004: {decl_id: inst6000000E, is_export: false}
+// CHECK:STDOUT:     import_ir60000005: {decl_id: inst6000000E, is_export: false}
 // CHECK:STDOUT:   import_ir_insts:
-// CHECK:STDOUT:     import_ir_inst0: {ir_id: import_ir60000004, inst_id: inst4800000F}
-// CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir60000004, inst_id: inst4800000F}
-// CHECK:STDOUT:     import_ir_inst2: {ir_id: import_ir60000004, inst_id: inst48000011}
-// CHECK:STDOUT:     import_ir_inst3: {ir_id: import_ir60000004, inst_id: inst4800002D}
-// CHECK:STDOUT:     import_ir_inst4: {ir_id: import_ir60000004, inst_id: inst48000028}
-// CHECK:STDOUT:     import_ir_inst5: {ir_id: import_ir60000004, inst_id: inst48000028}
-// CHECK:STDOUT:     import_ir_inst6: {ir_id: import_ir60000004, inst_id: inst48000028}
-// CHECK:STDOUT:     import_ir_inst7: {ir_id: import_ir60000004, inst_id: inst48000022}
-// CHECK:STDOUT:     import_ir_inst8: {ir_id: import_ir60000004, inst_id: inst48000023}
-// CHECK:STDOUT:     import_ir_inst9: {ir_id: import_ir60000004, inst_id: inst4800001C}
-// CHECK:STDOUT:     import_ir_instA: {ir_id: import_ir60000004, inst_id: inst4800001E}
-// CHECK:STDOUT:     import_ir_instB: {ir_id: import_ir60000004, inst_id: inst48000011}
-// CHECK:STDOUT:     import_ir_instC: {ir_id: import_ir60000004, inst_id: inst48000015}
-// CHECK:STDOUT:     import_ir_instD: {ir_id: import_ir60000004, inst_id: inst48000018}
-// CHECK:STDOUT:     import_ir_instE: {ir_id: import_ir60000004, inst_id: inst4800001D}
-// CHECK:STDOUT:     import_ir_instF: {ir_id: import_ir60000004, inst_id: inst48000061}
-// CHECK:STDOUT:     import_ir_inst10: {ir_id: import_ir60000004, inst_id: inst4800005F}
-// CHECK:STDOUT:     import_ir_inst11: {ir_id: import_ir60000004, inst_id: inst48000054}
-// CHECK:STDOUT:     import_ir_inst12: {ir_id: import_ir60000004, inst_id: inst48000050}
-// CHECK:STDOUT:     import_ir_inst13: {ir_id: import_ir60000004, inst_id: inst4800005A}
-// CHECK:STDOUT:     import_ir_inst14: {ir_id: import_ir60000004, inst_id: inst4800005D}
-// CHECK:STDOUT:     import_ir_inst15: {ir_id: import_ir60000004, inst_id: inst48000075}
-// CHECK:STDOUT:     import_ir_inst16: {ir_id: import_ir60000004, inst_id: inst48000060}
-// CHECK:STDOUT:     import_ir_inst17: {ir_id: import_ir60000004, inst_id: inst48000052}
-// CHECK:STDOUT:     import_ir_inst18: {ir_id: import_ir60000004, inst_id: inst48000058}
-// CHECK:STDOUT:     import_ir_inst19: {ir_id: import_ir60000004, inst_id: inst4800005C}
-// CHECK:STDOUT:     import_ir_inst1A: {ir_id: import_ir60000004, inst_id: inst48000063}
-// CHECK:STDOUT:     import_ir_inst1B: {ir_id: import_ir60000004, inst_id: inst48000075}
-// CHECK:STDOUT:     import_ir_inst1C: {ir_id: import_ir60000004, inst_id: inst48000070}
-// CHECK:STDOUT:     import_ir_inst1D: {ir_id: import_ir60000004, inst_id: inst48000071}
-// CHECK:STDOUT:     import_ir_inst1E: {ir_id: import_ir60000004, inst_id: inst4800006C}
-// CHECK:STDOUT:     import_ir_inst1F: {ir_id: import_ir60000004, inst_id: inst4800006E}
-// CHECK:STDOUT:     import_ir_inst20: {ir_id: import_ir60000004, inst_id: inst48000050}
-// CHECK:STDOUT:     import_ir_inst21: {ir_id: import_ir60000004, inst_id: inst48000078}
-// CHECK:STDOUT:     import_ir_inst22: {ir_id: import_ir60000004, inst_id: inst48000079}
-// CHECK:STDOUT:     import_ir_inst23: {ir_id: import_ir60000004, inst_id: inst48000067}
-// CHECK:STDOUT:     import_ir_inst24: {ir_id: import_ir60000004, inst_id: inst48000068}
-// CHECK:STDOUT:     import_ir_inst25: {ir_id: import_ir60000004, inst_id: inst48000069}
-// CHECK:STDOUT:     import_ir_inst26: {ir_id: import_ir60000004, inst_id: inst4800006D}
-// CHECK:STDOUT:     import_ir_inst27: {ir_id: import_ir60000004, inst_id: inst4800007D}
-// CHECK:STDOUT:     import_ir_inst28: {ir_id: import_ir60000004, inst_id: inst48000085}
-// CHECK:STDOUT:     import_ir_inst29: {ir_id: import_ir60000004, inst_id: inst4800008C}
-// CHECK:STDOUT:     import_ir_inst2A: {ir_id: import_ir60000004, inst_id: inst48000090}
-// CHECK:STDOUT:     import_ir_inst2B: {ir_id: import_ir60000004, inst_id: inst48000091}
-// CHECK:STDOUT:     import_ir_inst2C: {ir_id: import_ir60000004, inst_id: inst48000096}
-// CHECK:STDOUT:     import_ir_inst2D: {ir_id: import_ir60000004, inst_id: inst480000AB}
-// CHECK:STDOUT:     import_ir_inst2E: {ir_id: import_ir60000004, inst_id: inst480000A9}
-// CHECK:STDOUT:     import_ir_inst2F: {ir_id: import_ir60000004, inst_id: inst480000A7}
-// CHECK:STDOUT:     import_ir_inst30: {ir_id: import_ir60000004, inst_id: inst480000A8}
-// CHECK:STDOUT:     import_ir_inst31: {ir_id: import_ir60000004, inst_id: inst480000C3}
-// CHECK:STDOUT:     import_ir_inst32: {ir_id: import_ir60000004, inst_id: inst480000C1}
-// CHECK:STDOUT:     import_ir_inst33: {ir_id: import_ir60000004, inst_id: inst480000BF}
-// CHECK:STDOUT:     import_ir_inst34: {ir_id: import_ir60000004, inst_id: inst480000C0}
-// CHECK:STDOUT:     import_ir_inst35: {ir_id: import_ir60000004, inst_id: inst480000DB}
-// CHECK:STDOUT:     import_ir_inst36: {ir_id: import_ir60000004, inst_id: inst480000D9}
-// CHECK:STDOUT:     import_ir_inst37: {ir_id: import_ir60000004, inst_id: inst480000D7}
-// CHECK:STDOUT:     import_ir_inst38: {ir_id: import_ir60000004, inst_id: inst480000D8}
-// CHECK:STDOUT:     import_ir_inst39: {ir_id: import_ir60000004, inst_id: inst480000F3}
-// CHECK:STDOUT:     import_ir_inst3A: {ir_id: import_ir60000004, inst_id: inst480000F1}
-// CHECK:STDOUT:     import_ir_inst3B: {ir_id: import_ir60000004, inst_id: inst480000EF}
-// CHECK:STDOUT:     import_ir_inst3C: {ir_id: import_ir60000004, inst_id: inst480000F0}
-// CHECK:STDOUT:     import_ir_inst3D: {ir_id: import_ir60000004, inst_id: inst48000110}
-// CHECK:STDOUT:     import_ir_inst3E: {ir_id: import_ir60000004, inst_id: inst4800010E}
-// CHECK:STDOUT:     import_ir_inst3F: {ir_id: import_ir60000004, inst_id: inst48000108}
-// CHECK:STDOUT:     import_ir_inst40: {ir_id: import_ir60000004, inst_id: inst48000105}
-// CHECK:STDOUT:     import_ir_inst41: {ir_id: import_ir60000004, inst_id: inst4800010A}
-// CHECK:STDOUT:     import_ir_inst42: {ir_id: import_ir60000004, inst_id: inst4800010D}
-// CHECK:STDOUT:     import_ir_inst43: {ir_id: import_ir60000004, inst_id: inst48000121}
-// CHECK:STDOUT:     import_ir_inst44: {ir_id: import_ir60000004, inst_id: inst4800010F}
-// CHECK:STDOUT:     import_ir_inst45: {ir_id: import_ir60000004, inst_id: inst48000107}
-// CHECK:STDOUT:     import_ir_inst46: {ir_id: import_ir60000004, inst_id: inst4800010C}
-// CHECK:STDOUT:     import_ir_inst47: {ir_id: import_ir60000004, inst_id: inst48000112}
-// CHECK:STDOUT:     import_ir_inst48: {ir_id: import_ir60000004, inst_id: inst48000121}
-// CHECK:STDOUT:     import_ir_inst49: {ir_id: import_ir60000004, inst_id: inst4800011C}
-// CHECK:STDOUT:     import_ir_inst4A: {ir_id: import_ir60000004, inst_id: inst4800011D}
-// CHECK:STDOUT:     import_ir_inst4B: {ir_id: import_ir60000004, inst_id: inst48000118}
-// CHECK:STDOUT:     import_ir_inst4C: {ir_id: import_ir60000004, inst_id: inst4800011A}
-// CHECK:STDOUT:     import_ir_inst4D: {ir_id: import_ir60000004, inst_id: inst48000105}
-// CHECK:STDOUT:     import_ir_inst4E: {ir_id: import_ir60000004, inst_id: inst48000124}
-// CHECK:STDOUT:     import_ir_inst4F: {ir_id: import_ir60000004, inst_id: inst48000125}
-// CHECK:STDOUT:     import_ir_inst50: {ir_id: import_ir60000004, inst_id: inst48000128}
-// CHECK:STDOUT:     import_ir_inst51: {ir_id: import_ir60000004, inst_id: inst48000114}
-// CHECK:STDOUT:     import_ir_inst52: {ir_id: import_ir60000004, inst_id: inst48000115}
-// CHECK:STDOUT:     import_ir_inst53: {ir_id: import_ir60000004, inst_id: inst48000119}
-// CHECK:STDOUT:     import_ir_inst54: {ir_id: import_ir60000004, inst_id: inst4800012E}
-// CHECK:STDOUT:     import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst4800012C}
+// CHECK:STDOUT:     import_ir_inst0: {ir_id: import_ir60000004, inst_id: inst4800000E}
+// CHECK:STDOUT:     import_ir_inst1: {ir_id: import_ir60000004, inst_id: inst4800000E}
+// CHECK:STDOUT:     import_ir_inst2: {ir_id: import_ir60000004, inst_id: inst48000010}
+// CHECK:STDOUT:     import_ir_inst3: {ir_id: import_ir60000004, inst_id: inst4800002C}
+// CHECK:STDOUT:     import_ir_inst4: {ir_id: import_ir60000004, inst_id: inst48000027}
+// CHECK:STDOUT:     import_ir_inst5: {ir_id: import_ir60000004, inst_id: inst48000027}
+// CHECK:STDOUT:     import_ir_inst6: {ir_id: import_ir60000004, inst_id: inst48000027}
+// CHECK:STDOUT:     import_ir_inst7: {ir_id: import_ir60000004, inst_id: inst48000021}
+// CHECK:STDOUT:     import_ir_inst8: {ir_id: import_ir60000004, inst_id: inst48000022}
+// CHECK:STDOUT:     import_ir_inst9: {ir_id: import_ir60000004, inst_id: inst4800001B}
+// CHECK:STDOUT:     import_ir_instA: {ir_id: import_ir60000004, inst_id: inst4800001D}
+// CHECK:STDOUT:     import_ir_instB: {ir_id: import_ir60000004, inst_id: inst48000010}
+// CHECK:STDOUT:     import_ir_instC: {ir_id: import_ir60000004, inst_id: inst48000014}
+// CHECK:STDOUT:     import_ir_instD: {ir_id: import_ir60000004, inst_id: inst48000017}
+// CHECK:STDOUT:     import_ir_instE: {ir_id: import_ir60000004, inst_id: inst4800001C}
+// CHECK:STDOUT:     import_ir_instF: {ir_id: import_ir60000004, inst_id: inst48000060}
+// CHECK:STDOUT:     import_ir_inst10: {ir_id: import_ir60000004, inst_id: inst4800005E}
+// CHECK:STDOUT:     import_ir_inst11: {ir_id: import_ir60000004, inst_id: inst48000053}
+// CHECK:STDOUT:     import_ir_inst12: {ir_id: import_ir60000004, inst_id: inst4800004F}
+// CHECK:STDOUT:     import_ir_inst13: {ir_id: import_ir60000004, inst_id: inst48000059}
+// CHECK:STDOUT:     import_ir_inst14: {ir_id: import_ir60000004, inst_id: inst4800005C}
+// CHECK:STDOUT:     import_ir_inst15: {ir_id: import_ir60000004, inst_id: inst48000074}
+// CHECK:STDOUT:     import_ir_inst16: {ir_id: import_ir60000004, inst_id: inst4800005F}
+// CHECK:STDOUT:     import_ir_inst17: {ir_id: import_ir60000004, inst_id: inst48000051}
+// CHECK:STDOUT:     import_ir_inst18: {ir_id: import_ir60000004, inst_id: inst48000057}
+// CHECK:STDOUT:     import_ir_inst19: {ir_id: import_ir60000004, inst_id: inst4800005B}
+// CHECK:STDOUT:     import_ir_inst1A: {ir_id: import_ir60000004, inst_id: inst48000062}
+// CHECK:STDOUT:     import_ir_inst1B: {ir_id: import_ir60000004, inst_id: inst48000074}
+// CHECK:STDOUT:     import_ir_inst1C: {ir_id: import_ir60000004, inst_id: inst4800006F}
+// CHECK:STDOUT:     import_ir_inst1D: {ir_id: import_ir60000004, inst_id: inst48000070}
+// CHECK:STDOUT:     import_ir_inst1E: {ir_id: import_ir60000004, inst_id: inst4800006B}
+// CHECK:STDOUT:     import_ir_inst1F: {ir_id: import_ir60000004, inst_id: inst4800006D}
+// CHECK:STDOUT:     import_ir_inst20: {ir_id: import_ir60000004, inst_id: inst4800004F}
+// CHECK:STDOUT:     import_ir_inst21: {ir_id: import_ir60000004, inst_id: inst48000077}
+// CHECK:STDOUT:     import_ir_inst22: {ir_id: import_ir60000004, inst_id: inst48000078}
+// CHECK:STDOUT:     import_ir_inst23: {ir_id: import_ir60000004, inst_id: inst48000066}
+// CHECK:STDOUT:     import_ir_inst24: {ir_id: import_ir60000004, inst_id: inst48000067}
+// CHECK:STDOUT:     import_ir_inst25: {ir_id: import_ir60000004, inst_id: inst48000068}
+// CHECK:STDOUT:     import_ir_inst26: {ir_id: import_ir60000004, inst_id: inst4800006C}
+// CHECK:STDOUT:     import_ir_inst27: {ir_id: import_ir60000004, inst_id: inst4800007C}
+// CHECK:STDOUT:     import_ir_inst28: {ir_id: import_ir60000004, inst_id: inst48000084}
+// CHECK:STDOUT:     import_ir_inst29: {ir_id: import_ir60000004, inst_id: inst4800008B}
+// CHECK:STDOUT:     import_ir_inst2A: {ir_id: import_ir60000004, inst_id: inst4800008F}
+// CHECK:STDOUT:     import_ir_inst2B: {ir_id: import_ir60000004, inst_id: inst48000090}
+// CHECK:STDOUT:     import_ir_inst2C: {ir_id: import_ir60000004, inst_id: inst48000095}
+// CHECK:STDOUT:     import_ir_inst2D: {ir_id: import_ir60000004, inst_id: inst480000AA}
+// CHECK:STDOUT:     import_ir_inst2E: {ir_id: import_ir60000004, inst_id: inst480000A8}
+// CHECK:STDOUT:     import_ir_inst2F: {ir_id: import_ir60000004, inst_id: inst480000A6}
+// CHECK:STDOUT:     import_ir_inst30: {ir_id: import_ir60000004, inst_id: inst480000A7}
+// CHECK:STDOUT:     import_ir_inst31: {ir_id: import_ir60000004, inst_id: inst480000C2}
+// CHECK:STDOUT:     import_ir_inst32: {ir_id: import_ir60000004, inst_id: inst480000C0}
+// CHECK:STDOUT:     import_ir_inst33: {ir_id: import_ir60000004, inst_id: inst480000BE}
+// CHECK:STDOUT:     import_ir_inst34: {ir_id: import_ir60000004, inst_id: inst480000BF}
+// CHECK:STDOUT:     import_ir_inst35: {ir_id: import_ir60000004, inst_id: inst480000DA}
+// CHECK:STDOUT:     import_ir_inst36: {ir_id: import_ir60000004, inst_id: inst480000D8}
+// CHECK:STDOUT:     import_ir_inst37: {ir_id: import_ir60000004, inst_id: inst480000D6}
+// CHECK:STDOUT:     import_ir_inst38: {ir_id: import_ir60000004, inst_id: inst480000D7}
+// CHECK:STDOUT:     import_ir_inst39: {ir_id: import_ir60000004, inst_id: inst480000F2}
+// CHECK:STDOUT:     import_ir_inst3A: {ir_id: import_ir60000004, inst_id: inst480000F0}
+// CHECK:STDOUT:     import_ir_inst3B: {ir_id: import_ir60000004, inst_id: inst480000EE}
+// CHECK:STDOUT:     import_ir_inst3C: {ir_id: import_ir60000004, inst_id: inst480000EF}
+// CHECK:STDOUT:     import_ir_inst3D: {ir_id: import_ir60000004, inst_id: inst4800010F}
+// CHECK:STDOUT:     import_ir_inst3E: {ir_id: import_ir60000004, inst_id: inst4800010D}
+// CHECK:STDOUT:     import_ir_inst3F: {ir_id: import_ir60000004, inst_id: inst48000107}
+// CHECK:STDOUT:     import_ir_inst40: {ir_id: import_ir60000004, inst_id: inst48000104}
+// CHECK:STDOUT:     import_ir_inst41: {ir_id: import_ir60000004, inst_id: inst48000109}
+// CHECK:STDOUT:     import_ir_inst42: {ir_id: import_ir60000004, inst_id: inst4800010C}
+// CHECK:STDOUT:     import_ir_inst43: {ir_id: import_ir60000004, inst_id: inst48000120}
+// CHECK:STDOUT:     import_ir_inst44: {ir_id: import_ir60000004, inst_id: inst4800010E}
+// CHECK:STDOUT:     import_ir_inst45: {ir_id: import_ir60000004, inst_id: inst48000106}
+// CHECK:STDOUT:     import_ir_inst46: {ir_id: import_ir60000004, inst_id: inst4800010B}
+// CHECK:STDOUT:     import_ir_inst47: {ir_id: import_ir60000004, inst_id: inst48000111}
+// CHECK:STDOUT:     import_ir_inst48: {ir_id: import_ir60000004, inst_id: inst48000120}
+// CHECK:STDOUT:     import_ir_inst49: {ir_id: import_ir60000004, inst_id: inst4800011B}
+// CHECK:STDOUT:     import_ir_inst4A: {ir_id: import_ir60000004, inst_id: inst4800011C}
+// CHECK:STDOUT:     import_ir_inst4B: {ir_id: import_ir60000004, inst_id: inst48000117}
+// CHECK:STDOUT:     import_ir_inst4C: {ir_id: import_ir60000004, inst_id: inst48000119}
+// CHECK:STDOUT:     import_ir_inst4D: {ir_id: import_ir60000004, inst_id: inst48000104}
+// CHECK:STDOUT:     import_ir_inst4E: {ir_id: import_ir60000004, inst_id: inst48000123}
+// CHECK:STDOUT:     import_ir_inst4F: {ir_id: import_ir60000004, inst_id: inst48000124}
+// CHECK:STDOUT:     import_ir_inst50: {ir_id: import_ir60000004, inst_id: inst48000127}
+// CHECK:STDOUT:     import_ir_inst51: {ir_id: import_ir60000004, inst_id: inst48000113}
+// CHECK:STDOUT:     import_ir_inst52: {ir_id: import_ir60000004, inst_id: inst48000114}
+// CHECK:STDOUT:     import_ir_inst53: {ir_id: import_ir60000004, inst_id: inst48000118}
+// CHECK:STDOUT:     import_ir_inst54: {ir_id: import_ir60000004, inst_id: inst4800012D}
+// CHECK:STDOUT:     import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst4800012B}
 // CHECK:STDOUT:     import_ir_inst56: {ir_id: import_ir60000004, inst_id: inst(TypeType)}
-// CHECK:STDOUT:     import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst4800012B}
-// CHECK:STDOUT:     import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst48000144}
-// CHECK:STDOUT:     import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000142}
-// CHECK:STDOUT:     import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst48000140}
-// CHECK:STDOUT:     import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000141}
-// CHECK:STDOUT:     import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000176}
-// CHECK:STDOUT:     import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000174}
-// CHECK:STDOUT:     import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst4800015F}
-// CHECK:STDOUT:     import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst48000159}
-// CHECK:STDOUT:     import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst48000157}
-// CHECK:STDOUT:     import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst4800015C}
-// CHECK:STDOUT:     import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst4800016F}
-// CHECK:STDOUT:     import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst48000171}
-// CHECK:STDOUT:     import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst4800018E}
-// CHECK:STDOUT:     import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst48000175}
-// CHECK:STDOUT:     import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst48000158}
-// CHECK:STDOUT:     import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst4800015E}
-// CHECK:STDOUT:     import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst48000165}
-// CHECK:STDOUT:     import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst48000168}
-// CHECK:STDOUT:     import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst4800016C}
-// CHECK:STDOUT:     import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst48000170}
-// CHECK:STDOUT:     import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst48000178}
-// CHECK:STDOUT:     import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst4800018E}
-// CHECK:STDOUT:     import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst48000189}
-// CHECK:STDOUT:     import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst4800018A}
-// CHECK:STDOUT:     import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst48000185}
-// CHECK:STDOUT:     import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst48000187}
-// CHECK:STDOUT:     import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst48000157}
-// CHECK:STDOUT:     import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst4800015C}
-// CHECK:STDOUT:     import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst48000191}
-// CHECK:STDOUT:     import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst48000192}
-// CHECK:STDOUT:     import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst4800017E}
-// CHECK:STDOUT:     import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst4800017F}
-// CHECK:STDOUT:     import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst48000180}
-// CHECK:STDOUT:     import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst48000181}
-// CHECK:STDOUT:     import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst48000182}
-// CHECK:STDOUT:     import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst48000186}
-// CHECK:STDOUT:     import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst48000197}
-// CHECK:STDOUT:     import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst4800019F}
-// CHECK:STDOUT:     import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst480001A3}
-// CHECK:STDOUT:     import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst480001A5}
-// CHECK:STDOUT:     import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst480001A6}
-// CHECK:STDOUT:     import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst480001A9}
-// CHECK:STDOUT:     import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst480001B5}
-// CHECK:STDOUT:     import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst480001BA}
-// CHECK:STDOUT:     import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst480001BE}
-// CHECK:STDOUT:     import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst480001BF}
-// CHECK:STDOUT:     import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst480001C4}
-// CHECK:STDOUT:     import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst480001FF}
-// CHECK:STDOUT:     import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst480001FD}
-// CHECK:STDOUT:     import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst480001E3}
-// CHECK:STDOUT:     import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst480001DD}
-// CHECK:STDOUT:     import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst480001D8}
-// CHECK:STDOUT:     import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst480001D6}
-// CHECK:STDOUT:     import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst480001DB}
-// CHECK:STDOUT:     import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001E0}
-// CHECK:STDOUT:     import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst480001F7}
-// CHECK:STDOUT:     import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst480001F9}
-// CHECK:STDOUT:     import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst4800021B}
-// CHECK:STDOUT:     import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst480001FE}
-// CHECK:STDOUT:     import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst480001D7}
-// CHECK:STDOUT:     import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst480001DC}
-// CHECK:STDOUT:     import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst480001E2}
-// CHECK:STDOUT:     import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst480001EA}
-// CHECK:STDOUT:     import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst480001ED}
-// CHECK:STDOUT:     import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst480001F0}
-// CHECK:STDOUT:     import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst480001F4}
-// CHECK:STDOUT:     import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst480001F8}
-// CHECK:STDOUT:     import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst48000201}
-// CHECK:STDOUT:     import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst4800021B}
-// CHECK:STDOUT:     import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst48000216}
-// CHECK:STDOUT:     import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst48000217}
-// CHECK:STDOUT:     import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst48000212}
-// CHECK:STDOUT:     import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst48000214}
-// CHECK:STDOUT:     import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst480001D6}
-// CHECK:STDOUT:     import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst480001DB}
-// CHECK:STDOUT:     import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst480001E0}
-// CHECK:STDOUT:     import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst4800021E}
-// CHECK:STDOUT:     import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst4800021F}
-// CHECK:STDOUT:     import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst48000209}
-// CHECK:STDOUT:     import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst4800020A}
-// CHECK:STDOUT:     import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst4800020B}
-// CHECK:STDOUT:     import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst4800020C}
-// CHECK:STDOUT:     import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst4800020D}
-// CHECK:STDOUT:     import_ir_instAB: {ir_id: import_ir60000004, inst_id: inst4800020E}
-// CHECK:STDOUT:     import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst4800020F}
-// CHECK:STDOUT:     import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst48000213}
-// CHECK:STDOUT:     import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst48000224}
-// CHECK:STDOUT:     import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst4800022B}
-// CHECK:STDOUT:     import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst4800022F}
-// CHECK:STDOUT:     import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst48000231}
-// CHECK:STDOUT:     import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst48000232}
-// CHECK:STDOUT:     import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst48000235}
-// CHECK:STDOUT:     import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst4800023F}
-// CHECK:STDOUT:     import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst48000243}
-// CHECK:STDOUT:     import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst48000245}
-// CHECK:STDOUT:     import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst48000246}
-// CHECK:STDOUT:     import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst48000249}
-// CHECK:STDOUT:     import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst48000255}
-// CHECK:STDOUT:     import_ir_instBA: {ir_id: import_ir60000004, inst_id: inst4800025A}
-// CHECK:STDOUT:     import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst4800025E}
-// CHECK:STDOUT:     import_ir_instBC: {ir_id: import_ir60000004, inst_id: inst4800025F}
-// CHECK:STDOUT:     import_ir_instBD: {ir_id: import_ir60000004, inst_id: inst48000264}
+// CHECK:STDOUT:     import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst4800012A}
+// CHECK:STDOUT:     import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst48000143}
+// CHECK:STDOUT:     import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000141}
+// CHECK:STDOUT:     import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst4800013F}
+// CHECK:STDOUT:     import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000140}
+// CHECK:STDOUT:     import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000175}
+// CHECK:STDOUT:     import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000173}
+// CHECK:STDOUT:     import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst4800015E}
+// CHECK:STDOUT:     import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst48000158}
+// CHECK:STDOUT:     import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst48000156}
+// CHECK:STDOUT:     import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst4800015B}
+// CHECK:STDOUT:     import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst4800016E}
+// CHECK:STDOUT:     import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst48000170}
+// CHECK:STDOUT:     import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst4800018D}
+// CHECK:STDOUT:     import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst48000174}
+// CHECK:STDOUT:     import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst48000157}
+// CHECK:STDOUT:     import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst4800015D}
+// CHECK:STDOUT:     import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst48000164}
+// CHECK:STDOUT:     import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst48000167}
+// CHECK:STDOUT:     import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst4800016B}
+// CHECK:STDOUT:     import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst4800016F}
+// CHECK:STDOUT:     import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst48000177}
+// CHECK:STDOUT:     import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst4800018D}
+// CHECK:STDOUT:     import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst48000188}
+// CHECK:STDOUT:     import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst48000189}
+// CHECK:STDOUT:     import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst48000184}
+// CHECK:STDOUT:     import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst48000186}
+// CHECK:STDOUT:     import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst48000156}
+// CHECK:STDOUT:     import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst4800015B}
+// CHECK:STDOUT:     import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst48000190}
+// CHECK:STDOUT:     import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst48000191}
+// CHECK:STDOUT:     import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst4800017D}
+// CHECK:STDOUT:     import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst4800017E}
+// CHECK:STDOUT:     import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst4800017F}
+// CHECK:STDOUT:     import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst48000180}
+// CHECK:STDOUT:     import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst48000181}
+// CHECK:STDOUT:     import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst48000185}
+// CHECK:STDOUT:     import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst48000196}
+// CHECK:STDOUT:     import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst4800019E}
+// CHECK:STDOUT:     import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst480001A2}
+// CHECK:STDOUT:     import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst480001A4}
+// CHECK:STDOUT:     import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst480001A5}
+// CHECK:STDOUT:     import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst480001A8}
+// CHECK:STDOUT:     import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst480001B4}
+// CHECK:STDOUT:     import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst480001B9}
+// CHECK:STDOUT:     import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst480001BD}
+// CHECK:STDOUT:     import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst480001BE}
+// CHECK:STDOUT:     import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst480001C3}
+// CHECK:STDOUT:     import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst480001FE}
+// CHECK:STDOUT:     import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst480001FC}
+// CHECK:STDOUT:     import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst480001E2}
+// CHECK:STDOUT:     import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst480001DC}
+// CHECK:STDOUT:     import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst480001D7}
+// CHECK:STDOUT:     import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst480001D5}
+// CHECK:STDOUT:     import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst480001DA}
+// CHECK:STDOUT:     import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001DF}
+// CHECK:STDOUT:     import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst480001F6}
+// CHECK:STDOUT:     import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst480001F8}
+// CHECK:STDOUT:     import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst4800021A}
+// CHECK:STDOUT:     import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst480001FD}
+// CHECK:STDOUT:     import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst480001D6}
+// CHECK:STDOUT:     import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst480001DB}
+// CHECK:STDOUT:     import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst480001E1}
+// CHECK:STDOUT:     import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst480001E9}
+// CHECK:STDOUT:     import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst480001EC}
+// CHECK:STDOUT:     import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst480001EF}
+// CHECK:STDOUT:     import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst480001F3}
+// CHECK:STDOUT:     import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst480001F7}
+// CHECK:STDOUT:     import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst48000200}
+// CHECK:STDOUT:     import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst4800021A}
+// CHECK:STDOUT:     import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst48000215}
+// CHECK:STDOUT:     import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst48000216}
+// CHECK:STDOUT:     import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst48000211}
+// CHECK:STDOUT:     import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst48000213}
+// CHECK:STDOUT:     import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst480001D5}
+// CHECK:STDOUT:     import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst480001DA}
+// CHECK:STDOUT:     import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst480001DF}
+// CHECK:STDOUT:     import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst4800021D}
+// CHECK:STDOUT:     import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst4800021E}
+// CHECK:STDOUT:     import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst48000208}
+// CHECK:STDOUT:     import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst48000209}
+// CHECK:STDOUT:     import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst4800020A}
+// CHECK:STDOUT:     import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst4800020B}
+// CHECK:STDOUT:     import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst4800020C}
+// CHECK:STDOUT:     import_ir_instAB: {ir_id: import_ir60000004, inst_id: inst4800020D}
+// CHECK:STDOUT:     import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst4800020E}
+// CHECK:STDOUT:     import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst48000212}
+// CHECK:STDOUT:     import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst48000223}
+// CHECK:STDOUT:     import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst4800022A}
+// CHECK:STDOUT:     import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst4800022E}
+// CHECK:STDOUT:     import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst48000230}
+// CHECK:STDOUT:     import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst48000231}
+// CHECK:STDOUT:     import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst48000234}
+// CHECK:STDOUT:     import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst4800023E}
+// CHECK:STDOUT:     import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst48000242}
+// CHECK:STDOUT:     import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst48000244}
+// CHECK:STDOUT:     import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst48000245}
+// CHECK:STDOUT:     import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst48000248}
+// CHECK:STDOUT:     import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst48000254}
+// CHECK:STDOUT:     import_ir_instBA: {ir_id: import_ir60000004, inst_id: inst48000259}
+// CHECK:STDOUT:     import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst4800025D}
+// CHECK:STDOUT:     import_ir_instBC: {ir_id: import_ir60000004, inst_id: inst4800025E}
+// CHECK:STDOUT:     import_ir_instBD: {ir_id: import_ir60000004, inst_id: inst48000263}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name(Core): inst60000010, name0: inst60000038}}
-// CHECK:STDOUT:     name_scope60000001: {inst: inst60000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst60000048}}
-// CHECK:STDOUT:     name_scope60000002: {inst: inst60000049, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst6000004C, name4: inst6000004D}}
-// CHECK:STDOUT:     name_scope60000003: {inst: inst60000061, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope60000004: {inst: inst6000008E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope60000005: {inst: inst60000092, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope60000006: {inst: inst60000096, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope60000007: {inst: inst6000009A, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope60000008: {inst: inst6000009E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope60000009: {inst: inst600000B8, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope6000000A: {inst: inst600000BC, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope6000000B: {inst: inst600000C0, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
-// CHECK:STDOUT:     name_scope6000000C: {inst: inst600000FB, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name(Core): inst6000000F, name0: inst60000037}}
+// CHECK:STDOUT:     name_scope60000001: {inst: inst6000000F, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst60000047}}
+// CHECK:STDOUT:     name_scope60000002: {inst: inst60000048, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst6000004B, name4: inst6000004C}}
+// CHECK:STDOUT:     name_scope60000003: {inst: inst60000060, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope60000004: {inst: inst6000008D, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope60000005: {inst: inst60000091, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope60000006: {inst: inst60000095, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope60000007: {inst: inst60000099, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope60000008: {inst: inst6000009D, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope60000009: {inst: inst600000B7, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope6000000A: {inst: inst600000BB, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope6000000B: {inst: inst600000BF, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope6000000C: {inst: inst600000FA, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name60000000: {name: name(PeriodSelf), parent_scope: name_scope<none>, index: -1, is_template: 0}
 // CHECK:STDOUT:     entity_name60000001: {name: name1, parent_scope: name_scope<none>, index: 0, is_template: 0}
@@ -298,24 +298,24 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:     entity_name6000003D: {name: name6, parent_scope: name_scope<none>, index: 2, is_template: 0}
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:
-// CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000F, return_slot_pattern: inst60000033, body: [inst_block60000016]}
-// CHECK:STDOUT:     function60000001: {name: name4, parent_scope: name_scope60000002, return_slot_pattern: inst60000058}
-// CHECK:STDOUT:     function60000002: {name: name4, parent_scope: name_scope60000003, return_slot_pattern: inst60000076}
-// CHECK:STDOUT:     function60000003: {name: name4, parent_scope: name_scope60000008, return_slot_pattern: inst600000AD}
-// CHECK:STDOUT:     function60000004: {name: name4, parent_scope: name_scope6000000B, return_slot_pattern: inst600000DB}
-// CHECK:STDOUT:     function60000005: {name: name4, parent_scope: name_scope6000000C, return_slot_pattern: inst6000011A}
+// CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000F, return_slot_pattern: inst60000032, body: [inst_block60000016]}
+// CHECK:STDOUT:     function60000001: {name: name4, parent_scope: name_scope60000002, return_slot_pattern: inst60000057}
+// CHECK:STDOUT:     function60000002: {name: name4, parent_scope: name_scope60000003, return_slot_pattern: inst60000075}
+// CHECK:STDOUT:     function60000003: {name: name4, parent_scope: name_scope60000008, return_slot_pattern: inst600000AC}
+// CHECK:STDOUT:     function60000004: {name: name4, parent_scope: name_scope6000000B, return_slot_pattern: inst600000DA}
+// CHECK:STDOUT:     function60000005: {name: name4, parent_scope: name_scope6000000C, return_slot_pattern: inst60000119}
 // CHECK:STDOUT:   classes:         {}
 // CHECK:STDOUT:   generics:
-// CHECK:STDOUT:     generic60000000: {decl: inst60000038, bindings: inst_block60000012}
-// CHECK:STDOUT:     generic60000001: {decl: inst60000052, bindings: inst_block6000001A}
-// CHECK:STDOUT:     generic60000002: {decl: inst60000061, bindings: inst_block6000001F}
-// CHECK:STDOUT:     generic60000003: {decl: inst60000071, bindings: inst_block60000026}
-// CHECK:STDOUT:     generic60000004: {decl: inst6000009E, bindings: inst_block60000030}
-// CHECK:STDOUT:     generic60000005: {decl: inst600000A9, bindings: inst_block60000036}
-// CHECK:STDOUT:     generic60000006: {decl: inst600000C0, bindings: inst_block6000003D}
-// CHECK:STDOUT:     generic60000007: {decl: inst600000D6, bindings: inst_block60000047}
-// CHECK:STDOUT:     generic60000008: {decl: inst600000FB, bindings: inst_block60000055}
-// CHECK:STDOUT:     generic60000009: {decl: inst60000115, bindings: inst_block6000005F}
+// CHECK:STDOUT:     generic60000000: {decl: inst60000037, bindings: inst_block60000012}
+// CHECK:STDOUT:     generic60000001: {decl: inst60000051, bindings: inst_block6000001A}
+// CHECK:STDOUT:     generic60000002: {decl: inst60000060, bindings: inst_block6000001F}
+// CHECK:STDOUT:     generic60000003: {decl: inst60000070, bindings: inst_block60000026}
+// CHECK:STDOUT:     generic60000004: {decl: inst6000009D, bindings: inst_block60000030}
+// CHECK:STDOUT:     generic60000005: {decl: inst600000A8, bindings: inst_block60000036}
+// CHECK:STDOUT:     generic60000006: {decl: inst600000BF, bindings: inst_block6000003D}
+// CHECK:STDOUT:     generic60000007: {decl: inst600000D5, bindings: inst_block60000047}
+// CHECK:STDOUT:     generic60000008: {decl: inst600000FA, bindings: inst_block60000055}
+// CHECK:STDOUT:     generic60000009: {decl: inst60000114, bindings: inst_block6000005F}
 // CHECK:STDOUT:   specifics:
 // CHECK:STDOUT:     specific60000000: {generic: generic60000000, args: inst_block60000013}
 // CHECK:STDOUT:     specific60000001: {generic: generic60000001, args: inst_block6000001C}
@@ -351,14 +351,14 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst60000024)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000024)}
-// CHECK:STDOUT:     'type(inst6000002B)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000002B)}
-// CHECK:STDOUT:     'type(inst60000027)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst6000002B)}
-// CHECK:STDOUT:     'type(inst60000039)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000024)}
+// CHECK:STDOUT:     'type(inst60000023)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000023)}
+// CHECK:STDOUT:     'type(inst6000002A)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000002A)}
+// CHECK:STDOUT:     'type(inst60000026)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst6000002A)}
+// CHECK:STDOUT:     'type(inst60000038)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000023)}
 // CHECK:STDOUT:     'type(symbolic_constant3)':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(symbolic_constant3)}
 // CHECK:STDOUT:     'type(symbolic_constantD)':
@@ -372,1488 +372,1488 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:     'type(symbolic_constantA)':
 // CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(symbolic_constantD)}
 // CHECK:STDOUT:     'type(inst(InstType))':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000024)}
-// CHECK:STDOUT:     'type(inst6000004A)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000004A)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000023)}
+// CHECK:STDOUT:     'type(inst60000049)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst60000049)}
 // CHECK:STDOUT:     'type(inst(SpecificFunctionType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(SpecificFunctionType))}
 // CHECK:STDOUT:     'type(symbolic_constant60000109)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000024)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000023)}
 // CHECK:STDOUT:     'type(symbolic_constant6000010C)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000024)}
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000023)}
 // CHECK:STDOUT:     'type(inst(BoundMethodType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(BoundMethodType))}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst6000000F:    {kind: ImportDecl, arg0: name(Core)}
-// CHECK:STDOUT:     inst60000010:    {kind: Namespace, arg0: name_scope60000001, arg1: inst6000000F, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst60000011:    {kind: FacetType, arg0: facet_type60000000, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000012:    {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst<none>, type: type(inst60000011)}
-// CHECK:STDOUT:     inst60000013:    {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst<none>, type: type(inst60000011)}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst6000000E:    {kind: ImportDecl, arg0: name(Core)}
+// CHECK:STDOUT:     inst6000000F:    {kind: Namespace, arg0: name_scope60000001, arg1: inst6000000E, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst60000010:    {kind: FacetType, arg0: facet_type60000000, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000011:    {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst<none>, type: type(inst60000010)}
+// CHECK:STDOUT:     inst60000012:    {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst<none>, type: type(inst60000010)}
+// CHECK:STDOUT:     inst60000013:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
 // CHECK:STDOUT:     inst60000014:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
 // CHECK:STDOUT:     inst60000015:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000016:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000017:    {kind: PatternType, arg0: inst(TypeType), type: type(TypeType)}
-// CHECK:STDOUT:     inst60000018:    {kind: SymbolicBindingPattern, arg0: entity_name60000001, type: type(inst60000017)}
-// CHECK:STDOUT:     inst60000019:    {kind: NameRef, arg0: name1, arg1: inst60000014, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001A:    {kind: PointerType, arg0: inst60000019, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000016:    {kind: PatternType, arg0: inst(TypeType), type: type(TypeType)}
+// CHECK:STDOUT:     inst60000017:    {kind: SymbolicBindingPattern, arg0: entity_name60000001, type: type(inst60000016)}
+// CHECK:STDOUT:     inst60000018:    {kind: NameRef, arg0: name1, arg1: inst60000013, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000019:    {kind: PointerType, arg0: inst60000018, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001A:    {kind: PointerType, arg0: inst60000014, type: type(TypeType)}
 // CHECK:STDOUT:     inst6000001B:    {kind: PointerType, arg0: inst60000015, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001C:    {kind: PointerType, arg0: inst60000016, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001D:    {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000034, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst6000001E:    {kind: PatternType, arg0: inst6000001B, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001F:    {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(symbolic_constant6)}
-// CHECK:STDOUT:     inst60000020:    {kind: PatternType, arg0: inst6000001C, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000021:    {kind: ValueParamPattern, arg0: inst6000001F, arg1: call_param0, type: type(symbolic_constant6)}
-// CHECK:STDOUT:     inst60000022:    {kind: NameRef, arg0: name1, arg1: inst60000014, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000023:    {kind: PointerType, arg0: inst60000022, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000024:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000025:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)}
-// CHECK:STDOUT:     inst60000026:    {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000024)}
-// CHECK:STDOUT:     inst60000027:    {kind: TupleType, arg0: inst_block60000009, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000028:    {kind: TupleLiteral, arg0: inst_block60000008, type: type(inst60000027)}
-// CHECK:STDOUT:     inst60000029:    {kind: TupleValue, arg0: inst_block6000000A, type: type(inst60000027)}
-// CHECK:STDOUT:     inst6000002A:    {kind: TupleValue, arg0: inst_block6000000B, type: type(inst60000027)}
-// CHECK:STDOUT:     inst6000002B:    {kind: PointerType, arg0: inst60000027, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000002C:    {kind: Converted, arg0: inst60000026, arg1: inst60000024, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000002D:    {kind: TupleType, arg0: inst_block6000000D, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000002E:    {kind: Converted, arg0: inst60000028, arg1: inst6000002D, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000002F:    {kind: TupleType, arg0: inst_block6000000E, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000030:    {kind: PatternType, arg0: inst6000002D, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000031:    {kind: ReturnSlotPattern, arg0: inst6000002E, type: type(symbolic_constantC)}
-// CHECK:STDOUT:     inst60000032:    {kind: PatternType, arg0: inst6000002F, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000033:    {kind: OutParamPattern, arg0: inst60000031, arg1: call_param1, type: type(symbolic_constantC)}
-// CHECK:STDOUT:     inst60000034:    {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst60000035:    {kind: SpliceBlock, arg0: inst_block60000006, arg1: inst6000001A, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000036:    {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constantA)}
-// CHECK:STDOUT:     inst60000037:    {kind: ReturnSlot, arg0: inst6000002D, arg1: inst60000036, type: type(symbolic_constantA)}
-// CHECK:STDOUT:     inst60000038:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000011, type: type(inst60000039)}
-// CHECK:STDOUT:     inst60000039:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000003A:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000039)}
-// CHECK:STDOUT:     inst6000003B:    {kind: PointerType, arg0: inst6000002D, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000003C:    {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000003D:    {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000003E:    {kind: RequireCompleteType, arg0: inst6000002F, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000003F:    {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000001C:    {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000033, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     inst6000001D:    {kind: PatternType, arg0: inst6000001A, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001E:    {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(symbolic_constant6)}
+// CHECK:STDOUT:     inst6000001F:    {kind: PatternType, arg0: inst6000001B, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000020:    {kind: ValueParamPattern, arg0: inst6000001E, arg1: call_param0, type: type(symbolic_constant6)}
+// CHECK:STDOUT:     inst60000021:    {kind: NameRef, arg0: name1, arg1: inst60000013, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000022:    {kind: PointerType, arg0: inst60000021, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000023:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000024:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000023)}
+// CHECK:STDOUT:     inst60000025:    {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000023)}
+// CHECK:STDOUT:     inst60000026:    {kind: TupleType, arg0: inst_block60000009, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000027:    {kind: TupleLiteral, arg0: inst_block60000008, type: type(inst60000026)}
+// CHECK:STDOUT:     inst60000028:    {kind: TupleValue, arg0: inst_block6000000A, type: type(inst60000026)}
+// CHECK:STDOUT:     inst60000029:    {kind: TupleValue, arg0: inst_block6000000B, type: type(inst60000026)}
+// CHECK:STDOUT:     inst6000002A:    {kind: PointerType, arg0: inst60000026, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000002B:    {kind: Converted, arg0: inst60000025, arg1: inst60000023, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000002C:    {kind: TupleType, arg0: inst_block6000000D, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000002D:    {kind: Converted, arg0: inst60000027, arg1: inst6000002C, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000002E:    {kind: TupleType, arg0: inst_block6000000E, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000002F:    {kind: PatternType, arg0: inst6000002C, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000030:    {kind: ReturnSlotPattern, arg0: inst6000002D, type: type(symbolic_constantC)}
+// CHECK:STDOUT:     inst60000031:    {kind: PatternType, arg0: inst6000002E, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000032:    {kind: OutParamPattern, arg0: inst60000030, arg1: call_param1, type: type(symbolic_constantC)}
+// CHECK:STDOUT:     inst60000033:    {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     inst60000034:    {kind: SpliceBlock, arg0: inst_block60000006, arg1: inst60000019, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000035:    {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constantA)}
+// CHECK:STDOUT:     inst60000036:    {kind: ReturnSlot, arg0: inst6000002C, arg1: inst60000035, type: type(symbolic_constantA)}
+// CHECK:STDOUT:     inst60000037:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000011, type: type(inst60000038)}
+// CHECK:STDOUT:     inst60000038:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000039:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000038)}
+// CHECK:STDOUT:     inst6000003A:    {kind: PointerType, arg0: inst6000002C, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000003B:    {kind: RequireCompleteType, arg0: inst6000002C, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000003C:    {kind: RequireCompleteType, arg0: inst6000002C, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000003D:    {kind: RequireCompleteType, arg0: inst6000002E, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000003E:    {kind: RequireCompleteType, arg0: inst6000001A, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000003F:    {kind: RequireCompleteType, arg0: inst6000001A, type: type(inst(WitnessType))}
 // CHECK:STDOUT:     inst60000040:    {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000041:    {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000042:    {kind: NameRef, arg0: name2, arg1: inst6000001D, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst60000043:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)}
-// CHECK:STDOUT:     inst60000044:    {kind: TupleLiteral, arg0: inst_block60000017, type: type(symbolic_constantA)}
-// CHECK:STDOUT:     inst60000045:    {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000046:    {kind: TupleAccess, arg0: inst60000037, arg1: element0, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst60000047:    {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000048:    {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name60000003, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000049:    {kind: InterfaceDecl, arg0: interface60000000, arg1: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000004A:    {kind: FacetType, arg0: facet_type60000001, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000004B:    {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000004C:    {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst6000004D:    {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name<none>, type: type(inst6000004F)}
-// CHECK:STDOUT:     inst6000004E:    {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name60000005}
-// CHECK:STDOUT:     inst6000004F:    {kind: AssociatedEntityType, arg0: interface60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000050:    {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name<none>, type: type(inst60000053)}
-// CHECK:STDOUT:     inst60000051:    {kind: AssociatedEntity, arg0: element0, arg1: inst60000050, type: type(inst6000004F)}
-// CHECK:STDOUT:     inst60000052:    {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst60000053)}
-// CHECK:STDOUT:     inst60000053:    {kind: FunctionType, arg0: function60000001, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000054:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000053)}
-// CHECK:STDOUT:     inst60000055:    {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000004B, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000056:    {kind: PatternType, arg0: inst60000055, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000057:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant60000015)}
-// CHECK:STDOUT:     inst60000058:    {kind: OutParamPattern, arg0: inst60000057, arg1: call_param1, type: type(symbolic_constant60000015)}
-// CHECK:STDOUT:     inst60000059:    {kind: ValueBindingPattern, arg0: entity_name60000008, type: type(symbolic_constant60000015)}
-// CHECK:STDOUT:     inst6000005A:    {kind: ValueParamPattern, arg0: inst60000059, arg1: call_param0, type: type(symbolic_constant60000015)}
-// CHECK:STDOUT:     inst6000005B:    {kind: ImportRefLoaded, arg0: import_ir_instB, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000005C:    {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000005D:    {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000005C, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000005E:    {kind: PatternType, arg0: inst6000005D, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000005F:    {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000060:    {kind: ImportRefUnloaded, arg0: import_ir_instF, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst60000061:    {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst60000062:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000063:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000062, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000064:    {kind: ConstType, arg0: inst60000063, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000065:    {kind: PatternType, arg0: inst6000004A, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000066:    {kind: SymbolicBindingPattern, arg0: entity_name6000000E, type: type(inst60000065)}
-// CHECK:STDOUT:     inst60000067:    {kind: ImportRefLoaded, arg0: import_ir_inst12, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000068:    {kind: ImportRefLoaded, arg0: import_ir_inst13, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000069:    {kind: ImportRefLoaded, arg0: import_ir_inst14, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000006A:    {kind: ImportRefUnloaded, arg0: import_ir_inst15, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst6000006B:    {kind: ImplWitnessTable, arg0: inst_block60000020, arg1: impl60000000}
-// CHECK:STDOUT:     inst6000006C:    {kind: ImplWitness, arg0: inst6000006B, arg1: specific60000002, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000006D:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000006E:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006D, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000006F:    {kind: ConstType, arg0: inst6000006E, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000070:    {kind: ImplWitness, arg0: inst6000006B, arg1: specific60000003, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000071:    {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000029)}
-// CHECK:STDOUT:     inst60000072:    {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000073:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000029)}
-// CHECK:STDOUT:     inst60000074:    {kind: PatternType, arg0: inst60000064, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000075:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant6000002E)}
-// CHECK:STDOUT:     inst60000076:    {kind: OutParamPattern, arg0: inst60000075, arg1: call_param1, type: type(symbolic_constant6000002E)}
-// CHECK:STDOUT:     inst60000077:    {kind: ValueBindingPattern, arg0: entity_name60000011, type: type(symbolic_constant6000002E)}
-// CHECK:STDOUT:     inst60000078:    {kind: ValueParamPattern, arg0: inst60000077, arg1: call_param0, type: type(symbolic_constant6000002E)}
-// CHECK:STDOUT:     inst60000079:    {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000007A:    {kind: FunctionType, arg0: function60000002, arg1: specific60000003, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000007B:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000030)}
-// CHECK:STDOUT:     inst6000007C:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000007D:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000007C, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000007E:    {kind: ConstType, arg0: inst6000007D, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000007F:    {kind: PatternType, arg0: inst6000007E, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000080:    {kind: RequireCompleteType, arg0: inst60000064, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000081:    {kind: RequireCompleteType, arg0: inst60000063, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000082:    {kind: LookupImplWitness, arg0: inst60000062, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000083:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000062, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000084:    {kind: ImplWitnessAccess, arg0: inst60000082, arg1: element0, type: type(symbolic_constant6000003F)}
-// CHECK:STDOUT:     inst60000085:    {kind: SpecificImplFunction, arg0: inst60000084, arg1: specific60000005, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst60000086:    {kind: RequireCompleteType, arg0: inst6000007E, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000087:    {kind: RequireCompleteType, arg0: inst6000007D, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000088:    {kind: LookupImplWitness, arg0: inst6000007C, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000089:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst6000007C, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000008A:    {kind: ImplWitnessAccess, arg0: inst60000088, arg1: element0, type: type(symbolic_constant60000048)}
-// CHECK:STDOUT:     inst6000008B:    {kind: SpecificImplFunction, arg0: inst6000008A, arg1: specific60000006, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst6000008C:    {kind: PatternType, arg0: inst60000063, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000008D:    {kind: ImportRefUnloaded, arg0: import_ir_inst2D, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst6000008E:    {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst6000008F:    {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000090:    {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000091:    {kind: ImportRefUnloaded, arg0: import_ir_inst31, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst60000092:    {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst60000093:    {kind: ImportRefLoaded, arg0: import_ir_inst33, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000094:    {kind: ImportRefLoaded, arg0: import_ir_inst34, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000095:    {kind: ImportRefUnloaded, arg0: import_ir_inst35, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst60000096:    {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst60000097:    {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000098:    {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000099:    {kind: ImportRefUnloaded, arg0: import_ir_inst39, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst6000009A:    {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst6000009B:    {kind: ImportRefLoaded, arg0: import_ir_inst3B, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000009C:    {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000009D:    {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name<none>, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000009E:    {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst6000009F:    {kind: SymbolicBindingPattern, arg0: entity_name60000016, type: type(inst60000017)}
-// CHECK:STDOUT:     inst600000A0:    {kind: ImportRefLoaded, arg0: import_ir_inst40, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000A1:    {kind: ImportRefLoaded, arg0: import_ir_inst41, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000A2:    {kind: ImportRefLoaded, arg0: import_ir_inst42, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000A3:    {kind: ImportRefUnloaded, arg0: import_ir_inst43, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst600000A4:    {kind: ImplWitnessTable, arg0: inst_block60000031, arg1: impl60000005}
-// CHECK:STDOUT:     inst600000A5:    {kind: ImplWitness, arg0: inst600000A4, arg1: specific60000007, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000A6:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000A7:    {kind: PointerType, arg0: inst600000A6, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000A8:    {kind: ImplWitness, arg0: inst600000A4, arg1: specific60000008, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000A9:    {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000055)}
-// CHECK:STDOUT:     inst600000AA:    {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000AB:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000055)}
-// CHECK:STDOUT:     inst600000AC:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant60000059)}
-// CHECK:STDOUT:     inst600000AD:    {kind: OutParamPattern, arg0: inst600000AC, arg1: call_param1, type: type(symbolic_constant60000059)}
-// CHECK:STDOUT:     inst600000AE:    {kind: ValueBindingPattern, arg0: entity_name60000018, type: type(symbolic_constant60000059)}
-// CHECK:STDOUT:     inst600000AF:    {kind: ValueParamPattern, arg0: inst600000AE, arg1: call_param0, type: type(symbolic_constant60000059)}
-// CHECK:STDOUT:     inst600000B0:    {kind: ImportRefLoaded, arg0: import_ir_inst4D, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000B1:    {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000B2:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000005C)}
-// CHECK:STDOUT:     inst600000B3:    {kind: RequireCompleteType, arg0: inst600000A7, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000B4:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000B5:    {kind: PointerType, arg0: inst600000B4, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000B6:    {kind: PatternType, arg0: inst600000B5, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000B7:    {kind: ImportRefUnloaded, arg0: import_ir_inst54, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst600000B8:    {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst600000B9:    {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000BA:    {kind: ImportRefLoaded, arg0: import_ir_inst57, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000BB:    {kind: ImportRefUnloaded, arg0: import_ir_inst58, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst600000BC:    {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst600000BD:    {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000BE:    {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000BF:    {kind: ImportRefUnloaded, arg0: import_ir_inst5C, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst600000C0:    {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst600000C1:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000C2:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000C1, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000C3:    {kind: TupleType, arg0: inst_block6000003B, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000C4:    {kind: SymbolicBindingPattern, arg0: entity_name6000001E, type: type(inst60000065)}
-// CHECK:STDOUT:     inst600000C5:    {kind: SymbolicBindingPattern, arg0: entity_name6000001F, type: type(inst60000065)}
-// CHECK:STDOUT:     inst600000C6:    {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000C7:    {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000C8:    {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000C9:    {kind: ImportRefLoaded, arg0: import_ir_inst63, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000CA:    {kind: TupleType, arg0: inst_block6000003E, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000CB:    {kind: TupleValue, arg0: inst_block6000003F, type: type(inst600000CA)}
-// CHECK:STDOUT:     inst600000CC:    {kind: ImportRefUnloaded, arg0: import_ir_inst64, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst600000CD:    {kind: ImplWitnessTable, arg0: inst_block60000040, arg1: impl60000008}
-// CHECK:STDOUT:     inst600000CE:    {kind: ImplWitness, arg0: inst600000CD, arg1: specific6000000A, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000CF:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000D0:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000D1:    {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000CA)}
-// CHECK:STDOUT:     inst600000D2:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000CF, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000D3:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000D0, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000D4:    {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000D5:    {kind: ImplWitness, arg0: inst600000CD, arg1: specific6000000B, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000D6:    {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant6000007A)}
-// CHECK:STDOUT:     inst600000D7:    {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000D8:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000007A)}
-// CHECK:STDOUT:     inst600000D9:    {kind: PatternType, arg0: inst600000C3, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000DA:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant6000007F)}
-// CHECK:STDOUT:     inst600000DB:    {kind: OutParamPattern, arg0: inst600000DA, arg1: call_param1, type: type(symbolic_constant6000007F)}
-// CHECK:STDOUT:     inst600000DC:    {kind: ValueBindingPattern, arg0: entity_name60000024, type: type(symbolic_constant6000007F)}
-// CHECK:STDOUT:     inst600000DD:    {kind: ValueParamPattern, arg0: inst600000DC, arg1: call_param0, type: type(symbolic_constant6000007F)}
-// CHECK:STDOUT:     inst600000DE:    {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000DF:    {kind: ImportRefLoaded, arg0: import_ir_inst73, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000E0:    {kind: FunctionType, arg0: function60000004, arg1: specific6000000B, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000E1:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000081)}
-// CHECK:STDOUT:     inst600000E2:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000E3:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000E2, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000E4:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000E5:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000E4, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000E6:    {kind: TupleType, arg0: inst_block6000004A, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000E7:    {kind: PatternType, arg0: inst600000E6, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000E8:    {kind: RequireCompleteType, arg0: inst600000C3, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000E9:    {kind: RequireCompleteType, arg0: inst600000C2, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000EA:    {kind: LookupImplWitness, arg0: inst600000C1, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000EB:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000C1, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000EC:    {kind: ImplWitnessAccess, arg0: inst600000EA, arg1: element0, type: type(symbolic_constant60000099)}
-// CHECK:STDOUT:     inst600000ED:    {kind: SpecificImplFunction, arg0: inst600000EC, arg1: specific6000000D, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst600000EE:    {kind: RequireCompleteType, arg0: inst600000E6, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000EF:    {kind: RequireCompleteType, arg0: inst600000E3, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000F0:    {kind: LookupImplWitness, arg0: inst600000E2, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000F1:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000E2, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000F2:    {kind: ImplWitnessAccess, arg0: inst600000F0, arg1: element0, type: type(symbolic_constant600000A2)}
-// CHECK:STDOUT:     inst600000F3:    {kind: SpecificImplFunction, arg0: inst600000F2, arg1: specific6000000E, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst600000F4:    {kind: RequireCompleteType, arg0: inst600000E5, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000F5:    {kind: LookupImplWitness, arg0: inst600000E4, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst600000F6:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000E4, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000F7:    {kind: ImplWitnessAccess, arg0: inst600000F5, arg1: element0, type: type(symbolic_constant600000A7)}
-// CHECK:STDOUT:     inst600000F8:    {kind: SpecificImplFunction, arg0: inst600000F7, arg1: specific6000000F, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst600000F9:    {kind: PatternType, arg0: inst600000C2, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000FA:    {kind: ImportRefUnloaded, arg0: import_ir_inst87, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst600000FB:    {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty}
-// CHECK:STDOUT:     inst600000FC:    {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst600000FD:    {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst600000FC, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000FE:    {kind: TupleType, arg0: inst_block60000053, type: type(TypeType)}
-// CHECK:STDOUT:     inst600000FF:    {kind: SymbolicBindingPattern, arg0: entity_name6000002E, type: type(inst60000065)}
-// CHECK:STDOUT:     inst60000100:    {kind: SymbolicBindingPattern, arg0: entity_name6000002F, type: type(inst60000065)}
-// CHECK:STDOUT:     inst60000101:    {kind: SymbolicBindingPattern, arg0: entity_name60000030, type: type(inst60000065)}
-// CHECK:STDOUT:     inst60000102:    {kind: ImportRefLoaded, arg0: import_ir_inst8C, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000103:    {kind: ImportRefLoaded, arg0: import_ir_inst8D, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000104:    {kind: ImportRefLoaded, arg0: import_ir_inst8E, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000105:    {kind: ImportRefLoaded, arg0: import_ir_inst8F, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000106:    {kind: ImportRefLoaded, arg0: import_ir_inst90, arg1: entity_name<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000107:    {kind: TupleType, arg0: inst_block60000056, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000108:    {kind: TupleValue, arg0: inst_block60000057, type: type(inst60000107)}
-// CHECK:STDOUT:     inst60000109:    {kind: ImportRefUnloaded, arg0: import_ir_inst91, arg1: entity_name<none>}
-// CHECK:STDOUT:     inst6000010A:    {kind: ImplWitnessTable, arg0: inst_block60000058, arg1: impl60000009}
-// CHECK:STDOUT:     inst6000010B:    {kind: ImplWitness, arg0: inst6000010A, arg1: specific60000010, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000010C:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000010D:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000010E:    {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000010F:    {kind: TupleValue, arg0: inst_block60000059, type: type(inst60000107)}
-// CHECK:STDOUT:     inst60000110:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000010C, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000111:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst6000010D, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000112:    {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst6000010E, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000113:    {kind: TupleType, arg0: inst_block6000005A, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000114:    {kind: ImplWitness, arg0: inst6000010A, arg1: specific60000011, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000115:    {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000C6)}
-// CHECK:STDOUT:     inst60000116:    {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000117:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000C6)}
-// CHECK:STDOUT:     inst60000118:    {kind: PatternType, arg0: inst600000FE, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000119:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant600000CB)}
-// CHECK:STDOUT:     inst6000011A:    {kind: OutParamPattern, arg0: inst60000119, arg1: call_param1, type: type(symbolic_constant600000CB)}
-// CHECK:STDOUT:     inst6000011B:    {kind: ValueBindingPattern, arg0: entity_name60000037, type: type(symbolic_constant600000CB)}
-// CHECK:STDOUT:     inst6000011C:    {kind: ValueParamPattern, arg0: inst6000011B, arg1: call_param0, type: type(symbolic_constant600000CB)}
-// CHECK:STDOUT:     inst6000011D:    {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000011E:    {kind: ImportRefLoaded, arg0: import_ir_instA2, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst6000011F:    {kind: ImportRefLoaded, arg0: import_ir_instA3, arg1: entity_name<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000120:    {kind: FunctionType, arg0: function60000005, arg1: specific60000011, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000121:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000CD)}
-// CHECK:STDOUT:     inst60000122:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000123:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000122, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000124:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000125:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst60000124, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000126:    {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst<none>, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000127:    {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst60000126, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000128:    {kind: TupleType, arg0: inst_block60000062, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000129:    {kind: PatternType, arg0: inst60000128, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000012A:    {kind: RequireCompleteType, arg0: inst600000FE, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000012B:    {kind: RequireCompleteType, arg0: inst600000FD, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000012C:    {kind: LookupImplWitness, arg0: inst600000FC, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000012D:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000FC, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000012E:    {kind: ImplWitnessAccess, arg0: inst6000012C, arg1: element0, type: type(symbolic_constant600000EE)}
-// CHECK:STDOUT:     inst6000012F:    {kind: SpecificImplFunction, arg0: inst6000012E, arg1: specific60000013, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst60000130:    {kind: RequireCompleteType, arg0: inst60000128, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000131:    {kind: RequireCompleteType, arg0: inst60000123, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000132:    {kind: LookupImplWitness, arg0: inst60000122, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000133:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000122, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000134:    {kind: ImplWitnessAccess, arg0: inst60000132, arg1: element0, type: type(symbolic_constant600000F7)}
-// CHECK:STDOUT:     inst60000135:    {kind: SpecificImplFunction, arg0: inst60000134, arg1: specific60000014, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst60000136:    {kind: RequireCompleteType, arg0: inst60000125, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000137:    {kind: LookupImplWitness, arg0: inst60000124, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000138:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000124, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000139:    {kind: ImplWitnessAccess, arg0: inst60000137, arg1: element0, type: type(symbolic_constant600000FC)}
-// CHECK:STDOUT:     inst6000013A:    {kind: SpecificImplFunction, arg0: inst60000139, arg1: specific60000015, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst6000013B:    {kind: RequireCompleteType, arg0: inst60000127, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000013C:    {kind: LookupImplWitness, arg0: inst60000126, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst6000013D:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000126, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000013E:    {kind: ImplWitnessAccess, arg0: inst6000013C, arg1: element0, type: type(symbolic_constant60000101)}
-// CHECK:STDOUT:     inst6000013F:    {kind: SpecificImplFunction, arg0: inst6000013E, arg1: specific60000016, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst60000140:    {kind: PatternType, arg0: inst600000FD, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000041:    {kind: NameRef, arg0: name2, arg1: inst6000001C, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     inst60000042:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000023)}
+// CHECK:STDOUT:     inst60000043:    {kind: TupleLiteral, arg0: inst_block60000017, type: type(symbolic_constantA)}
+// CHECK:STDOUT:     inst60000044:    {kind: RequireCompleteType, arg0: inst6000002C, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000045:    {kind: TupleAccess, arg0: inst60000036, arg1: element0, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     inst60000046:    {kind: RequireCompleteType, arg0: inst6000001A, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000047:    {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name60000003, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000048:    {kind: InterfaceDecl, arg0: interface60000000, arg1: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000049:    {kind: FacetType, arg0: facet_type60000001, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000004A:    {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000004B:    {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst6000004C:    {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name<none>, type: type(inst6000004E)}
+// CHECK:STDOUT:     inst6000004D:    {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name60000005}
+// CHECK:STDOUT:     inst6000004E:    {kind: AssociatedEntityType, arg0: interface60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000004F:    {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name<none>, type: type(inst60000052)}
+// CHECK:STDOUT:     inst60000050:    {kind: AssociatedEntity, arg0: element0, arg1: inst6000004F, type: type(inst6000004E)}
+// CHECK:STDOUT:     inst60000051:    {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst60000052)}
+// CHECK:STDOUT:     inst60000052:    {kind: FunctionType, arg0: function60000001, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000053:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000052)}
+// CHECK:STDOUT:     inst60000054:    {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000004A, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000055:    {kind: PatternType, arg0: inst60000054, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000056:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant60000015)}
+// CHECK:STDOUT:     inst60000057:    {kind: OutParamPattern, arg0: inst60000056, arg1: call_param1, type: type(symbolic_constant60000015)}
+// CHECK:STDOUT:     inst60000058:    {kind: ValueBindingPattern, arg0: entity_name60000008, type: type(symbolic_constant60000015)}
+// CHECK:STDOUT:     inst60000059:    {kind: ValueParamPattern, arg0: inst60000058, arg1: call_param0, type: type(symbolic_constant60000015)}
+// CHECK:STDOUT:     inst6000005A:    {kind: ImportRefLoaded, arg0: import_ir_instB, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000005B:    {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000005C:    {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000005B, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000005D:    {kind: PatternType, arg0: inst6000005C, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000005E:    {kind: LookupImplWitness, arg0: inst6000001A, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000005F:    {kind: ImportRefUnloaded, arg0: import_ir_instF, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst60000060:    {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst60000061:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000062:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000061, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000063:    {kind: ConstType, arg0: inst60000062, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000064:    {kind: PatternType, arg0: inst60000049, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000065:    {kind: SymbolicBindingPattern, arg0: entity_name6000000E, type: type(inst60000064)}
+// CHECK:STDOUT:     inst60000066:    {kind: ImportRefLoaded, arg0: import_ir_inst12, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000067:    {kind: ImportRefLoaded, arg0: import_ir_inst13, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000068:    {kind: ImportRefLoaded, arg0: import_ir_inst14, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000069:    {kind: ImportRefUnloaded, arg0: import_ir_inst15, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst6000006A:    {kind: ImplWitnessTable, arg0: inst_block60000020, arg1: impl60000000}
+// CHECK:STDOUT:     inst6000006B:    {kind: ImplWitness, arg0: inst6000006A, arg1: specific60000002, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000006C:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000006D:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006C, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000006E:    {kind: ConstType, arg0: inst6000006D, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000006F:    {kind: ImplWitness, arg0: inst6000006A, arg1: specific60000003, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000070:    {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000029)}
+// CHECK:STDOUT:     inst60000071:    {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000072:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000029)}
+// CHECK:STDOUT:     inst60000073:    {kind: PatternType, arg0: inst60000063, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000074:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant6000002E)}
+// CHECK:STDOUT:     inst60000075:    {kind: OutParamPattern, arg0: inst60000074, arg1: call_param1, type: type(symbolic_constant6000002E)}
+// CHECK:STDOUT:     inst60000076:    {kind: ValueBindingPattern, arg0: entity_name60000011, type: type(symbolic_constant6000002E)}
+// CHECK:STDOUT:     inst60000077:    {kind: ValueParamPattern, arg0: inst60000076, arg1: call_param0, type: type(symbolic_constant6000002E)}
+// CHECK:STDOUT:     inst60000078:    {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000079:    {kind: FunctionType, arg0: function60000002, arg1: specific60000003, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000007A:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000030)}
+// CHECK:STDOUT:     inst6000007B:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000007C:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000007B, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000007D:    {kind: ConstType, arg0: inst6000007C, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000007E:    {kind: PatternType, arg0: inst6000007D, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000007F:    {kind: RequireCompleteType, arg0: inst60000063, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000080:    {kind: RequireCompleteType, arg0: inst60000062, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000081:    {kind: LookupImplWitness, arg0: inst60000061, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000082:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000061, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000083:    {kind: ImplWitnessAccess, arg0: inst60000081, arg1: element0, type: type(symbolic_constant6000003F)}
+// CHECK:STDOUT:     inst60000084:    {kind: SpecificImplFunction, arg0: inst60000083, arg1: specific60000005, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst60000085:    {kind: RequireCompleteType, arg0: inst6000007D, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000086:    {kind: RequireCompleteType, arg0: inst6000007C, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000087:    {kind: LookupImplWitness, arg0: inst6000007B, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000088:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst6000007B, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000089:    {kind: ImplWitnessAccess, arg0: inst60000087, arg1: element0, type: type(symbolic_constant60000048)}
+// CHECK:STDOUT:     inst6000008A:    {kind: SpecificImplFunction, arg0: inst60000089, arg1: specific60000006, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst6000008B:    {kind: PatternType, arg0: inst60000062, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000008C:    {kind: ImportRefUnloaded, arg0: import_ir_inst2D, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst6000008D:    {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst6000008E:    {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000008F:    {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000090:    {kind: ImportRefUnloaded, arg0: import_ir_inst31, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst60000091:    {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst60000092:    {kind: ImportRefLoaded, arg0: import_ir_inst33, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000093:    {kind: ImportRefLoaded, arg0: import_ir_inst34, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000094:    {kind: ImportRefUnloaded, arg0: import_ir_inst35, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst60000095:    {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst60000096:    {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000097:    {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000098:    {kind: ImportRefUnloaded, arg0: import_ir_inst39, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst60000099:    {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst6000009A:    {kind: ImportRefLoaded, arg0: import_ir_inst3B, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000009B:    {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000009C:    {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name<none>, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000009D:    {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst6000009E:    {kind: SymbolicBindingPattern, arg0: entity_name60000016, type: type(inst60000016)}
+// CHECK:STDOUT:     inst6000009F:    {kind: ImportRefLoaded, arg0: import_ir_inst40, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000A0:    {kind: ImportRefLoaded, arg0: import_ir_inst41, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000A1:    {kind: ImportRefLoaded, arg0: import_ir_inst42, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000A2:    {kind: ImportRefUnloaded, arg0: import_ir_inst43, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst600000A3:    {kind: ImplWitnessTable, arg0: inst_block60000031, arg1: impl60000005}
+// CHECK:STDOUT:     inst600000A4:    {kind: ImplWitness, arg0: inst600000A3, arg1: specific60000007, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000A5:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000A6:    {kind: PointerType, arg0: inst600000A5, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000A7:    {kind: ImplWitness, arg0: inst600000A3, arg1: specific60000008, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000A8:    {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000055)}
+// CHECK:STDOUT:     inst600000A9:    {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000AA:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000055)}
+// CHECK:STDOUT:     inst600000AB:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant60000059)}
+// CHECK:STDOUT:     inst600000AC:    {kind: OutParamPattern, arg0: inst600000AB, arg1: call_param1, type: type(symbolic_constant60000059)}
+// CHECK:STDOUT:     inst600000AD:    {kind: ValueBindingPattern, arg0: entity_name60000018, type: type(symbolic_constant60000059)}
+// CHECK:STDOUT:     inst600000AE:    {kind: ValueParamPattern, arg0: inst600000AD, arg1: call_param0, type: type(symbolic_constant60000059)}
+// CHECK:STDOUT:     inst600000AF:    {kind: ImportRefLoaded, arg0: import_ir_inst4D, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000B0:    {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000B1:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000005C)}
+// CHECK:STDOUT:     inst600000B2:    {kind: RequireCompleteType, arg0: inst600000A6, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000B3:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000B4:    {kind: PointerType, arg0: inst600000B3, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000B5:    {kind: PatternType, arg0: inst600000B4, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000B6:    {kind: ImportRefUnloaded, arg0: import_ir_inst54, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst600000B7:    {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst600000B8:    {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000B9:    {kind: ImportRefLoaded, arg0: import_ir_inst57, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000BA:    {kind: ImportRefUnloaded, arg0: import_ir_inst58, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst600000BB:    {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst600000BC:    {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000BD:    {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000BE:    {kind: ImportRefUnloaded, arg0: import_ir_inst5C, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst600000BF:    {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst600000C0:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000C1:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000C0, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000C2:    {kind: TupleType, arg0: inst_block6000003B, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000C3:    {kind: SymbolicBindingPattern, arg0: entity_name6000001E, type: type(inst60000064)}
+// CHECK:STDOUT:     inst600000C4:    {kind: SymbolicBindingPattern, arg0: entity_name6000001F, type: type(inst60000064)}
+// CHECK:STDOUT:     inst600000C5:    {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000C6:    {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000C7:    {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000C8:    {kind: ImportRefLoaded, arg0: import_ir_inst63, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000C9:    {kind: TupleType, arg0: inst_block6000003E, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000CA:    {kind: TupleValue, arg0: inst_block6000003F, type: type(inst600000C9)}
+// CHECK:STDOUT:     inst600000CB:    {kind: ImportRefUnloaded, arg0: import_ir_inst64, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst600000CC:    {kind: ImplWitnessTable, arg0: inst_block60000040, arg1: impl60000008}
+// CHECK:STDOUT:     inst600000CD:    {kind: ImplWitness, arg0: inst600000CC, arg1: specific6000000A, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000CE:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000CF:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000D0:    {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000C9)}
+// CHECK:STDOUT:     inst600000D1:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000CE, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000D2:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000CF, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000D3:    {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000D4:    {kind: ImplWitness, arg0: inst600000CC, arg1: specific6000000B, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000D5:    {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant6000007A)}
+// CHECK:STDOUT:     inst600000D6:    {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000D7:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000007A)}
+// CHECK:STDOUT:     inst600000D8:    {kind: PatternType, arg0: inst600000C2, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000D9:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant6000007F)}
+// CHECK:STDOUT:     inst600000DA:    {kind: OutParamPattern, arg0: inst600000D9, arg1: call_param1, type: type(symbolic_constant6000007F)}
+// CHECK:STDOUT:     inst600000DB:    {kind: ValueBindingPattern, arg0: entity_name60000024, type: type(symbolic_constant6000007F)}
+// CHECK:STDOUT:     inst600000DC:    {kind: ValueParamPattern, arg0: inst600000DB, arg1: call_param0, type: type(symbolic_constant6000007F)}
+// CHECK:STDOUT:     inst600000DD:    {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000DE:    {kind: ImportRefLoaded, arg0: import_ir_inst73, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000DF:    {kind: FunctionType, arg0: function60000004, arg1: specific6000000B, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000E0:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000081)}
+// CHECK:STDOUT:     inst600000E1:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000E2:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000E1, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000E3:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000E4:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000E3, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000E5:    {kind: TupleType, arg0: inst_block6000004A, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000E6:    {kind: PatternType, arg0: inst600000E5, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000E7:    {kind: RequireCompleteType, arg0: inst600000C2, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000E8:    {kind: RequireCompleteType, arg0: inst600000C1, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000E9:    {kind: LookupImplWitness, arg0: inst600000C0, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000EA:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000C0, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000EB:    {kind: ImplWitnessAccess, arg0: inst600000E9, arg1: element0, type: type(symbolic_constant60000099)}
+// CHECK:STDOUT:     inst600000EC:    {kind: SpecificImplFunction, arg0: inst600000EB, arg1: specific6000000D, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst600000ED:    {kind: RequireCompleteType, arg0: inst600000E5, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000EE:    {kind: RequireCompleteType, arg0: inst600000E2, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000EF:    {kind: LookupImplWitness, arg0: inst600000E1, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000F0:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000E1, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000F1:    {kind: ImplWitnessAccess, arg0: inst600000EF, arg1: element0, type: type(symbolic_constant600000A2)}
+// CHECK:STDOUT:     inst600000F2:    {kind: SpecificImplFunction, arg0: inst600000F1, arg1: specific6000000E, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst600000F3:    {kind: RequireCompleteType, arg0: inst600000E4, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000F4:    {kind: LookupImplWitness, arg0: inst600000E3, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst600000F5:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000E3, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000F6:    {kind: ImplWitnessAccess, arg0: inst600000F4, arg1: element0, type: type(symbolic_constant600000A7)}
+// CHECK:STDOUT:     inst600000F7:    {kind: SpecificImplFunction, arg0: inst600000F6, arg1: specific6000000F, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst600000F8:    {kind: PatternType, arg0: inst600000C1, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000F9:    {kind: ImportRefUnloaded, arg0: import_ir_inst87, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst600000FA:    {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty}
+// CHECK:STDOUT:     inst600000FB:    {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst600000FC:    {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst600000FB, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000FD:    {kind: TupleType, arg0: inst_block60000053, type: type(TypeType)}
+// CHECK:STDOUT:     inst600000FE:    {kind: SymbolicBindingPattern, arg0: entity_name6000002E, type: type(inst60000064)}
+// CHECK:STDOUT:     inst600000FF:    {kind: SymbolicBindingPattern, arg0: entity_name6000002F, type: type(inst60000064)}
+// CHECK:STDOUT:     inst60000100:    {kind: SymbolicBindingPattern, arg0: entity_name60000030, type: type(inst60000064)}
+// CHECK:STDOUT:     inst60000101:    {kind: ImportRefLoaded, arg0: import_ir_inst8C, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000102:    {kind: ImportRefLoaded, arg0: import_ir_inst8D, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000103:    {kind: ImportRefLoaded, arg0: import_ir_inst8E, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000104:    {kind: ImportRefLoaded, arg0: import_ir_inst8F, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000105:    {kind: ImportRefLoaded, arg0: import_ir_inst90, arg1: entity_name<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000106:    {kind: TupleType, arg0: inst_block60000056, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000107:    {kind: TupleValue, arg0: inst_block60000057, type: type(inst60000106)}
+// CHECK:STDOUT:     inst60000108:    {kind: ImportRefUnloaded, arg0: import_ir_inst91, arg1: entity_name<none>}
+// CHECK:STDOUT:     inst60000109:    {kind: ImplWitnessTable, arg0: inst_block60000058, arg1: impl60000009}
+// CHECK:STDOUT:     inst6000010A:    {kind: ImplWitness, arg0: inst60000109, arg1: specific60000010, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000010B:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000010C:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000010D:    {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000010E:    {kind: TupleValue, arg0: inst_block60000059, type: type(inst60000106)}
+// CHECK:STDOUT:     inst6000010F:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000010B, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000110:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst6000010C, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000111:    {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst6000010D, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000112:    {kind: TupleType, arg0: inst_block6000005A, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000113:    {kind: ImplWitness, arg0: inst60000109, arg1: specific60000011, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000114:    {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000C6)}
+// CHECK:STDOUT:     inst60000115:    {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000116:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000C6)}
+// CHECK:STDOUT:     inst60000117:    {kind: PatternType, arg0: inst600000FD, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000118:    {kind: ReturnSlotPattern, arg0: inst<none>, type: type(symbolic_constant600000CB)}
+// CHECK:STDOUT:     inst60000119:    {kind: OutParamPattern, arg0: inst60000118, arg1: call_param1, type: type(symbolic_constant600000CB)}
+// CHECK:STDOUT:     inst6000011A:    {kind: ValueBindingPattern, arg0: entity_name60000037, type: type(symbolic_constant600000CB)}
+// CHECK:STDOUT:     inst6000011B:    {kind: ValueParamPattern, arg0: inst6000011A, arg1: call_param0, type: type(symbolic_constant600000CB)}
+// CHECK:STDOUT:     inst6000011C:    {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000011D:    {kind: ImportRefLoaded, arg0: import_ir_instA2, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000011E:    {kind: ImportRefLoaded, arg0: import_ir_instA3, arg1: entity_name<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst6000011F:    {kind: FunctionType, arg0: function60000005, arg1: specific60000011, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000120:    {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000CD)}
+// CHECK:STDOUT:     inst60000121:    {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000122:    {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000121, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000123:    {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000124:    {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst60000123, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000125:    {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst<none>, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000126:    {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst60000125, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000127:    {kind: TupleType, arg0: inst_block60000062, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000128:    {kind: PatternType, arg0: inst60000127, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000129:    {kind: RequireCompleteType, arg0: inst600000FD, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000012A:    {kind: RequireCompleteType, arg0: inst600000FC, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000012B:    {kind: LookupImplWitness, arg0: inst600000FB, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000012C:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000FB, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000012D:    {kind: ImplWitnessAccess, arg0: inst6000012B, arg1: element0, type: type(symbolic_constant600000EE)}
+// CHECK:STDOUT:     inst6000012E:    {kind: SpecificImplFunction, arg0: inst6000012D, arg1: specific60000013, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst6000012F:    {kind: RequireCompleteType, arg0: inst60000127, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000130:    {kind: RequireCompleteType, arg0: inst60000122, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000131:    {kind: LookupImplWitness, arg0: inst60000121, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000132:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000121, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000133:    {kind: ImplWitnessAccess, arg0: inst60000131, arg1: element0, type: type(symbolic_constant600000F7)}
+// CHECK:STDOUT:     inst60000134:    {kind: SpecificImplFunction, arg0: inst60000133, arg1: specific60000014, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst60000135:    {kind: RequireCompleteType, arg0: inst60000124, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000136:    {kind: LookupImplWitness, arg0: inst60000123, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst60000137:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000123, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000138:    {kind: ImplWitnessAccess, arg0: inst60000136, arg1: element0, type: type(symbolic_constant600000FC)}
+// CHECK:STDOUT:     inst60000139:    {kind: SpecificImplFunction, arg0: inst60000138, arg1: specific60000015, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst6000013A:    {kind: RequireCompleteType, arg0: inst60000126, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000013B:    {kind: LookupImplWitness, arg0: inst60000125, arg1: specific_interface60000000, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000013C:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000125, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000013D:    {kind: ImplWitnessAccess, arg0: inst6000013B, arg1: element0, type: type(symbolic_constant60000101)}
+// CHECK:STDOUT:     inst6000013E:    {kind: SpecificImplFunction, arg0: inst6000013D, arg1: specific60000016, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst6000013F:    {kind: PatternType, arg0: inst600000FC, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000140:    {kind: LookupImplWitness, arg0: inst6000001A, arg1: specific_interface60000000, type: type(inst(WitnessType))}
 // CHECK:STDOUT:     inst60000141:    {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000142:    {kind: LookupImplWitness, arg0: inst6000001C, arg1: specific_interface60000000, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000143:    {kind: FacetValue, arg0: inst6000001B, arg1: inst_block6000006D, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000144:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000143, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000145:    {kind: ImplWitnessAccess, arg0: inst60000141, arg1: element0, type: type(symbolic_constant6000010C)}
-// CHECK:STDOUT:     inst60000146:    {kind: ImplWitnessAccess, arg0: inst60000141, arg1: element0, type: type(symbolic_constant60000109)}
-// CHECK:STDOUT:     inst60000147:    {kind: FacetValue, arg0: inst6000001C, arg1: inst_block6000006E, type: type(inst6000004A)}
-// CHECK:STDOUT:     inst60000148:    {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000147, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000149:    {kind: ImplWitnessAccess, arg0: inst60000142, arg1: element0, type: type(symbolic_constant6000010C)}
-// CHECK:STDOUT:     inst6000014A:    {kind: BoundMethod, arg0: inst60000042, arg1: inst60000145, type: type(inst(BoundMethodType))}
+// CHECK:STDOUT:     inst60000142:    {kind: FacetValue, arg0: inst6000001A, arg1: inst_block6000006D, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000143:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000142, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000144:    {kind: ImplWitnessAccess, arg0: inst60000140, arg1: element0, type: type(symbolic_constant6000010C)}
+// CHECK:STDOUT:     inst60000145:    {kind: ImplWitnessAccess, arg0: inst60000140, arg1: element0, type: type(symbolic_constant60000109)}
+// CHECK:STDOUT:     inst60000146:    {kind: FacetValue, arg0: inst6000001B, arg1: inst_block6000006E, type: type(inst60000049)}
+// CHECK:STDOUT:     inst60000147:    {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000146, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000148:    {kind: ImplWitnessAccess, arg0: inst60000141, arg1: element0, type: type(symbolic_constant6000010C)}
+// CHECK:STDOUT:     inst60000149:    {kind: BoundMethod, arg0: inst60000041, arg1: inst60000144, type: type(inst(BoundMethodType))}
+// CHECK:STDOUT:     inst6000014A:    {kind: SpecificImplFunction, arg0: inst60000144, arg1: specific60000017, type: type(inst(SpecificFunctionType))}
 // CHECK:STDOUT:     inst6000014B:    {kind: SpecificImplFunction, arg0: inst60000145, arg1: specific60000017, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst6000014C:    {kind: SpecificImplFunction, arg0: inst60000146, arg1: specific60000017, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst6000014D:    {kind: SpecificImplFunction, arg0: inst60000149, arg1: specific60000018, type: type(inst(SpecificFunctionType))}
-// CHECK:STDOUT:     inst6000014E:    {kind: BoundMethod, arg0: inst60000042, arg1: inst6000014B, type: type(inst(BoundMethodType))}
-// CHECK:STDOUT:     inst6000014F:    {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))}
-// CHECK:STDOUT:     inst60000150:    {kind: Call, arg0: inst6000014E, arg1: inst_block60000072, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst60000151:    {kind: InitializeFrom, arg0: inst60000150, arg1: inst60000046, type: type(symbolic_constant4)}
-// CHECK:STDOUT:     inst60000152:    {kind: TupleAccess, arg0: inst60000037, arg1: element1, type: type(inst60000024)}
-// CHECK:STDOUT:     inst60000153:    {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000152, type: type(inst60000024)}
-// CHECK:STDOUT:     inst60000154:    {kind: Converted, arg0: inst60000043, arg1: inst60000153, type: type(inst60000024)}
-// CHECK:STDOUT:     inst60000155:    {kind: TupleInit, arg0: inst_block60000073, arg1: inst60000037, type: type(symbolic_constantA)}
-// CHECK:STDOUT:     inst60000156:    {kind: Converted, arg0: inst60000044, arg1: inst60000155, type: type(symbolic_constantA)}
-// CHECK:STDOUT:     inst60000157:    {kind: ReturnExpr, arg0: inst60000156, arg1: inst60000037}
+// CHECK:STDOUT:     inst6000014C:    {kind: SpecificImplFunction, arg0: inst60000148, arg1: specific60000018, type: type(inst(SpecificFunctionType))}
+// CHECK:STDOUT:     inst6000014D:    {kind: BoundMethod, arg0: inst60000041, arg1: inst6000014A, type: type(inst(BoundMethodType))}
+// CHECK:STDOUT:     inst6000014E:    {kind: RequireCompleteType, arg0: inst6000001A, type: type(inst(WitnessType))}
+// CHECK:STDOUT:     inst6000014F:    {kind: Call, arg0: inst6000014D, arg1: inst_block60000072, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     inst60000150:    {kind: InitializeFrom, arg0: inst6000014F, arg1: inst60000045, type: type(symbolic_constant4)}
+// CHECK:STDOUT:     inst60000151:    {kind: TupleAccess, arg0: inst60000036, arg1: element1, type: type(inst60000023)}
+// CHECK:STDOUT:     inst60000152:    {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000151, type: type(inst60000023)}
+// CHECK:STDOUT:     inst60000153:    {kind: Converted, arg0: inst60000042, arg1: inst60000152, type: type(inst60000023)}
+// CHECK:STDOUT:     inst60000154:    {kind: TupleInit, arg0: inst_block60000073, arg1: inst60000036, type: type(symbolic_constantA)}
+// CHECK:STDOUT:     inst60000155:    {kind: Converted, arg0: inst60000043, arg1: inst60000154, type: type(symbolic_constantA)}
+// CHECK:STDOUT:     inst60000156:    {kind: ReturnExpr, arg0: inst60000155, arg1: inst60000036}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst6000000F)
 // CHECK:STDOUT:       inst60000010:    concrete_constant(inst60000010)
-// CHECK:STDOUT:       inst60000011:    concrete_constant(inst60000011)
+// CHECK:STDOUT:       inst60000011:    symbolic_constant0
 // CHECK:STDOUT:       inst60000012:    symbolic_constant0
-// CHECK:STDOUT:       inst60000013:    symbolic_constant0
-// CHECK:STDOUT:       inst60000014:    symbolic_constant2
-// CHECK:STDOUT:       inst60000015:    symbolic_constant1
-// CHECK:STDOUT:       inst60000016:    symbolic_constant2
+// CHECK:STDOUT:       inst60000013:    symbolic_constant2
+// CHECK:STDOUT:       inst60000014:    symbolic_constant1
+// CHECK:STDOUT:       inst60000015:    symbolic_constant2
+// CHECK:STDOUT:       inst60000016:    concrete_constant(inst60000016)
 // CHECK:STDOUT:       inst60000017:    concrete_constant(inst60000017)
-// CHECK:STDOUT:       inst60000018:    concrete_constant(inst60000018)
-// CHECK:STDOUT:       inst60000019:    symbolic_constant2
-// CHECK:STDOUT:       inst6000001A:    symbolic_constant4
-// CHECK:STDOUT:       inst6000001B:    symbolic_constant3
-// CHECK:STDOUT:       inst6000001C:    symbolic_constant4
-// CHECK:STDOUT:       inst6000001E:    symbolic_constant5
-// CHECK:STDOUT:       inst6000001F:    concrete_constant(inst6000001F)
-// CHECK:STDOUT:       inst60000020:    symbolic_constant6
-// CHECK:STDOUT:       inst60000021:    concrete_constant(inst60000021)
-// CHECK:STDOUT:       inst60000022:    symbolic_constant2
-// CHECK:STDOUT:       inst60000023:    symbolic_constant4
-// CHECK:STDOUT:       inst60000024:    concrete_constant(inst60000024)
-// CHECK:STDOUT:       inst60000025:    concrete_constant(inst60000026)
+// CHECK:STDOUT:       inst60000018:    symbolic_constant2
+// CHECK:STDOUT:       inst60000019:    symbolic_constant4
+// CHECK:STDOUT:       inst6000001A:    symbolic_constant3
+// CHECK:STDOUT:       inst6000001B:    symbolic_constant4
+// CHECK:STDOUT:       inst6000001D:    symbolic_constant5
+// CHECK:STDOUT:       inst6000001E:    concrete_constant(inst6000001E)
+// CHECK:STDOUT:       inst6000001F:    symbolic_constant6
+// CHECK:STDOUT:       inst60000020:    concrete_constant(inst60000020)
+// CHECK:STDOUT:       inst60000021:    symbolic_constant2
+// CHECK:STDOUT:       inst60000022:    symbolic_constant4
+// CHECK:STDOUT:       inst60000023:    concrete_constant(inst60000023)
+// CHECK:STDOUT:       inst60000024:    concrete_constant(inst60000025)
+// CHECK:STDOUT:       inst60000025:    concrete_constant(inst60000025)
 // CHECK:STDOUT:       inst60000026:    concrete_constant(inst60000026)
-// CHECK:STDOUT:       inst60000027:    concrete_constant(inst60000027)
-// CHECK:STDOUT:       inst60000028:    symbolic_constant8
-// CHECK:STDOUT:       inst60000029:    symbolic_constant7
-// CHECK:STDOUT:       inst6000002A:    symbolic_constant8
-// CHECK:STDOUT:       inst6000002B:    concrete_constant(inst6000002B)
-// CHECK:STDOUT:       inst6000002C:    concrete_constant(inst60000024)
-// CHECK:STDOUT:       inst6000002D:    symbolic_constant9
+// CHECK:STDOUT:       inst60000027:    symbolic_constant8
+// CHECK:STDOUT:       inst60000028:    symbolic_constant7
+// CHECK:STDOUT:       inst60000029:    symbolic_constant8
+// CHECK:STDOUT:       inst6000002A:    concrete_constant(inst6000002A)
+// CHECK:STDOUT:       inst6000002B:    concrete_constant(inst60000023)
+// CHECK:STDOUT:       inst6000002C:    symbolic_constant9
+// CHECK:STDOUT:       inst6000002D:    symbolic_constantA
 // CHECK:STDOUT:       inst6000002E:    symbolic_constantA
-// CHECK:STDOUT:       inst6000002F:    symbolic_constantA
-// CHECK:STDOUT:       inst60000030:    symbolic_constantB
-// CHECK:STDOUT:       inst60000031:    concrete_constant(inst60000031)
-// CHECK:STDOUT:       inst60000032:    symbolic_constantC
-// CHECK:STDOUT:       inst60000033:    concrete_constant(inst60000033)
-// CHECK:STDOUT:       inst60000035:    symbolic_constant4
-// CHECK:STDOUT:       inst60000038:    concrete_constant(inst6000003A)
+// CHECK:STDOUT:       inst6000002F:    symbolic_constantB
+// CHECK:STDOUT:       inst60000030:    concrete_constant(inst60000030)
+// CHECK:STDOUT:       inst60000031:    symbolic_constantC
+// CHECK:STDOUT:       inst60000032:    concrete_constant(inst60000032)
+// CHECK:STDOUT:       inst60000034:    symbolic_constant4
+// CHECK:STDOUT:       inst60000037:    concrete_constant(inst60000039)
+// CHECK:STDOUT:       inst60000038:    concrete_constant(inst60000038)
 // CHECK:STDOUT:       inst60000039:    concrete_constant(inst60000039)
-// CHECK:STDOUT:       inst6000003A:    concrete_constant(inst6000003A)
-// CHECK:STDOUT:       inst6000003B:    symbolic_constantD
-// CHECK:STDOUT:       inst6000003C:    symbolic_constant6000000F
-// CHECK:STDOUT:       inst6000003D:    symbolic_constantE
-// CHECK:STDOUT:       inst6000003E:    symbolic_constant6000000F
-// CHECK:STDOUT:       inst6000003F:    symbolic_constant60000011
-// CHECK:STDOUT:       inst60000040:    symbolic_constant60000010
-// CHECK:STDOUT:       inst60000041:    symbolic_constant60000011
-// CHECK:STDOUT:       inst60000043:    concrete_constant(inst60000026)
-// CHECK:STDOUT:       inst60000045:    symbolic_constant6000000F
-// CHECK:STDOUT:       inst60000047:    symbolic_constant60000011
-// CHECK:STDOUT:       inst60000048:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst60000049:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst6000004A:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst6000004B:    symbolic_constant60000012
-// CHECK:STDOUT:       inst6000004C:    constant<none>
-// CHECK:STDOUT:       inst6000004D:    concrete_constant(inst60000051)
-// CHECK:STDOUT:       inst6000004E:    constant<none>
-// CHECK:STDOUT:       inst6000004F:    concrete_constant(inst6000004F)
-// CHECK:STDOUT:       inst60000050:    concrete_constant(inst60000054)
-// CHECK:STDOUT:       inst60000051:    concrete_constant(inst60000051)
-// CHECK:STDOUT:       inst60000052:    concrete_constant(inst60000054)
+// CHECK:STDOUT:       inst6000003A:    symbolic_constantD
+// CHECK:STDOUT:       inst6000003B:    symbolic_constant6000000F
+// CHECK:STDOUT:       inst6000003C:    symbolic_constant6000000E
+// CHECK:STDOUT:       inst6000003D:    symbolic_constant6000000F
+// CHECK:STDOUT:       inst6000003E:    symbolic_constant60000011
+// CHECK:STDOUT:       inst6000003F:    symbolic_constant60000010
+// CHECK:STDOUT:       inst60000040:    symbolic_constant60000011
+// CHECK:STDOUT:       inst60000042:    concrete_constant(inst60000025)
+// CHECK:STDOUT:       inst60000044:    symbolic_constant6000000F
+// CHECK:STDOUT:       inst60000046:    symbolic_constant60000011
+// CHECK:STDOUT:       inst60000047:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000048:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000049:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst6000004A:    symbolic_constant60000012
+// CHECK:STDOUT:       inst6000004B:    constant<none>
+// CHECK:STDOUT:       inst6000004C:    concrete_constant(inst60000050)
+// CHECK:STDOUT:       inst6000004D:    constant<none>
+// CHECK:STDOUT:       inst6000004E:    concrete_constant(inst6000004E)
+// CHECK:STDOUT:       inst6000004F:    concrete_constant(inst60000053)
+// CHECK:STDOUT:       inst60000050:    concrete_constant(inst60000050)
+// CHECK:STDOUT:       inst60000051:    concrete_constant(inst60000053)
+// CHECK:STDOUT:       inst60000052:    concrete_constant(inst60000052)
 // CHECK:STDOUT:       inst60000053:    concrete_constant(inst60000053)
-// CHECK:STDOUT:       inst60000054:    concrete_constant(inst60000054)
-// CHECK:STDOUT:       inst60000055:    symbolic_constant60000013
-// CHECK:STDOUT:       inst60000056:    symbolic_constant60000014
+// CHECK:STDOUT:       inst60000054:    symbolic_constant60000013
+// CHECK:STDOUT:       inst60000055:    symbolic_constant60000014
+// CHECK:STDOUT:       inst60000056:    concrete_constant(inst60000056)
 // CHECK:STDOUT:       inst60000057:    concrete_constant(inst60000057)
 // CHECK:STDOUT:       inst60000058:    concrete_constant(inst60000058)
 // CHECK:STDOUT:       inst60000059:    concrete_constant(inst60000059)
-// CHECK:STDOUT:       inst6000005A:    concrete_constant(inst6000005A)
-// CHECK:STDOUT:       inst6000005B:    symbolic_constant60000012
-// CHECK:STDOUT:       inst6000005C:    symbolic_constant60000018
-// CHECK:STDOUT:       inst6000005D:    symbolic_constant60000019
-// CHECK:STDOUT:       inst6000005E:    symbolic_constant6000001A
-// CHECK:STDOUT:       inst6000005F:    symbolic_constant60000107
-// CHECK:STDOUT:       inst60000060:    constant<none>
-// CHECK:STDOUT:       inst60000061:    concrete_constant(inst60000061)
-// CHECK:STDOUT:       inst60000062:    symbolic_constant6000001B
-// CHECK:STDOUT:       inst60000063:    symbolic_constant6000001C
-// CHECK:STDOUT:       inst60000064:    symbolic_constant6000001D
+// CHECK:STDOUT:       inst6000005A:    symbolic_constant60000012
+// CHECK:STDOUT:       inst6000005B:    symbolic_constant60000018
+// CHECK:STDOUT:       inst6000005C:    symbolic_constant60000019
+// CHECK:STDOUT:       inst6000005D:    symbolic_constant6000001A
+// CHECK:STDOUT:       inst6000005E:    symbolic_constant60000107
+// CHECK:STDOUT:       inst6000005F:    constant<none>
+// CHECK:STDOUT:       inst60000060:    concrete_constant(inst60000060)
+// CHECK:STDOUT:       inst60000061:    symbolic_constant6000001B
+// CHECK:STDOUT:       inst60000062:    symbolic_constant6000001C
+// CHECK:STDOUT:       inst60000063:    symbolic_constant6000001D
+// CHECK:STDOUT:       inst60000064:    concrete_constant(inst60000064)
 // CHECK:STDOUT:       inst60000065:    concrete_constant(inst60000065)
-// CHECK:STDOUT:       inst60000066:    concrete_constant(inst60000066)
-// CHECK:STDOUT:       inst60000067:    symbolic_constant6000001F
-// CHECK:STDOUT:       inst60000068:    symbolic_constant6000001E
-// CHECK:STDOUT:       inst60000069:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst6000006A:    constant<none>
-// CHECK:STDOUT:       inst6000006B:    concrete_constant(inst6000006B)
-// CHECK:STDOUT:       inst6000006C:    symbolic_constant60000023
-// CHECK:STDOUT:       inst6000006D:    symbolic_constant60000025
-// CHECK:STDOUT:       inst6000006E:    symbolic_constant60000026
-// CHECK:STDOUT:       inst6000006F:    symbolic_constant60000027
-// CHECK:STDOUT:       inst60000070:    symbolic_constant60000028
-// CHECK:STDOUT:       inst60000071:    symbolic_constant6000002B
-// CHECK:STDOUT:       inst60000072:    symbolic_constant60000029
-// CHECK:STDOUT:       inst60000073:    symbolic_constant6000002A
-// CHECK:STDOUT:       inst60000074:    symbolic_constant6000002D
+// CHECK:STDOUT:       inst60000066:    symbolic_constant6000001F
+// CHECK:STDOUT:       inst60000067:    symbolic_constant6000001E
+// CHECK:STDOUT:       inst60000068:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000069:    constant<none>
+// CHECK:STDOUT:       inst6000006A:    concrete_constant(inst6000006A)
+// CHECK:STDOUT:       inst6000006B:    symbolic_constant60000023
+// CHECK:STDOUT:       inst6000006C:    symbolic_constant60000025
+// CHECK:STDOUT:       inst6000006D:    symbolic_constant60000026
+// CHECK:STDOUT:       inst6000006E:    symbolic_constant60000027
+// CHECK:STDOUT:       inst6000006F:    symbolic_constant60000028
+// CHECK:STDOUT:       inst60000070:    symbolic_constant6000002B
+// CHECK:STDOUT:       inst60000071:    symbolic_constant60000029
+// CHECK:STDOUT:       inst60000072:    symbolic_constant6000002A
+// CHECK:STDOUT:       inst60000073:    symbolic_constant6000002D
+// CHECK:STDOUT:       inst60000074:    concrete_constant(inst60000074)
 // CHECK:STDOUT:       inst60000075:    concrete_constant(inst60000075)
 // CHECK:STDOUT:       inst60000076:    concrete_constant(inst60000076)
 // CHECK:STDOUT:       inst60000077:    concrete_constant(inst60000077)
-// CHECK:STDOUT:       inst60000078:    concrete_constant(inst60000078)
-// CHECK:STDOUT:       inst60000079:    symbolic_constant6000001F
-// CHECK:STDOUT:       inst6000007A:    symbolic_constant60000030
-// CHECK:STDOUT:       inst6000007B:    symbolic_constant60000031
-// CHECK:STDOUT:       inst6000007C:    symbolic_constant60000035
-// CHECK:STDOUT:       inst6000007D:    symbolic_constant60000036
-// CHECK:STDOUT:       inst6000007E:    symbolic_constant60000037
-// CHECK:STDOUT:       inst6000007F:    symbolic_constant60000038
-// CHECK:STDOUT:       inst60000080:    symbolic_constant60000039
-// CHECK:STDOUT:       inst60000081:    symbolic_constant6000003B
-// CHECK:STDOUT:       inst60000082:    symbolic_constant6000003D
-// CHECK:STDOUT:       inst60000083:    symbolic_constant6000003F
-// CHECK:STDOUT:       inst60000084:    symbolic_constant60000041
-// CHECK:STDOUT:       inst60000085:    symbolic_constant60000043
-// CHECK:STDOUT:       inst60000086:    symbolic_constant60000045
-// CHECK:STDOUT:       inst60000087:    symbolic_constant60000046
-// CHECK:STDOUT:       inst60000088:    symbolic_constant60000047
-// CHECK:STDOUT:       inst60000089:    symbolic_constant60000048
-// CHECK:STDOUT:       inst6000008A:    symbolic_constant60000049
-// CHECK:STDOUT:       inst6000008B:    symbolic_constant6000004A
-// CHECK:STDOUT:       inst6000008C:    symbolic_constant6000004B
-// CHECK:STDOUT:       inst6000008D:    constant<none>
-// CHECK:STDOUT:       inst6000008E:    concrete_constant(inst6000008E)
-// CHECK:STDOUT:       inst6000008F:    concrete_constant(inst(BoolType))
-// CHECK:STDOUT:       inst60000090:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst60000091:    constant<none>
-// CHECK:STDOUT:       inst60000092:    concrete_constant(inst60000092)
-// CHECK:STDOUT:       inst60000093:    concrete_constant(inst(CharLiteralType))
-// CHECK:STDOUT:       inst60000094:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst60000095:    constant<none>
-// CHECK:STDOUT:       inst60000096:    concrete_constant(inst60000096)
-// CHECK:STDOUT:       inst60000097:    concrete_constant(inst(FloatLiteralType))
-// CHECK:STDOUT:       inst60000098:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst60000099:    constant<none>
-// CHECK:STDOUT:       inst6000009A:    concrete_constant(inst6000009A)
-// CHECK:STDOUT:       inst6000009B:    concrete_constant(inst(IntLiteralType))
-// CHECK:STDOUT:       inst6000009C:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst6000009D:    symbolic_constant60000105
+// CHECK:STDOUT:       inst60000078:    symbolic_constant6000001F
+// CHECK:STDOUT:       inst60000079:    symbolic_constant60000030
+// CHECK:STDOUT:       inst6000007A:    symbolic_constant60000031
+// CHECK:STDOUT:       inst6000007B:    symbolic_constant60000035
+// CHECK:STDOUT:       inst6000007C:    symbolic_constant60000036
+// CHECK:STDOUT:       inst6000007D:    symbolic_constant60000037
+// CHECK:STDOUT:       inst6000007E:    symbolic_constant60000038
+// CHECK:STDOUT:       inst6000007F:    symbolic_constant60000039
+// CHECK:STDOUT:       inst60000080:    symbolic_constant6000003B
+// CHECK:STDOUT:       inst60000081:    symbolic_constant6000003D
+// CHECK:STDOUT:       inst60000082:    symbolic_constant6000003F
+// CHECK:STDOUT:       inst60000083:    symbolic_constant60000041
+// CHECK:STDOUT:       inst60000084:    symbolic_constant60000043
+// CHECK:STDOUT:       inst60000085:    symbolic_constant60000045
+// CHECK:STDOUT:       inst60000086:    symbolic_constant60000046
+// CHECK:STDOUT:       inst60000087:    symbolic_constant60000047
+// CHECK:STDOUT:       inst60000088:    symbolic_constant60000048
+// CHECK:STDOUT:       inst60000089:    symbolic_constant60000049
+// CHECK:STDOUT:       inst6000008A:    symbolic_constant6000004A
+// CHECK:STDOUT:       inst6000008B:    symbolic_constant6000004B
+// CHECK:STDOUT:       inst6000008C:    constant<none>
+// CHECK:STDOUT:       inst6000008D:    concrete_constant(inst6000008D)
+// CHECK:STDOUT:       inst6000008E:    concrete_constant(inst(BoolType))
+// CHECK:STDOUT:       inst6000008F:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000090:    constant<none>
+// CHECK:STDOUT:       inst60000091:    concrete_constant(inst60000091)
+// CHECK:STDOUT:       inst60000092:    concrete_constant(inst(CharLiteralType))
+// CHECK:STDOUT:       inst60000093:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000094:    constant<none>
+// CHECK:STDOUT:       inst60000095:    concrete_constant(inst60000095)
+// CHECK:STDOUT:       inst60000096:    concrete_constant(inst(FloatLiteralType))
+// CHECK:STDOUT:       inst60000097:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000098:    constant<none>
+// CHECK:STDOUT:       inst60000099:    concrete_constant(inst60000099)
+// CHECK:STDOUT:       inst6000009A:    concrete_constant(inst(IntLiteralType))
+// CHECK:STDOUT:       inst6000009B:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst6000009C:    symbolic_constant60000105
+// CHECK:STDOUT:       inst6000009D:    concrete_constant(inst6000009D)
 // CHECK:STDOUT:       inst6000009E:    concrete_constant(inst6000009E)
-// CHECK:STDOUT:       inst6000009F:    concrete_constant(inst6000009F)
-// CHECK:STDOUT:       inst600000A0:    symbolic_constant6000004D
-// CHECK:STDOUT:       inst600000A1:    symbolic_constant6000004C
-// CHECK:STDOUT:       inst600000A2:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst600000A3:    constant<none>
-// CHECK:STDOUT:       inst600000A4:    concrete_constant(inst600000A4)
-// CHECK:STDOUT:       inst600000A5:    symbolic_constant60000050
-// CHECK:STDOUT:       inst600000A6:    symbolic_constant60000052
-// CHECK:STDOUT:       inst600000A7:    symbolic_constant60000053
-// CHECK:STDOUT:       inst600000A8:    symbolic_constant60000054
-// CHECK:STDOUT:       inst600000A9:    symbolic_constant60000057
-// CHECK:STDOUT:       inst600000AA:    symbolic_constant60000055
-// CHECK:STDOUT:       inst600000AB:    symbolic_constant60000056
+// CHECK:STDOUT:       inst6000009F:    symbolic_constant6000004D
+// CHECK:STDOUT:       inst600000A0:    symbolic_constant6000004C
+// CHECK:STDOUT:       inst600000A1:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst600000A2:    constant<none>
+// CHECK:STDOUT:       inst600000A3:    concrete_constant(inst600000A3)
+// CHECK:STDOUT:       inst600000A4:    symbolic_constant60000050
+// CHECK:STDOUT:       inst600000A5:    symbolic_constant60000052
+// CHECK:STDOUT:       inst600000A6:    symbolic_constant60000053
+// CHECK:STDOUT:       inst600000A7:    symbolic_constant60000054
+// CHECK:STDOUT:       inst600000A8:    symbolic_constant60000057
+// CHECK:STDOUT:       inst600000A9:    symbolic_constant60000055
+// CHECK:STDOUT:       inst600000AA:    symbolic_constant60000056
+// CHECK:STDOUT:       inst600000AB:    concrete_constant(inst600000AB)
 // CHECK:STDOUT:       inst600000AC:    concrete_constant(inst600000AC)
 // CHECK:STDOUT:       inst600000AD:    concrete_constant(inst600000AD)
 // CHECK:STDOUT:       inst600000AE:    concrete_constant(inst600000AE)
-// CHECK:STDOUT:       inst600000AF:    concrete_constant(inst600000AF)
-// CHECK:STDOUT:       inst600000B0:    symbolic_constant6000004D
-// CHECK:STDOUT:       inst600000B1:    symbolic_constant6000005C
-// CHECK:STDOUT:       inst600000B2:    symbolic_constant6000005D
-// CHECK:STDOUT:       inst600000B3:    symbolic_constant6000005E
-// CHECK:STDOUT:       inst600000B4:    symbolic_constant60000061
-// CHECK:STDOUT:       inst600000B5:    symbolic_constant60000062
-// CHECK:STDOUT:       inst600000B6:    symbolic_constant60000063
-// CHECK:STDOUT:       inst600000B7:    constant<none>
-// CHECK:STDOUT:       inst600000B8:    concrete_constant(inst600000B8)
-// CHECK:STDOUT:       inst600000B9:    concrete_constant(inst(TypeType))
-// CHECK:STDOUT:       inst600000BA:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst600000BB:    constant<none>
-// CHECK:STDOUT:       inst600000BC:    concrete_constant(inst600000BC)
-// CHECK:STDOUT:       inst600000BD:    concrete_constant(inst60000024)
-// CHECK:STDOUT:       inst600000BE:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst600000BF:    constant<none>
-// CHECK:STDOUT:       inst600000C0:    concrete_constant(inst600000C0)
-// CHECK:STDOUT:       inst600000C1:    symbolic_constant60000064
-// CHECK:STDOUT:       inst600000C2:    symbolic_constant60000065
-// CHECK:STDOUT:       inst600000C3:    symbolic_constant60000066
+// CHECK:STDOUT:       inst600000AF:    symbolic_constant6000004D
+// CHECK:STDOUT:       inst600000B0:    symbolic_constant6000005C
+// CHECK:STDOUT:       inst600000B1:    symbolic_constant6000005D
+// CHECK:STDOUT:       inst600000B2:    symbolic_constant6000005E
+// CHECK:STDOUT:       inst600000B3:    symbolic_constant60000061
+// CHECK:STDOUT:       inst600000B4:    symbolic_constant60000062
+// CHECK:STDOUT:       inst600000B5:    symbolic_constant60000063
+// CHECK:STDOUT:       inst600000B6:    constant<none>
+// CHECK:STDOUT:       inst600000B7:    concrete_constant(inst600000B7)
+// CHECK:STDOUT:       inst600000B8:    concrete_constant(inst(TypeType))
+// CHECK:STDOUT:       inst600000B9:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst600000BA:    constant<none>
+// CHECK:STDOUT:       inst600000BB:    concrete_constant(inst600000BB)
+// CHECK:STDOUT:       inst600000BC:    concrete_constant(inst60000023)
+// CHECK:STDOUT:       inst600000BD:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst600000BE:    constant<none>
+// CHECK:STDOUT:       inst600000BF:    concrete_constant(inst600000BF)
+// CHECK:STDOUT:       inst600000C0:    symbolic_constant60000064
+// CHECK:STDOUT:       inst600000C1:    symbolic_constant60000065
+// CHECK:STDOUT:       inst600000C2:    symbolic_constant60000066
+// CHECK:STDOUT:       inst600000C3:    concrete_constant(inst600000C3)
 // CHECK:STDOUT:       inst600000C4:    concrete_constant(inst600000C4)
-// CHECK:STDOUT:       inst600000C5:    concrete_constant(inst600000C5)
-// CHECK:STDOUT:       inst600000C6:    symbolic_constant60000069
-// CHECK:STDOUT:       inst600000C7:    symbolic_constant60000068
-// CHECK:STDOUT:       inst600000C8:    symbolic_constant60000067
-// CHECK:STDOUT:       inst600000C9:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst600000CA:    concrete_constant(inst600000CA)
-// CHECK:STDOUT:       inst600000CB:    symbolic_constant6000006C
-// CHECK:STDOUT:       inst600000CC:    constant<none>
-// CHECK:STDOUT:       inst600000CD:    concrete_constant(inst600000CD)
-// CHECK:STDOUT:       inst600000CE:    symbolic_constant60000071
-// CHECK:STDOUT:       inst600000CF:    symbolic_constant60000073
-// CHECK:STDOUT:       inst600000D0:    symbolic_constant60000074
-// CHECK:STDOUT:       inst600000D1:    symbolic_constant60000075
-// CHECK:STDOUT:       inst600000D2:    symbolic_constant60000076
-// CHECK:STDOUT:       inst600000D3:    symbolic_constant60000077
-// CHECK:STDOUT:       inst600000D4:    symbolic_constant60000078
-// CHECK:STDOUT:       inst600000D5:    symbolic_constant60000079
-// CHECK:STDOUT:       inst600000D6:    symbolic_constant6000007C
-// CHECK:STDOUT:       inst600000D7:    symbolic_constant6000007A
-// CHECK:STDOUT:       inst600000D8:    symbolic_constant6000007B
-// CHECK:STDOUT:       inst600000D9:    symbolic_constant6000007E
+// CHECK:STDOUT:       inst600000C5:    symbolic_constant60000069
+// CHECK:STDOUT:       inst600000C6:    symbolic_constant60000068
+// CHECK:STDOUT:       inst600000C7:    symbolic_constant60000067
+// CHECK:STDOUT:       inst600000C8:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst600000C9:    concrete_constant(inst600000C9)
+// CHECK:STDOUT:       inst600000CA:    symbolic_constant6000006C
+// CHECK:STDOUT:       inst600000CB:    constant<none>
+// CHECK:STDOUT:       inst600000CC:    concrete_constant(inst600000CC)
+// CHECK:STDOUT:       inst600000CD:    symbolic_constant60000071
+// CHECK:STDOUT:       inst600000CE:    symbolic_constant60000073
+// CHECK:STDOUT:       inst600000CF:    symbolic_constant60000074
+// CHECK:STDOUT:       inst600000D0:    symbolic_constant60000075
+// CHECK:STDOUT:       inst600000D1:    symbolic_constant60000076
+// CHECK:STDOUT:       inst600000D2:    symbolic_constant60000077
+// CHECK:STDOUT:       inst600000D3:    symbolic_constant60000078
+// CHECK:STDOUT:       inst600000D4:    symbolic_constant60000079
+// CHECK:STDOUT:       inst600000D5:    symbolic_constant6000007C
+// CHECK:STDOUT:       inst600000D6:    symbolic_constant6000007A
+// CHECK:STDOUT:       inst600000D7:    symbolic_constant6000007B
+// CHECK:STDOUT:       inst600000D8:    symbolic_constant6000007E
+// CHECK:STDOUT:       inst600000D9:    concrete_constant(inst600000D9)
 // CHECK:STDOUT:       inst600000DA:    concrete_constant(inst600000DA)
 // CHECK:STDOUT:       inst600000DB:    concrete_constant(inst600000DB)
 // CHECK:STDOUT:       inst600000DC:    concrete_constant(inst600000DC)
-// CHECK:STDOUT:       inst600000DD:    concrete_constant(inst600000DD)
-// CHECK:STDOUT:       inst600000DE:    symbolic_constant60000069
-// CHECK:STDOUT:       inst600000DF:    symbolic_constant60000068
-// CHECK:STDOUT:       inst600000E0:    symbolic_constant60000081
-// CHECK:STDOUT:       inst600000E1:    symbolic_constant60000082
-// CHECK:STDOUT:       inst600000E2:    symbolic_constant60000088
-// CHECK:STDOUT:       inst600000E3:    symbolic_constant60000089
-// CHECK:STDOUT:       inst600000E4:    symbolic_constant6000008A
-// CHECK:STDOUT:       inst600000E5:    symbolic_constant6000008B
-// CHECK:STDOUT:       inst600000E6:    symbolic_constant6000008C
-// CHECK:STDOUT:       inst600000E7:    symbolic_constant6000008D
-// CHECK:STDOUT:       inst600000E8:    symbolic_constant6000008E
-// CHECK:STDOUT:       inst600000E9:    symbolic_constant60000095
-// CHECK:STDOUT:       inst600000EA:    symbolic_constant60000097
-// CHECK:STDOUT:       inst600000EB:    symbolic_constant60000099
-// CHECK:STDOUT:       inst600000EC:    symbolic_constant6000009B
-// CHECK:STDOUT:       inst600000ED:    symbolic_constant6000009D
-// CHECK:STDOUT:       inst600000EE:    symbolic_constant6000009F
-// CHECK:STDOUT:       inst600000EF:    symbolic_constant600000A0
-// CHECK:STDOUT:       inst600000F0:    symbolic_constant600000A1
-// CHECK:STDOUT:       inst600000F1:    symbolic_constant600000A2
-// CHECK:STDOUT:       inst600000F2:    symbolic_constant600000A3
-// CHECK:STDOUT:       inst600000F3:    symbolic_constant600000A4
-// CHECK:STDOUT:       inst600000F4:    symbolic_constant600000A5
-// CHECK:STDOUT:       inst600000F5:    symbolic_constant600000A6
-// CHECK:STDOUT:       inst600000F6:    symbolic_constant600000A7
-// CHECK:STDOUT:       inst600000F7:    symbolic_constant600000A8
-// CHECK:STDOUT:       inst600000F8:    symbolic_constant600000A9
-// CHECK:STDOUT:       inst600000F9:    symbolic_constant600000AA
-// CHECK:STDOUT:       inst600000FA:    constant<none>
-// CHECK:STDOUT:       inst600000FB:    concrete_constant(inst600000FB)
-// CHECK:STDOUT:       inst600000FC:    symbolic_constant600000AB
-// CHECK:STDOUT:       inst600000FD:    symbolic_constant600000AC
-// CHECK:STDOUT:       inst600000FE:    symbolic_constant600000AD
+// CHECK:STDOUT:       inst600000DD:    symbolic_constant60000069
+// CHECK:STDOUT:       inst600000DE:    symbolic_constant60000068
+// CHECK:STDOUT:       inst600000DF:    symbolic_constant60000081
+// CHECK:STDOUT:       inst600000E0:    symbolic_constant60000082
+// CHECK:STDOUT:       inst600000E1:    symbolic_constant60000088
+// CHECK:STDOUT:       inst600000E2:    symbolic_constant60000089
+// CHECK:STDOUT:       inst600000E3:    symbolic_constant6000008A
+// CHECK:STDOUT:       inst600000E4:    symbolic_constant6000008B
+// CHECK:STDOUT:       inst600000E5:    symbolic_constant6000008C
+// CHECK:STDOUT:       inst600000E6:    symbolic_constant6000008D
+// CHECK:STDOUT:       inst600000E7:    symbolic_constant6000008E
+// CHECK:STDOUT:       inst600000E8:    symbolic_constant60000095
+// CHECK:STDOUT:       inst600000E9:    symbolic_constant60000097
+// CHECK:STDOUT:       inst600000EA:    symbolic_constant60000099
+// CHECK:STDOUT:       inst600000EB:    symbolic_constant6000009B
+// CHECK:STDOUT:       inst600000EC:    symbolic_constant6000009D
+// CHECK:STDOUT:       inst600000ED:    symbolic_constant6000009F
+// CHECK:STDOUT:       inst600000EE:    symbolic_constant600000A0
+// CHECK:STDOUT:       inst600000EF:    symbolic_constant600000A1
+// CHECK:STDOUT:       inst600000F0:    symbolic_constant600000A2
+// CHECK:STDOUT:       inst600000F1:    symbolic_constant600000A3
+// CHECK:STDOUT:       inst600000F2:    symbolic_constant600000A4
+// CHECK:STDOUT:       inst600000F3:    symbolic_constant600000A5
+// CHECK:STDOUT:       inst600000F4:    symbolic_constant600000A6
+// CHECK:STDOUT:       inst600000F5:    symbolic_constant600000A7
+// CHECK:STDOUT:       inst600000F6:    symbolic_constant600000A8
+// CHECK:STDOUT:       inst600000F7:    symbolic_constant600000A9
+// CHECK:STDOUT:       inst600000F8:    symbolic_constant600000AA
+// CHECK:STDOUT:       inst600000F9:    constant<none>
+// CHECK:STDOUT:       inst600000FA:    concrete_constant(inst600000FA)
+// CHECK:STDOUT:       inst600000FB:    symbolic_constant600000AB
+// CHECK:STDOUT:       inst600000FC:    symbolic_constant600000AC
+// CHECK:STDOUT:       inst600000FD:    symbolic_constant600000AD
+// CHECK:STDOUT:       inst600000FE:    concrete_constant(inst600000FE)
 // CHECK:STDOUT:       inst600000FF:    concrete_constant(inst600000FF)
 // CHECK:STDOUT:       inst60000100:    concrete_constant(inst60000100)
-// CHECK:STDOUT:       inst60000101:    concrete_constant(inst60000101)
-// CHECK:STDOUT:       inst60000102:    symbolic_constant600000B1
-// CHECK:STDOUT:       inst60000103:    symbolic_constant600000B0
-// CHECK:STDOUT:       inst60000104:    symbolic_constant600000AF
-// CHECK:STDOUT:       inst60000105:    symbolic_constant600000AE
-// CHECK:STDOUT:       inst60000106:    concrete_constant(inst6000004A)
-// CHECK:STDOUT:       inst60000107:    concrete_constant(inst60000107)
-// CHECK:STDOUT:       inst60000108:    symbolic_constant600000B5
-// CHECK:STDOUT:       inst60000109:    constant<none>
-// CHECK:STDOUT:       inst6000010A:    concrete_constant(inst6000010A)
-// CHECK:STDOUT:       inst6000010B:    symbolic_constant600000BB
-// CHECK:STDOUT:       inst6000010C:    symbolic_constant600000BD
-// CHECK:STDOUT:       inst6000010D:    symbolic_constant600000BE
-// CHECK:STDOUT:       inst6000010E:    symbolic_constant600000BF
-// CHECK:STDOUT:       inst6000010F:    symbolic_constant600000C0
-// CHECK:STDOUT:       inst60000110:    symbolic_constant600000C1
-// CHECK:STDOUT:       inst60000111:    symbolic_constant600000C2
-// CHECK:STDOUT:       inst60000112:    symbolic_constant600000C3
-// CHECK:STDOUT:       inst60000113:    symbolic_constant600000C4
-// CHECK:STDOUT:       inst60000114:    symbolic_constant600000C5
-// CHECK:STDOUT:       inst60000115:    symbolic_constant600000C8
-// CHECK:STDOUT:       inst60000116:    symbolic_constant600000C6
-// CHECK:STDOUT:       inst60000117:    symbolic_constant600000C7
-// CHECK:STDOUT:       inst60000118:    symbolic_constant600000CA
+// CHECK:STDOUT:       inst60000101:    symbolic_constant600000B1
+// CHECK:STDOUT:       inst60000102:    symbolic_constant600000B0
+// CHECK:STDOUT:       inst60000103:    symbolic_constant600000AF
+// CHECK:STDOUT:       inst60000104:    symbolic_constant600000AE
+// CHECK:STDOUT:       inst60000105:    concrete_constant(inst60000049)
+// CHECK:STDOUT:       inst60000106:    concrete_constant(inst60000106)
+// CHECK:STDOUT:       inst60000107:    symbolic_constant600000B5
+// CHECK:STDOUT:       inst60000108:    constant<none>
+// CHECK:STDOUT:       inst60000109:    concrete_constant(inst60000109)
+// CHECK:STDOUT:       inst6000010A:    symbolic_constant600000BB
+// CHECK:STDOUT:       inst6000010B:    symbolic_constant600000BD
+// CHECK:STDOUT:       inst6000010C:    symbolic_constant600000BE
+// CHECK:STDOUT:       inst6000010D:    symbolic_constant600000BF
+// CHECK:STDOUT:       inst6000010E:    symbolic_constant600000C0
+// CHECK:STDOUT:       inst6000010F:    symbolic_constant600000C1
+// CHECK:STDOUT:       inst60000110:    symbolic_constant600000C2
+// CHECK:STDOUT:       inst60000111:    symbolic_constant600000C3
+// CHECK:STDOUT:       inst60000112:    symbolic_constant600000C4
+// CHECK:STDOUT:       inst60000113:    symbolic_constant600000C5
+// CHECK:STDOUT:       inst60000114:    symbolic_constant600000C8
+// CHECK:STDOUT:       inst60000115:    symbolic_constant600000C6
+// CHECK:STDOUT:       inst60000116:    symbolic_constant600000C7
+// CHECK:STDOUT:       inst60000117:    symbolic_constant600000CA
+// CHECK:STDOUT:       inst60000118:    concrete_constant(inst60000118)
 // CHECK:STDOUT:       inst60000119:    concrete_constant(inst60000119)
 // CHECK:STDOUT:       inst6000011A:    concrete_constant(inst6000011A)
 // CHECK:STDOUT:       inst6000011B:    concrete_constant(inst6000011B)
-// CHECK:STDOUT:       inst6000011C:    concrete_constant(inst6000011C)
-// CHECK:STDOUT:       inst6000011D:    symbolic_constant600000B1
-// CHECK:STDOUT:       inst6000011E:    symbolic_constant600000B0
-// CHECK:STDOUT:       inst6000011F:    symbolic_constant600000AF
-// CHECK:STDOUT:       inst60000120:    symbolic_constant600000CD
-// CHECK:STDOUT:       inst60000121:    symbolic_constant600000CE
-// CHECK:STDOUT:       inst60000122:    symbolic_constant600000D6
-// CHECK:STDOUT:       inst60000123:    symbolic_constant600000D7
-// CHECK:STDOUT:       inst60000124:    symbolic_constant600000D8
-// CHECK:STDOUT:       inst60000125:    symbolic_constant600000D9
-// CHECK:STDOUT:       inst60000126:    symbolic_constant600000DA
-// CHECK:STDOUT:       inst60000127:    symbolic_constant600000DB
-// CHECK:STDOUT:       inst60000128:    symbolic_constant600000DC
-// CHECK:STDOUT:       inst60000129:    symbolic_constant600000DD
-// CHECK:STDOUT:       inst6000012A:    symbolic_constant600000DE
-// CHECK:STDOUT:       inst6000012B:    symbolic_constant600000EA
-// CHECK:STDOUT:       inst6000012C:    symbolic_constant600000EC
-// CHECK:STDOUT:       inst6000012D:    symbolic_constant600000EE
-// CHECK:STDOUT:       inst6000012E:    symbolic_constant600000F0
-// CHECK:STDOUT:       inst6000012F:    symbolic_constant600000F2
-// CHECK:STDOUT:       inst60000130:    symbolic_constant600000F4
-// CHECK:STDOUT:       inst60000131:    symbolic_constant600000F5
-// CHECK:STDOUT:       inst60000132:    symbolic_constant600000F6
-// CHECK:STDOUT:       inst60000133:    symbolic_constant600000F7
-// CHECK:STDOUT:       inst60000134:    symbolic_constant600000F8
-// CHECK:STDOUT:       inst60000135:    symbolic_constant600000F9
-// CHECK:STDOUT:       inst60000136:    symbolic_constant600000FA
-// CHECK:STDOUT:       inst60000137:    symbolic_constant600000FB
-// CHECK:STDOUT:       inst60000138:    symbolic_constant600000FC
-// CHECK:STDOUT:       inst60000139:    symbolic_constant600000FD
-// CHECK:STDOUT:       inst6000013A:    symbolic_constant600000FE
-// CHECK:STDOUT:       inst6000013B:    symbolic_constant600000FF
-// CHECK:STDOUT:       inst6000013C:    symbolic_constant60000100
-// CHECK:STDOUT:       inst6000013D:    symbolic_constant60000101
-// CHECK:STDOUT:       inst6000013E:    symbolic_constant60000102
-// CHECK:STDOUT:       inst6000013F:    symbolic_constant60000103
-// CHECK:STDOUT:       inst60000140:    symbolic_constant60000104
-// CHECK:STDOUT:       inst60000141:    symbolic_constant60000106
-// CHECK:STDOUT:       inst60000142:    symbolic_constant60000107
-// CHECK:STDOUT:       inst60000143:    symbolic_constant60000108
-// CHECK:STDOUT:       inst60000144:    symbolic_constant60000109
-// CHECK:STDOUT:       inst60000145:    symbolic_constant6000010D
-// CHECK:STDOUT:       inst60000146:    symbolic_constant6000010A
-// CHECK:STDOUT:       inst60000147:    symbolic_constant6000010B
-// CHECK:STDOUT:       inst60000148:    symbolic_constant6000010C
-// CHECK:STDOUT:       inst60000149:    symbolic_constant6000010D
-// CHECK:STDOUT:       inst6000014B:    symbolic_constant6000010F
-// CHECK:STDOUT:       inst6000014C:    symbolic_constant6000010E
-// CHECK:STDOUT:       inst6000014D:    symbolic_constant6000010F
-// CHECK:STDOUT:       inst6000014F:    symbolic_constant60000011
-// CHECK:STDOUT:       inst60000153:    concrete_constant(inst60000026)
-// CHECK:STDOUT:       inst60000154:    concrete_constant(inst60000026)
+// CHECK:STDOUT:       inst6000011C:    symbolic_constant600000B1
+// CHECK:STDOUT:       inst6000011D:    symbolic_constant600000B0
+// CHECK:STDOUT:       inst6000011E:    symbolic_constant600000AF
+// CHECK:STDOUT:       inst6000011F:    symbolic_constant600000CD
+// CHECK:STDOUT:       inst60000120:    symbolic_constant600000CE
+// CHECK:STDOUT:       inst60000121:    symbolic_constant600000D6
+// CHECK:STDOUT:       inst60000122:    symbolic_constant600000D7
+// CHECK:STDOUT:       inst60000123:    symbolic_constant600000D8
+// CHECK:STDOUT:       inst60000124:    symbolic_constant600000D9
+// CHECK:STDOUT:       inst60000125:    symbolic_constant600000DA
+// CHECK:STDOUT:       inst60000126:    symbolic_constant600000DB
+// CHECK:STDOUT:       inst60000127:    symbolic_constant600000DC
+// CHECK:STDOUT:       inst60000128:    symbolic_constant600000DD
+// CHECK:STDOUT:       inst60000129:    symbolic_constant600000DE
+// CHECK:STDOUT:       inst6000012A:    symbolic_constant600000EA
+// CHECK:STDOUT:       inst6000012B:    symbolic_constant600000EC
+// CHECK:STDOUT:       inst6000012C:    symbolic_constant600000EE
+// CHECK:STDOUT:       inst6000012D:    symbolic_constant600000F0
+// CHECK:STDOUT:       inst6000012E:    symbolic_constant600000F2
+// CHECK:STDOUT:       inst6000012F:    symbolic_constant600000F4
+// CHECK:STDOUT:       inst60000130:    symbolic_constant600000F5
+// CHECK:STDOUT:       inst60000131:    symbolic_constant600000F6
+// CHECK:STDOUT:       inst60000132:    symbolic_constant600000F7
+// CHECK:STDOUT:       inst60000133:    symbolic_constant600000F8
+// CHECK:STDOUT:       inst60000134:    symbolic_constant600000F9
+// CHECK:STDOUT:       inst60000135:    symbolic_constant600000FA
+// CHECK:STDOUT:       inst60000136:    symbolic_constant600000FB
+// CHECK:STDOUT:       inst60000137:    symbolic_constant600000FC
+// CHECK:STDOUT:       inst60000138:    symbolic_constant600000FD
+// CHECK:STDOUT:       inst60000139:    symbolic_constant600000FE
+// CHECK:STDOUT:       inst6000013A:    symbolic_constant600000FF
+// CHECK:STDOUT:       inst6000013B:    symbolic_constant60000100
+// CHECK:STDOUT:       inst6000013C:    symbolic_constant60000101
+// CHECK:STDOUT:       inst6000013D:    symbolic_constant60000102
+// CHECK:STDOUT:       inst6000013E:    symbolic_constant60000103
+// CHECK:STDOUT:       inst6000013F:    symbolic_constant60000104
+// CHECK:STDOUT:       inst60000140:    symbolic_constant60000106
+// CHECK:STDOUT:       inst60000141:    symbolic_constant60000107
+// CHECK:STDOUT:       inst60000142:    symbolic_constant60000108
+// CHECK:STDOUT:       inst60000143:    symbolic_constant60000109
+// CHECK:STDOUT:       inst60000144:    symbolic_constant6000010D
+// CHECK:STDOUT:       inst60000145:    symbolic_constant6000010A
+// CHECK:STDOUT:       inst60000146:    symbolic_constant6000010B
+// CHECK:STDOUT:       inst60000147:    symbolic_constant6000010C
+// CHECK:STDOUT:       inst60000148:    symbolic_constant6000010D
+// CHECK:STDOUT:       inst6000014A:    symbolic_constant6000010F
+// CHECK:STDOUT:       inst6000014B:    symbolic_constant6000010E
+// CHECK:STDOUT:       inst6000014C:    symbolic_constant6000010F
+// CHECK:STDOUT:       inst6000014E:    symbolic_constant60000011
+// CHECK:STDOUT:       inst60000152:    concrete_constant(inst60000025)
+// CHECK:STDOUT:       inst60000153:    concrete_constant(inst60000025)
 // CHECK:STDOUT:     symbolic_constants:
-// CHECK:STDOUT:       symbolic_constant0: {inst: inst60000013, generic: generic<none>, index: generic_inst<none>, kind: self}
-// CHECK:STDOUT:       symbolic_constant1: {inst: inst60000015, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant2: {inst: inst60000015, generic: generic60000000, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant3: {inst: inst6000001B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant4: {inst: inst6000001B, generic: generic60000000, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant5: {inst: inst6000001E, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6: {inst: inst6000001E, generic: generic60000000, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant7: {inst: inst60000029, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant8: {inst: inst60000029, generic: generic60000000, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant9: {inst: inst6000002D, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constantA: {inst: inst6000002D, generic: generic60000000, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constantB: {inst: inst60000030, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constantC: {inst: inst60000030, generic: generic60000000, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constantD: {inst: inst6000003B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constantE: {inst: inst6000003D, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000F: {inst: inst6000003D, generic: generic60000000, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000010: {inst: inst60000040, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000011: {inst: inst60000040, generic: generic60000000, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000012: {inst: inst6000004B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000013: {inst: inst60000055, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000014: {inst: inst60000056, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000015: {inst: inst60000056, generic: generic60000001, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000016: {inst: inst6000004B, generic: generic60000001, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000017: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000018: {inst: inst6000004B, generic: generic60000001, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000019: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001A: {inst: inst60000056, generic: generic60000001, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001B: {inst: inst60000062, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001C: {inst: inst60000063, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001D: {inst: inst60000064, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001E: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001F: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000020: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000021: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000022: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000023: {inst: inst6000006C, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000024: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000025: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000026: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000027: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000028: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000029: {inst: inst60000072, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002A: {inst: inst60000073, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002B: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002C: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002D: {inst: inst60000074, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002E: {inst: inst60000074, generic: generic60000003, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002F: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000030: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000031: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000032: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000033: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000034: {inst: inst60000064, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000035: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000036: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000037: {inst: inst60000064, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000038: {inst: inst60000074, generic: generic60000003, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000039: {inst: inst60000080, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003A: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003B: {inst: inst60000081, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003C: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003D: {inst: inst60000082, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003E: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003F: {inst: inst60000083, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000040: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000041: {inst: inst60000084, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000042: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000043: {inst: inst60000085, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000044: {inst: inst60000085, generic: generic60000003, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000045: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000046: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000047: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000048: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000049: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004A: {inst: inst60000085, generic: generic60000003, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004B: {inst: inst6000008C, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004C: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004D: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004E: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004F: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000050: {inst: inst600000A5, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000051: {inst: inst600000A5, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000052: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000053: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000054: {inst: inst600000A5, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000055: {inst: inst600000AA, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000056: {inst: inst600000AB, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000057: {inst: inst600000AB, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000058: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000059: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005A: {inst: inst600000AB, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005B: {inst: inst60000040, generic: generic60000004, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005C: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005D: {inst: inst600000AB, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005E: {inst: inst60000040, generic: generic60000004, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005F: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000060: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000061: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000062: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000063: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000064: {inst: inst600000C1, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000065: {inst: inst600000C2, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000066: {inst: inst600000C3, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000067: {inst: inst600000C3, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000068: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000069: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006A: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006B: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006C: {inst: inst600000CB, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006D: {inst: inst600000CB, generic: generic60000006, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006E: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006F: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000070: {inst: inst600000C3, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000071: {inst: inst600000CE, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000072: {inst: inst600000CE, generic: generic60000006, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000073: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000074: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000075: {inst: inst600000CB, generic: generic60000006, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000076: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000077: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000078: {inst: inst600000C3, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000079: {inst: inst600000CE, generic: generic60000006, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007A: {inst: inst600000D7, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007B: {inst: inst600000D8, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007C: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007D: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007E: {inst: inst600000D9, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007F: {inst: inst600000D9, generic: generic60000007, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000080: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000081: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000082: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000083: {inst: inst60000062, generic: generic60000007, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000084: {inst: inst60000063, generic: generic60000007, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000085: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000086: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000087: {inst: inst600000C3, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000088: {inst: inst60000062, generic: generic60000007, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000089: {inst: inst60000063, generic: generic60000007, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008A: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008B: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008C: {inst: inst600000C3, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008D: {inst: inst600000D9, generic: generic60000007, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008E: {inst: inst600000E8, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008F: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000090: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000091: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000092: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000093: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000094: {inst: inst60000085, generic: generic60000007, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000095: {inst: inst600000E9, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000096: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000097: {inst: inst600000EA, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000098: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000099: {inst: inst600000EB, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009A: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009B: {inst: inst600000EC, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009C: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009D: {inst: inst600000ED, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009E: {inst: inst600000ED, generic: generic60000007, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009F: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A0: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A1: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A2: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A3: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A4: {inst: inst60000085, generic: generic60000007, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A5: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A6: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A7: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A8: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A9: {inst: inst600000ED, generic: generic60000007, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AA: {inst: inst600000F9, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AB: {inst: inst600000FC, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AC: {inst: inst600000FD, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AD: {inst: inst600000FE, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AE: {inst: inst600000FE, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AF: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B0: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B1: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B2: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B3: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B4: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B5: {inst: inst60000108, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B6: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B7: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B8: {inst: inst600000C2, generic: generic60000008, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B9: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BA: {inst: inst600000FE, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BB: {inst: inst6000010B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BC: {inst: inst6000010B, generic: generic60000008, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BD: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BE: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BF: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C0: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C1: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C2: {inst: inst600000C2, generic: generic60000008, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C3: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C4: {inst: inst600000FE, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C5: {inst: inst6000010B, generic: generic60000008, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C6: {inst: inst60000116, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C7: {inst: inst60000117, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C8: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C9: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CA: {inst: inst60000118, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CB: {inst: inst60000118, generic: generic60000009, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CC: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CD: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CE: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CF: {inst: inst60000062, generic: generic60000009, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D0: {inst: inst60000063, generic: generic60000009, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D1: {inst: inst600000C1, generic: generic60000009, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D2: {inst: inst600000C2, generic: generic60000009, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D3: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D4: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D5: {inst: inst600000FE, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D6: {inst: inst60000062, generic: generic60000009, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D7: {inst: inst60000063, generic: generic60000009, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D8: {inst: inst600000C1, generic: generic60000009, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D9: {inst: inst600000C2, generic: generic60000009, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DA: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DB: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DC: {inst: inst600000FE, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DD: {inst: inst60000118, generic: generic60000009, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DE: {inst: inst6000012A, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DF: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E0: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E1: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E2: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E3: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E4: {inst: inst60000085, generic: generic60000009, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E5: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E6: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E7: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E8: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E9: {inst: inst600000ED, generic: generic60000009, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EA: {inst: inst6000012B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EB: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def11, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EC: {inst: inst6000012C, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000ED: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def12, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EE: {inst: inst6000012D, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EF: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def13, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F0: {inst: inst6000012E, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F1: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def14, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F2: {inst: inst6000012F, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F3: {inst: inst6000012F, generic: generic60000009, index: generic_inst_in_def15, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F4: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F5: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F6: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F7: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F8: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F9: {inst: inst60000085, generic: generic60000009, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FA: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FB: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FC: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FD: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FE: {inst: inst600000ED, generic: generic60000009, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FF: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def11, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000100: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def12, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000101: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def13, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000102: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def14, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000103: {inst: inst6000012F, generic: generic60000009, index: generic_inst_in_def15, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000104: {inst: inst60000140, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000105: {inst: inst600000A5, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000106: {inst: inst60000141, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000107: {inst: inst60000141, generic: generic60000000, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000108: {inst: inst60000143, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000109: {inst: inst60000144, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010A: {inst: inst60000146, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010B: {inst: inst60000143, generic: generic60000000, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010C: {inst: inst60000144, generic: generic60000000, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010D: {inst: inst60000146, generic: generic60000000, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010E: {inst: inst6000014C, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010F: {inst: inst6000014C, generic: generic60000000, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant0: {inst: inst60000012, generic: generic<none>, index: generic_inst<none>, kind: self}
+// CHECK:STDOUT:       symbolic_constant1: {inst: inst60000014, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant2: {inst: inst60000014, generic: generic60000000, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant3: {inst: inst6000001A, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant4: {inst: inst6000001A, generic: generic60000000, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant5: {inst: inst6000001D, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6: {inst: inst6000001D, generic: generic60000000, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant7: {inst: inst60000028, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant8: {inst: inst60000028, generic: generic60000000, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant9: {inst: inst6000002C, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constantA: {inst: inst6000002C, generic: generic60000000, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constantB: {inst: inst6000002F, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constantC: {inst: inst6000002F, generic: generic60000000, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constantD: {inst: inst6000003A, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000000E: {inst: inst6000003C, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000000F: {inst: inst6000003C, generic: generic60000000, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000010: {inst: inst6000003F, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000011: {inst: inst6000003F, generic: generic60000000, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000012: {inst: inst6000004A, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000013: {inst: inst60000054, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000014: {inst: inst60000055, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000015: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000016: {inst: inst6000004A, generic: generic60000001, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000017: {inst: inst60000054, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000018: {inst: inst6000004A, generic: generic60000001, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000019: {inst: inst60000054, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000001A: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000001B: {inst: inst60000061, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000001C: {inst: inst60000062, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000001D: {inst: inst60000063, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000001E: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000001F: {inst: inst60000061, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000020: {inst: inst60000061, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000021: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000022: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000023: {inst: inst6000006B, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000024: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000025: {inst: inst60000061, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000026: {inst: inst60000062, generic: generic60000002, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000027: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000028: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000029: {inst: inst60000071, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000002A: {inst: inst60000072, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000002B: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000002C: {inst: inst60000071, generic: generic60000002, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000002D: {inst: inst60000073, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000002E: {inst: inst60000073, generic: generic60000003, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000002F: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000030: {inst: inst60000071, generic: generic60000002, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000031: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000032: {inst: inst60000061, generic: generic60000003, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000033: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000034: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000035: {inst: inst60000061, generic: generic60000003, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000036: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000037: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000038: {inst: inst60000073, generic: generic60000003, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000039: {inst: inst6000007F, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000003A: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000003B: {inst: inst60000080, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000003C: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000003D: {inst: inst60000081, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000003E: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000003F: {inst: inst60000082, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000040: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000041: {inst: inst60000083, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000042: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000043: {inst: inst60000084, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000044: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000045: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000046: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000047: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000048: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000049: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000004A: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000004B: {inst: inst6000008B, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000004C: {inst: inst6000001A, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000004D: {inst: inst60000014, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000004E: {inst: inst60000014, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000004F: {inst: inst6000001A, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000050: {inst: inst600000A4, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000051: {inst: inst600000A4, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000052: {inst: inst60000014, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000053: {inst: inst6000001A, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000054: {inst: inst600000A4, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000055: {inst: inst600000A9, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000056: {inst: inst600000AA, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000057: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000058: {inst: inst600000A9, generic: generic60000004, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000059: {inst: inst6000001D, generic: generic60000005, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000005A: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000005B: {inst: inst6000003F, generic: generic60000004, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000005C: {inst: inst600000A9, generic: generic60000004, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000005D: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000005E: {inst: inst6000003F, generic: generic60000004, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000005F: {inst: inst60000014, generic: generic60000005, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000060: {inst: inst6000001A, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000061: {inst: inst60000014, generic: generic60000005, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000062: {inst: inst6000001A, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000063: {inst: inst6000001D, generic: generic60000005, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000064: {inst: inst600000C0, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000065: {inst: inst600000C1, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000066: {inst: inst600000C2, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000067: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000068: {inst: inst600000C0, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000069: {inst: inst60000061, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000006A: {inst: inst60000061, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000006B: {inst: inst600000C0, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000006C: {inst: inst600000CA, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000006D: {inst: inst600000CA, generic: generic60000006, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000006E: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000006F: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000070: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000071: {inst: inst600000CD, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000072: {inst: inst600000CD, generic: generic60000006, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000073: {inst: inst60000061, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000074: {inst: inst600000C0, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000075: {inst: inst600000CA, generic: generic60000006, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000076: {inst: inst60000062, generic: generic60000006, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000077: {inst: inst600000C1, generic: generic60000006, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000078: {inst: inst600000C2, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000079: {inst: inst600000CD, generic: generic60000006, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000007A: {inst: inst600000D6, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000007B: {inst: inst600000D7, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000007C: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000007D: {inst: inst600000D6, generic: generic60000006, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000007E: {inst: inst600000D8, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000007F: {inst: inst600000D8, generic: generic60000007, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000080: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000081: {inst: inst600000D6, generic: generic60000006, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000082: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000083: {inst: inst60000061, generic: generic60000007, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000084: {inst: inst60000062, generic: generic60000007, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000085: {inst: inst600000C0, generic: generic60000007, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000086: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000087: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000088: {inst: inst60000061, generic: generic60000007, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000089: {inst: inst60000062, generic: generic60000007, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000008A: {inst: inst600000C0, generic: generic60000007, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000008B: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000008C: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000008D: {inst: inst600000D8, generic: generic60000007, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000008E: {inst: inst600000E7, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000008F: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000090: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000091: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000092: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000093: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000094: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000095: {inst: inst600000E8, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000096: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000097: {inst: inst600000E9, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000098: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000099: {inst: inst600000EA, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000009A: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000009B: {inst: inst600000EB, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000009C: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000009D: {inst: inst600000EC, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000009E: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000009F: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A0: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A1: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A2: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A3: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A4: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A5: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A6: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A7: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A8: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000A9: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000AA: {inst: inst600000F8, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000AB: {inst: inst600000FB, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000AC: {inst: inst600000FC, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000AD: {inst: inst600000FD, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000AE: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000AF: {inst: inst600000FB, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B0: {inst: inst600000C0, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B1: {inst: inst60000061, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B2: {inst: inst60000061, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B3: {inst: inst600000C0, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B4: {inst: inst600000FB, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B5: {inst: inst60000107, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B6: {inst: inst60000107, generic: generic60000008, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B7: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B8: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000B9: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000BA: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000BB: {inst: inst6000010A, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000BC: {inst: inst6000010A, generic: generic60000008, index: generic_inst_in_decl8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000BD: {inst: inst60000061, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000BE: {inst: inst600000C0, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000BF: {inst: inst600000FB, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C0: {inst: inst60000107, generic: generic60000008, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C1: {inst: inst60000062, generic: generic60000008, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C2: {inst: inst600000C1, generic: generic60000008, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C3: {inst: inst600000FC, generic: generic60000008, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C4: {inst: inst600000FD, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C5: {inst: inst6000010A, generic: generic60000008, index: generic_inst_in_decl8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C6: {inst: inst60000115, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C7: {inst: inst60000116, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C8: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000C9: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000CA: {inst: inst60000117, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000CB: {inst: inst60000117, generic: generic60000009, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000CC: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000CD: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000CE: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000CF: {inst: inst60000061, generic: generic60000009, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D0: {inst: inst60000062, generic: generic60000009, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D1: {inst: inst600000C0, generic: generic60000009, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D2: {inst: inst600000C1, generic: generic60000009, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D3: {inst: inst600000FB, generic: generic60000009, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D4: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D5: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D6: {inst: inst60000061, generic: generic60000009, index: generic_inst_in_decl0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D7: {inst: inst60000062, generic: generic60000009, index: generic_inst_in_decl1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D8: {inst: inst600000C0, generic: generic60000009, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000D9: {inst: inst600000C1, generic: generic60000009, index: generic_inst_in_decl3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000DA: {inst: inst600000FB, generic: generic60000009, index: generic_inst_in_decl4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000DB: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000DC: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000DD: {inst: inst60000117, generic: generic60000009, index: generic_inst_in_decl7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000DE: {inst: inst60000129, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000DF: {inst: inst60000129, generic: generic60000009, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E0: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E1: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E2: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E3: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E4: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E5: {inst: inst600000E8, generic: generic60000009, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E6: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E7: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E8: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000E9: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000EA: {inst: inst6000012A, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000EB: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def11, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000EC: {inst: inst6000012B, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000ED: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def12, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000EE: {inst: inst6000012C, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000EF: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def13, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F0: {inst: inst6000012D, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F1: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def14, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F2: {inst: inst6000012E, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F3: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def15, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F4: {inst: inst60000129, generic: generic60000009, index: generic_inst_in_def0, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F5: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def1, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F6: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F7: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F8: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000F9: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000FA: {inst: inst600000E8, generic: generic60000009, index: generic_inst_in_def6, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000FB: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000FC: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def8, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000FD: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def9, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000FE: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def10, kind: checked}
+// CHECK:STDOUT:       symbolic_constant600000FF: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def11, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000100: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def12, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000101: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def13, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000102: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def14, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000103: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def15, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000104: {inst: inst6000013F, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000105: {inst: inst600000A4, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000106: {inst: inst60000140, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000107: {inst: inst60000140, generic: generic60000000, index: generic_inst_in_def2, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000108: {inst: inst60000142, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000109: {inst: inst60000143, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000010A: {inst: inst60000145, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000010B: {inst: inst60000142, generic: generic60000000, index: generic_inst_in_def3, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000010C: {inst: inst60000143, generic: generic60000000, index: generic_inst_in_def4, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000010D: {inst: inst60000145, generic: generic60000000, index: generic_inst_in_def5, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000010E: {inst: inst6000014B, generic: generic<none>, index: generic_inst<none>, kind: checked}
+// CHECK:STDOUT:       symbolic_constant6000010F: {inst: inst6000014B, generic: generic60000000, index: generic_inst_in_def6, kind: checked}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst60000038
+// CHECK:STDOUT:       0:               inst60000037
 // CHECK:STDOUT:     imports:
-// CHECK:STDOUT:       0:               inst60000010
-// CHECK:STDOUT:       1:               inst60000048
-// CHECK:STDOUT:       2:               inst60000049
-// CHECK:STDOUT:       3:               inst6000004C
-// CHECK:STDOUT:       4:               inst6000004D
-// CHECK:STDOUT:       5:               inst6000004E
-// CHECK:STDOUT:       6:               inst60000050
-// CHECK:STDOUT:       7:               inst60000052
-// CHECK:STDOUT:       8:               inst60000057
-// CHECK:STDOUT:       9:               inst60000058
-// CHECK:STDOUT:       10:              inst60000059
-// CHECK:STDOUT:       11:              inst6000005A
-// CHECK:STDOUT:       12:              inst6000005B
-// CHECK:STDOUT:       13:              inst60000060
-// CHECK:STDOUT:       14:              inst60000061
-// CHECK:STDOUT:       15:              inst60000066
-// CHECK:STDOUT:       16:              inst60000067
-// CHECK:STDOUT:       17:              inst60000068
-// CHECK:STDOUT:       18:              inst60000069
-// CHECK:STDOUT:       19:              inst6000006A
-// CHECK:STDOUT:       20:              inst6000006B
-// CHECK:STDOUT:       21:              inst60000071
-// CHECK:STDOUT:       22:              inst60000075
-// CHECK:STDOUT:       23:              inst60000076
-// CHECK:STDOUT:       24:              inst60000077
-// CHECK:STDOUT:       25:              inst60000078
-// CHECK:STDOUT:       26:              inst60000079
-// CHECK:STDOUT:       27:              inst6000008D
-// CHECK:STDOUT:       28:              inst6000008E
-// CHECK:STDOUT:       29:              inst6000008F
-// CHECK:STDOUT:       30:              inst60000090
-// CHECK:STDOUT:       31:              inst60000091
-// CHECK:STDOUT:       32:              inst60000092
-// CHECK:STDOUT:       33:              inst60000093
-// CHECK:STDOUT:       34:              inst60000094
-// CHECK:STDOUT:       35:              inst60000095
-// CHECK:STDOUT:       36:              inst60000096
-// CHECK:STDOUT:       37:              inst60000097
-// CHECK:STDOUT:       38:              inst60000098
-// CHECK:STDOUT:       39:              inst60000099
-// CHECK:STDOUT:       40:              inst6000009A
-// CHECK:STDOUT:       41:              inst6000009B
-// CHECK:STDOUT:       42:              inst6000009C
-// CHECK:STDOUT:       43:              inst6000009D
-// CHECK:STDOUT:       44:              inst6000009E
-// CHECK:STDOUT:       45:              inst6000009F
-// CHECK:STDOUT:       46:              inst600000A0
-// CHECK:STDOUT:       47:              inst600000A1
-// CHECK:STDOUT:       48:              inst600000A2
-// CHECK:STDOUT:       49:              inst600000A3
-// CHECK:STDOUT:       50:              inst600000A4
-// CHECK:STDOUT:       51:              inst600000A9
-// CHECK:STDOUT:       52:              inst600000AC
-// CHECK:STDOUT:       53:              inst600000AD
-// CHECK:STDOUT:       54:              inst600000AE
-// CHECK:STDOUT:       55:              inst600000AF
-// CHECK:STDOUT:       56:              inst600000B0
-// CHECK:STDOUT:       57:              inst600000B7
-// CHECK:STDOUT:       58:              inst600000B8
-// CHECK:STDOUT:       59:              inst600000B9
-// CHECK:STDOUT:       60:              inst600000BA
-// CHECK:STDOUT:       61:              inst600000BB
-// CHECK:STDOUT:       62:              inst600000BC
-// CHECK:STDOUT:       63:              inst600000BD
-// CHECK:STDOUT:       64:              inst600000BE
-// CHECK:STDOUT:       65:              inst600000BF
-// CHECK:STDOUT:       66:              inst600000C0
-// CHECK:STDOUT:       67:              inst600000C4
-// CHECK:STDOUT:       68:              inst600000C5
-// CHECK:STDOUT:       69:              inst600000C6
-// CHECK:STDOUT:       70:              inst600000C7
-// CHECK:STDOUT:       71:              inst600000C8
-// CHECK:STDOUT:       72:              inst600000C9
-// CHECK:STDOUT:       73:              inst600000CC
-// CHECK:STDOUT:       74:              inst600000CD
-// CHECK:STDOUT:       75:              inst600000D6
-// CHECK:STDOUT:       76:              inst600000DA
-// CHECK:STDOUT:       77:              inst600000DB
-// CHECK:STDOUT:       78:              inst600000DC
-// CHECK:STDOUT:       79:              inst600000DD
-// CHECK:STDOUT:       80:              inst600000DE
-// CHECK:STDOUT:       81:              inst600000DF
-// CHECK:STDOUT:       82:              inst600000FA
-// CHECK:STDOUT:       83:              inst600000FB
-// CHECK:STDOUT:       84:              inst600000FF
-// CHECK:STDOUT:       85:              inst60000100
-// CHECK:STDOUT:       86:              inst60000101
-// CHECK:STDOUT:       87:              inst60000102
-// CHECK:STDOUT:       88:              inst60000103
-// CHECK:STDOUT:       89:              inst60000104
-// CHECK:STDOUT:       90:              inst60000105
-// CHECK:STDOUT:       91:              inst60000106
-// CHECK:STDOUT:       92:              inst60000109
-// CHECK:STDOUT:       93:              inst6000010A
-// CHECK:STDOUT:       94:              inst60000115
-// CHECK:STDOUT:       95:              inst60000119
-// CHECK:STDOUT:       96:              inst6000011A
-// CHECK:STDOUT:       97:              inst6000011B
-// CHECK:STDOUT:       98:              inst6000011C
-// CHECK:STDOUT:       99:              inst6000011D
-// CHECK:STDOUT:       100:             inst6000011E
-// CHECK:STDOUT:       101:             inst6000011F
+// CHECK:STDOUT:       0:               inst6000000F
+// CHECK:STDOUT:       1:               inst60000047
+// CHECK:STDOUT:       2:               inst60000048
+// CHECK:STDOUT:       3:               inst6000004B
+// CHECK:STDOUT:       4:               inst6000004C
+// CHECK:STDOUT:       5:               inst6000004D
+// CHECK:STDOUT:       6:               inst6000004F
+// CHECK:STDOUT:       7:               inst60000051
+// CHECK:STDOUT:       8:               inst60000056
+// CHECK:STDOUT:       9:               inst60000057
+// CHECK:STDOUT:       10:              inst60000058
+// CHECK:STDOUT:       11:              inst60000059
+// CHECK:STDOUT:       12:              inst6000005A
+// CHECK:STDOUT:       13:              inst6000005F
+// CHECK:STDOUT:       14:              inst60000060
+// CHECK:STDOUT:       15:              inst60000065
+// CHECK:STDOUT:       16:              inst60000066
+// CHECK:STDOUT:       17:              inst60000067
+// CHECK:STDOUT:       18:              inst60000068
+// CHECK:STDOUT:       19:              inst60000069
+// CHECK:STDOUT:       20:              inst6000006A
+// CHECK:STDOUT:       21:              inst60000070
+// CHECK:STDOUT:       22:              inst60000074
+// CHECK:STDOUT:       23:              inst60000075
+// CHECK:STDOUT:       24:              inst60000076
+// CHECK:STDOUT:       25:              inst60000077
+// CHECK:STDOUT:       26:              inst60000078
+// CHECK:STDOUT:       27:              inst6000008C
+// CHECK:STDOUT:       28:              inst6000008D
+// CHECK:STDOUT:       29:              inst6000008E
+// CHECK:STDOUT:       30:              inst6000008F
+// CHECK:STDOUT:       31:              inst60000090
+// CHECK:STDOUT:       32:              inst60000091
+// CHECK:STDOUT:       33:              inst60000092
+// CHECK:STDOUT:       34:              inst60000093
+// CHECK:STDOUT:       35:              inst60000094
+// CHECK:STDOUT:       36:              inst60000095
+// CHECK:STDOUT:       37:              inst60000096
+// CHECK:STDOUT:       38:              inst60000097
+// CHECK:STDOUT:       39:              inst60000098
+// CHECK:STDOUT:       40:              inst60000099
+// CHECK:STDOUT:       41:              inst6000009A
+// CHECK:STDOUT:       42:              inst6000009B
+// CHECK:STDOUT:       43:              inst6000009C
+// CHECK:STDOUT:       44:              inst6000009D
+// CHECK:STDOUT:       45:              inst6000009E
+// CHECK:STDOUT:       46:              inst6000009F
+// CHECK:STDOUT:       47:              inst600000A0
+// CHECK:STDOUT:       48:              inst600000A1
+// CHECK:STDOUT:       49:              inst600000A2
+// CHECK:STDOUT:       50:              inst600000A3
+// CHECK:STDOUT:       51:              inst600000A8
+// CHECK:STDOUT:       52:              inst600000AB
+// CHECK:STDOUT:       53:              inst600000AC
+// CHECK:STDOUT:       54:              inst600000AD
+// CHECK:STDOUT:       55:              inst600000AE
+// CHECK:STDOUT:       56:              inst600000AF
+// CHECK:STDOUT:       57:              inst600000B6
+// CHECK:STDOUT:       58:              inst600000B7
+// CHECK:STDOUT:       59:              inst600000B8
+// CHECK:STDOUT:       60:              inst600000B9
+// CHECK:STDOUT:       61:              inst600000BA
+// CHECK:STDOUT:       62:              inst600000BB
+// CHECK:STDOUT:       63:              inst600000BC
+// CHECK:STDOUT:       64:              inst600000BD
+// CHECK:STDOUT:       65:              inst600000BE
+// CHECK:STDOUT:       66:              inst600000BF
+// CHECK:STDOUT:       67:              inst600000C3
+// CHECK:STDOUT:       68:              inst600000C4
+// CHECK:STDOUT:       69:              inst600000C5
+// CHECK:STDOUT:       70:              inst600000C6
+// CHECK:STDOUT:       71:              inst600000C7
+// CHECK:STDOUT:       72:              inst600000C8
+// CHECK:STDOUT:       73:              inst600000CB
+// CHECK:STDOUT:       74:              inst600000CC
+// CHECK:STDOUT:       75:              inst600000D5
+// CHECK:STDOUT:       76:              inst600000D9
+// CHECK:STDOUT:       77:              inst600000DA
+// CHECK:STDOUT:       78:              inst600000DB
+// CHECK:STDOUT:       79:              inst600000DC
+// CHECK:STDOUT:       80:              inst600000DD
+// CHECK:STDOUT:       81:              inst600000DE
+// CHECK:STDOUT:       82:              inst600000F9
+// CHECK:STDOUT:       83:              inst600000FA
+// CHECK:STDOUT:       84:              inst600000FE
+// CHECK:STDOUT:       85:              inst600000FF
+// CHECK:STDOUT:       86:              inst60000100
+// CHECK:STDOUT:       87:              inst60000101
+// CHECK:STDOUT:       88:              inst60000102
+// CHECK:STDOUT:       89:              inst60000103
+// CHECK:STDOUT:       90:              inst60000104
+// CHECK:STDOUT:       91:              inst60000105
+// CHECK:STDOUT:       92:              inst60000108
+// CHECK:STDOUT:       93:              inst60000109
+// CHECK:STDOUT:       94:              inst60000114
+// CHECK:STDOUT:       95:              inst60000118
+// CHECK:STDOUT:       96:              inst60000119
+// CHECK:STDOUT:       97:              inst6000011A
+// CHECK:STDOUT:       98:              inst6000011B
+// CHECK:STDOUT:       99:              inst6000011C
+// CHECK:STDOUT:       100:             inst6000011D
+// CHECK:STDOUT:       101:             inst6000011E
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
-// CHECK:STDOUT:       0:               inst60000012
+// CHECK:STDOUT:       0:               inst60000011
 // CHECK:STDOUT:     inst_block60000005:
-// CHECK:STDOUT:       0:               inst60000018
+// CHECK:STDOUT:       0:               inst60000017
 // CHECK:STDOUT:     inst_block60000006:
-// CHECK:STDOUT:       0:               inst60000019
-// CHECK:STDOUT:       1:               inst6000001A
+// CHECK:STDOUT:       0:               inst60000018
+// CHECK:STDOUT:       1:               inst60000019
 // CHECK:STDOUT:     inst_block60000007:
-// CHECK:STDOUT:       0:               inst60000021
+// CHECK:STDOUT:       0:               inst60000020
 // CHECK:STDOUT:     inst_block60000008:
-// CHECK:STDOUT:       0:               inst60000023
-// CHECK:STDOUT:       1:               inst60000025
+// CHECK:STDOUT:       0:               inst60000022
+// CHECK:STDOUT:       1:               inst60000024
 // CHECK:STDOUT:     inst_block60000009:
 // CHECK:STDOUT:       0:               inst(TypeType)
-// CHECK:STDOUT:       1:               inst60000024
+// CHECK:STDOUT:       1:               inst60000023
 // CHECK:STDOUT:     inst_block6000000A:
-// CHECK:STDOUT:       0:               inst6000001B
-// CHECK:STDOUT:       1:               inst60000026
+// CHECK:STDOUT:       0:               inst6000001A
+// CHECK:STDOUT:       1:               inst60000025
 // CHECK:STDOUT:     inst_block6000000B:
-// CHECK:STDOUT:       0:               inst6000001C
-// CHECK:STDOUT:       1:               inst60000026
-// CHECK:STDOUT:     inst_block6000000C:
 // CHECK:STDOUT:       0:               inst6000001B
-// CHECK:STDOUT:       1:               inst6000002C
+// CHECK:STDOUT:       1:               inst60000025
+// CHECK:STDOUT:     inst_block6000000C:
+// CHECK:STDOUT:       0:               inst6000001A
+// CHECK:STDOUT:       1:               inst6000002B
 // CHECK:STDOUT:     inst_block6000000D:
-// CHECK:STDOUT:       0:               inst6000001B
-// CHECK:STDOUT:       1:               inst60000024
+// CHECK:STDOUT:       0:               inst6000001A
+// CHECK:STDOUT:       1:               inst60000023
 // CHECK:STDOUT:     inst_block6000000E:
-// CHECK:STDOUT:       0:               inst6000001C
-// CHECK:STDOUT:       1:               inst60000024
+// CHECK:STDOUT:       0:               inst6000001B
+// CHECK:STDOUT:       1:               inst60000023
 // CHECK:STDOUT:     inst_block6000000F:
-// CHECK:STDOUT:       0:               inst60000034
-// CHECK:STDOUT:       1:               inst60000036
+// CHECK:STDOUT:       0:               inst60000033
+// CHECK:STDOUT:       1:               inst60000035
 // CHECK:STDOUT:     inst_block60000010:
-// CHECK:STDOUT:       0:               inst60000018
-// CHECK:STDOUT:       1:               inst6000001F
-// CHECK:STDOUT:       2:               inst60000021
-// CHECK:STDOUT:       3:               inst60000031
-// CHECK:STDOUT:       4:               inst60000033
+// CHECK:STDOUT:       0:               inst60000017
+// CHECK:STDOUT:       1:               inst6000001E
+// CHECK:STDOUT:       2:               inst60000020
+// CHECK:STDOUT:       3:               inst60000030
+// CHECK:STDOUT:       4:               inst60000032
 // CHECK:STDOUT:     inst_block60000011:
-// CHECK:STDOUT:       0:               inst60000022
-// CHECK:STDOUT:       1:               inst60000023
-// CHECK:STDOUT:       2:               inst60000025
-// CHECK:STDOUT:       3:               inst60000028
-// CHECK:STDOUT:       4:               inst6000002C
-// CHECK:STDOUT:       5:               inst6000002E
-// CHECK:STDOUT:       6:               inst60000012
-// CHECK:STDOUT:       7:               inst60000014
-// CHECK:STDOUT:       8:               inst60000034
-// CHECK:STDOUT:       9:               inst60000035
-// CHECK:STDOUT:       10:              inst6000001D
-// CHECK:STDOUT:       11:              inst60000036
-// CHECK:STDOUT:       12:              inst60000037
+// CHECK:STDOUT:       0:               inst60000021
+// CHECK:STDOUT:       1:               inst60000022
+// CHECK:STDOUT:       2:               inst60000024
+// CHECK:STDOUT:       3:               inst60000027
+// CHECK:STDOUT:       4:               inst6000002B
+// CHECK:STDOUT:       5:               inst6000002D
+// CHECK:STDOUT:       6:               inst60000011
+// CHECK:STDOUT:       7:               inst60000013
+// CHECK:STDOUT:       8:               inst60000033
+// CHECK:STDOUT:       9:               inst60000034
+// CHECK:STDOUT:       10:              inst6000001C
+// CHECK:STDOUT:       11:              inst60000035
+// CHECK:STDOUT:       12:              inst60000036
 // CHECK:STDOUT:     inst_block60000012:
-// CHECK:STDOUT:       0:               inst60000014
+// CHECK:STDOUT:       0:               inst60000013
 // CHECK:STDOUT:     inst_block60000013:
-// CHECK:STDOUT:       0:               inst60000015
+// CHECK:STDOUT:       0:               inst60000014
 // CHECK:STDOUT:     inst_block60000014:
-// CHECK:STDOUT:       0:               inst60000016
-// CHECK:STDOUT:       1:               inst6000001C
-// CHECK:STDOUT:       2:               inst60000020
-// CHECK:STDOUT:       3:               inst6000002A
-// CHECK:STDOUT:       4:               inst6000002F
-// CHECK:STDOUT:       5:               inst60000032
-// CHECK:STDOUT:     inst_block60000015:
 // CHECK:STDOUT:       0:               inst60000015
 // CHECK:STDOUT:       1:               inst6000001B
-// CHECK:STDOUT:       2:               inst6000001E
+// CHECK:STDOUT:       2:               inst6000001F
 // CHECK:STDOUT:       3:               inst60000029
-// CHECK:STDOUT:       4:               inst6000002D
-// CHECK:STDOUT:       5:               inst60000030
+// CHECK:STDOUT:       4:               inst6000002E
+// CHECK:STDOUT:       5:               inst60000031
+// CHECK:STDOUT:     inst_block60000015:
+// CHECK:STDOUT:       0:               inst60000014
+// CHECK:STDOUT:       1:               inst6000001A
+// CHECK:STDOUT:       2:               inst6000001D
+// CHECK:STDOUT:       3:               inst60000028
+// CHECK:STDOUT:       4:               inst6000002C
+// CHECK:STDOUT:       5:               inst6000002F
 // CHECK:STDOUT:     inst_block60000016:
-// CHECK:STDOUT:       0:               inst60000042
-// CHECK:STDOUT:       1:               inst60000043
-// CHECK:STDOUT:       2:               inst60000044
-// CHECK:STDOUT:       3:               inst60000145
-// CHECK:STDOUT:       4:               inst6000014A
-// CHECK:STDOUT:       5:               inst6000014B
-// CHECK:STDOUT:       6:               inst6000014E
-// CHECK:STDOUT:       7:               inst60000150
-// CHECK:STDOUT:       8:               inst60000046
-// CHECK:STDOUT:       9:               inst60000151
-// CHECK:STDOUT:       10:              inst60000152
-// CHECK:STDOUT:       11:              inst60000153
-// CHECK:STDOUT:       12:              inst60000154
-// CHECK:STDOUT:       13:              inst60000155
-// CHECK:STDOUT:       14:              inst60000156
-// CHECK:STDOUT:       15:              inst60000157
+// CHECK:STDOUT:       0:               inst60000041
+// CHECK:STDOUT:       1:               inst60000042
+// CHECK:STDOUT:       2:               inst60000043
+// CHECK:STDOUT:       3:               inst60000144
+// CHECK:STDOUT:       4:               inst60000149
+// CHECK:STDOUT:       5:               inst6000014A
+// CHECK:STDOUT:       6:               inst6000014D
+// CHECK:STDOUT:       7:               inst6000014F
+// CHECK:STDOUT:       8:               inst60000045
+// CHECK:STDOUT:       9:               inst60000150
+// CHECK:STDOUT:       10:              inst60000151
+// CHECK:STDOUT:       11:              inst60000152
+// CHECK:STDOUT:       12:              inst60000153
+// CHECK:STDOUT:       13:              inst60000154
+// CHECK:STDOUT:       14:              inst60000155
+// CHECK:STDOUT:       15:              inst60000156
 // CHECK:STDOUT:     inst_block60000017:
-// CHECK:STDOUT:       0:               inst60000042
-// CHECK:STDOUT:       1:               inst60000043
+// CHECK:STDOUT:       0:               inst60000041
+// CHECK:STDOUT:       1:               inst60000042
 // CHECK:STDOUT:     inst_block60000018:
-// CHECK:STDOUT:       0:               inst6000004E
+// CHECK:STDOUT:       0:               inst6000004D
 // CHECK:STDOUT:     inst_block60000019:
-// CHECK:STDOUT:       0:               inst6000005A
+// CHECK:STDOUT:       0:               inst60000059
 // CHECK:STDOUT:     inst_block6000001A:
-// CHECK:STDOUT:       0:               inst6000005B
+// CHECK:STDOUT:       0:               inst6000005A
 // CHECK:STDOUT:     inst_block6000001B:
-// CHECK:STDOUT:       0:               inst6000005C
-// CHECK:STDOUT:       1:               inst6000005D
-// CHECK:STDOUT:       2:               inst6000005E
+// CHECK:STDOUT:       0:               inst6000005B
+// CHECK:STDOUT:       1:               inst6000005C
+// CHECK:STDOUT:       2:               inst6000005D
 // CHECK:STDOUT:     inst_block6000001C:
-// CHECK:STDOUT:       0:               inst6000004B
+// CHECK:STDOUT:       0:               inst6000004A
 // CHECK:STDOUT:     inst_block6000001D:
-// CHECK:STDOUT:       0:               inst6000004B
-// CHECK:STDOUT:       1:               inst60000055
-// CHECK:STDOUT:       2:               inst60000056
+// CHECK:STDOUT:       0:               inst6000004A
+// CHECK:STDOUT:       1:               inst60000054
+// CHECK:STDOUT:       2:               inst60000055
 // CHECK:STDOUT:     inst_block6000001E:
-// CHECK:STDOUT:       0:               inst60000066
+// CHECK:STDOUT:       0:               inst60000065
 // CHECK:STDOUT:     inst_block6000001F:
-// CHECK:STDOUT:       0:               inst60000067
+// CHECK:STDOUT:       0:               inst60000066
 // CHECK:STDOUT:     inst_block60000020:
-// CHECK:STDOUT:       0:               inst6000006A
+// CHECK:STDOUT:       0:               inst60000069
 // CHECK:STDOUT:     inst_block60000021:
-// CHECK:STDOUT:       0:               inst60000062
+// CHECK:STDOUT:       0:               inst60000061
 // CHECK:STDOUT:     inst_block60000022:
-// CHECK:STDOUT:       0:               inst6000006D
+// CHECK:STDOUT:       0:               inst6000006C
 // CHECK:STDOUT:     inst_block60000023:
-// CHECK:STDOUT:       0:               inst6000006D
-// CHECK:STDOUT:       1:               inst6000006E
-// CHECK:STDOUT:       2:               inst6000006F
-// CHECK:STDOUT:       3:               inst60000070
+// CHECK:STDOUT:       0:               inst6000006C
+// CHECK:STDOUT:       1:               inst6000006D
+// CHECK:STDOUT:       2:               inst6000006E
+// CHECK:STDOUT:       3:               inst6000006F
 // CHECK:STDOUT:     inst_block60000024:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst60000063
-// CHECK:STDOUT:       2:               inst60000064
-// CHECK:STDOUT:       3:               inst6000006C
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst60000062
+// CHECK:STDOUT:       2:               inst60000063
+// CHECK:STDOUT:       3:               inst6000006B
 // CHECK:STDOUT:     inst_block60000025:
-// CHECK:STDOUT:       0:               inst60000078
+// CHECK:STDOUT:       0:               inst60000077
 // CHECK:STDOUT:     inst_block60000026:
-// CHECK:STDOUT:       0:               inst60000079
+// CHECK:STDOUT:       0:               inst60000078
 // CHECK:STDOUT:     inst_block60000027:
-// CHECK:STDOUT:       0:               inst6000006D
+// CHECK:STDOUT:       0:               inst6000006C
 // CHECK:STDOUT:     inst_block60000028:
-// CHECK:STDOUT:       0:               inst6000007A
-// CHECK:STDOUT:       1:               inst6000007B
+// CHECK:STDOUT:       0:               inst60000079
+// CHECK:STDOUT:       1:               inst6000007A
 // CHECK:STDOUT:     inst_block60000029:
-// CHECK:STDOUT:       0:               inst6000007C
-// CHECK:STDOUT:       1:               inst6000007D
-// CHECK:STDOUT:       2:               inst6000007E
-// CHECK:STDOUT:       3:               inst6000007F
+// CHECK:STDOUT:       0:               inst6000007B
+// CHECK:STDOUT:       1:               inst6000007C
+// CHECK:STDOUT:       2:               inst6000007D
+// CHECK:STDOUT:       3:               inst6000007E
 // CHECK:STDOUT:     inst_block6000002A:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst60000063
-// CHECK:STDOUT:       2:               inst60000064
-// CHECK:STDOUT:       3:               inst60000074
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst60000062
+// CHECK:STDOUT:       2:               inst60000063
+// CHECK:STDOUT:       3:               inst60000073
 // CHECK:STDOUT:     inst_block6000002B:
-// CHECK:STDOUT:       0:               inst6000007C
+// CHECK:STDOUT:       0:               inst6000007B
 // CHECK:STDOUT:     inst_block6000002C:
-// CHECK:STDOUT:       0:               inst60000086
-// CHECK:STDOUT:       1:               inst60000087
-// CHECK:STDOUT:       2:               inst60000088
-// CHECK:STDOUT:       3:               inst60000089
-// CHECK:STDOUT:       4:               inst6000008A
-// CHECK:STDOUT:       5:               inst6000008B
+// CHECK:STDOUT:       0:               inst60000085
+// CHECK:STDOUT:       1:               inst60000086
+// CHECK:STDOUT:       2:               inst60000087
+// CHECK:STDOUT:       3:               inst60000088
+// CHECK:STDOUT:       4:               inst60000089
+// CHECK:STDOUT:       5:               inst6000008A
 // CHECK:STDOUT:     inst_block6000002D:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst60000063
-// CHECK:STDOUT:       2:               inst6000008C
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst60000062
+// CHECK:STDOUT:       2:               inst6000008B
 // CHECK:STDOUT:     inst_block6000002E:
-// CHECK:STDOUT:       0:               inst60000072
-// CHECK:STDOUT:       1:               inst60000073
+// CHECK:STDOUT:       0:               inst60000071
+// CHECK:STDOUT:       1:               inst60000072
 // CHECK:STDOUT:     inst_block6000002F:
-// CHECK:STDOUT:       0:               inst6000009F
+// CHECK:STDOUT:       0:               inst6000009E
 // CHECK:STDOUT:     inst_block60000030:
-// CHECK:STDOUT:       0:               inst600000A0
+// CHECK:STDOUT:       0:               inst6000009F
 // CHECK:STDOUT:     inst_block60000031:
-// CHECK:STDOUT:       0:               inst600000A3
+// CHECK:STDOUT:       0:               inst600000A2
 // CHECK:STDOUT:     inst_block60000032:
-// CHECK:STDOUT:       0:               inst600000A6
+// CHECK:STDOUT:       0:               inst600000A5
 // CHECK:STDOUT:     inst_block60000033:
-// CHECK:STDOUT:       0:               inst600000A6
-// CHECK:STDOUT:       1:               inst600000A7
-// CHECK:STDOUT:       2:               inst600000A8
+// CHECK:STDOUT:       0:               inst600000A5
+// CHECK:STDOUT:       1:               inst600000A6
+// CHECK:STDOUT:       2:               inst600000A7
 // CHECK:STDOUT:     inst_block60000034:
-// CHECK:STDOUT:       0:               inst60000015
-// CHECK:STDOUT:       1:               inst6000001B
-// CHECK:STDOUT:       2:               inst600000A5
+// CHECK:STDOUT:       0:               inst60000014
+// CHECK:STDOUT:       1:               inst6000001A
+// CHECK:STDOUT:       2:               inst600000A4
 // CHECK:STDOUT:     inst_block60000035:
-// CHECK:STDOUT:       0:               inst600000AF
+// CHECK:STDOUT:       0:               inst600000AE
 // CHECK:STDOUT:     inst_block60000036:
-// CHECK:STDOUT:       0:               inst600000B0
+// CHECK:STDOUT:       0:               inst600000AF
 // CHECK:STDOUT:     inst_block60000037:
-// CHECK:STDOUT:       0:               inst600000A6
+// CHECK:STDOUT:       0:               inst600000A5
 // CHECK:STDOUT:     inst_block60000038:
-// CHECK:STDOUT:       0:               inst600000B1
-// CHECK:STDOUT:       1:               inst600000B2
-// CHECK:STDOUT:       2:               inst600000B3
+// CHECK:STDOUT:       0:               inst600000B0
+// CHECK:STDOUT:       1:               inst600000B1
+// CHECK:STDOUT:       2:               inst600000B2
 // CHECK:STDOUT:     inst_block60000039:
-// CHECK:STDOUT:       0:               inst600000B4
-// CHECK:STDOUT:       1:               inst600000B5
-// CHECK:STDOUT:       2:               inst600000B6
+// CHECK:STDOUT:       0:               inst600000B3
+// CHECK:STDOUT:       1:               inst600000B4
+// CHECK:STDOUT:       2:               inst600000B5
 // CHECK:STDOUT:     inst_block6000003A:
-// CHECK:STDOUT:       0:               inst60000015
-// CHECK:STDOUT:       1:               inst6000001B
-// CHECK:STDOUT:       2:               inst6000001E
+// CHECK:STDOUT:       0:               inst60000014
+// CHECK:STDOUT:       1:               inst6000001A
+// CHECK:STDOUT:       2:               inst6000001D
 // CHECK:STDOUT:     inst_block6000003B:
-// CHECK:STDOUT:       0:               inst60000063
-// CHECK:STDOUT:       1:               inst600000C2
+// CHECK:STDOUT:       0:               inst60000062
+// CHECK:STDOUT:       1:               inst600000C1
 // CHECK:STDOUT:     inst_block6000003C:
-// CHECK:STDOUT:       0:               inst600000C5
-// CHECK:STDOUT:       1:               inst600000C4
+// CHECK:STDOUT:       0:               inst600000C4
+// CHECK:STDOUT:       1:               inst600000C3
 // CHECK:STDOUT:     inst_block6000003D:
-// CHECK:STDOUT:       0:               inst600000C6
-// CHECK:STDOUT:       1:               inst600000C7
+// CHECK:STDOUT:       0:               inst600000C5
+// CHECK:STDOUT:       1:               inst600000C6
 // CHECK:STDOUT:     inst_block6000003E:
-// CHECK:STDOUT:       0:               inst6000004A
-// CHECK:STDOUT:       1:               inst6000004A
+// CHECK:STDOUT:       0:               inst60000049
+// CHECK:STDOUT:       1:               inst60000049
 // CHECK:STDOUT:     inst_block6000003F:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst600000C1
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst600000C0
 // CHECK:STDOUT:     inst_block60000040:
-// CHECK:STDOUT:       0:               inst600000CC
+// CHECK:STDOUT:       0:               inst600000CB
 // CHECK:STDOUT:     inst_block60000041:
-// CHECK:STDOUT:       0:               inst600000CF
-// CHECK:STDOUT:       1:               inst600000D0
+// CHECK:STDOUT:       0:               inst600000CE
+// CHECK:STDOUT:       1:               inst600000CF
 // CHECK:STDOUT:     inst_block60000042:
-// CHECK:STDOUT:       0:               inst600000D2
-// CHECK:STDOUT:       1:               inst600000D3
+// CHECK:STDOUT:       0:               inst600000D1
+// CHECK:STDOUT:       1:               inst600000D2
 // CHECK:STDOUT:     inst_block60000043:
-// CHECK:STDOUT:       0:               inst600000CF
-// CHECK:STDOUT:       1:               inst600000D0
+// CHECK:STDOUT:       0:               inst600000CE
+// CHECK:STDOUT:       1:               inst600000CF
 // CHECK:STDOUT:     inst_block60000044:
-// CHECK:STDOUT:       0:               inst600000CF
-// CHECK:STDOUT:       1:               inst600000D0
-// CHECK:STDOUT:       2:               inst600000D1
-// CHECK:STDOUT:       3:               inst600000D2
-// CHECK:STDOUT:       4:               inst600000D3
-// CHECK:STDOUT:       5:               inst600000D4
-// CHECK:STDOUT:       6:               inst600000D5
+// CHECK:STDOUT:       0:               inst600000CE
+// CHECK:STDOUT:       1:               inst600000CF
+// CHECK:STDOUT:       2:               inst600000D0
+// CHECK:STDOUT:       3:               inst600000D1
+// CHECK:STDOUT:       4:               inst600000D2
+// CHECK:STDOUT:       5:               inst600000D3
+// CHECK:STDOUT:       6:               inst600000D4
 // CHECK:STDOUT:     inst_block60000045:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst600000C1
-// CHECK:STDOUT:       2:               inst600000CB
-// CHECK:STDOUT:       3:               inst60000063
-// CHECK:STDOUT:       4:               inst600000C2
-// CHECK:STDOUT:       5:               inst600000C3
-// CHECK:STDOUT:       6:               inst600000CE
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst600000C0
+// CHECK:STDOUT:       2:               inst600000CA
+// CHECK:STDOUT:       3:               inst60000062
+// CHECK:STDOUT:       4:               inst600000C1
+// CHECK:STDOUT:       5:               inst600000C2
+// CHECK:STDOUT:       6:               inst600000CD
 // CHECK:STDOUT:     inst_block60000046:
-// CHECK:STDOUT:       0:               inst600000DD
+// CHECK:STDOUT:       0:               inst600000DC
 // CHECK:STDOUT:     inst_block60000047:
-// CHECK:STDOUT:       0:               inst600000DE
-// CHECK:STDOUT:       1:               inst600000DF
+// CHECK:STDOUT:       0:               inst600000DD
+// CHECK:STDOUT:       1:               inst600000DE
 // CHECK:STDOUT:     inst_block60000048:
-// CHECK:STDOUT:       0:               inst600000CF
-// CHECK:STDOUT:       1:               inst600000D0
+// CHECK:STDOUT:       0:               inst600000CE
+// CHECK:STDOUT:       1:               inst600000CF
 // CHECK:STDOUT:     inst_block60000049:
-// CHECK:STDOUT:       0:               inst600000E0
-// CHECK:STDOUT:       1:               inst600000E1
+// CHECK:STDOUT:       0:               inst600000DF
+// CHECK:STDOUT:       1:               inst600000E0
 // CHECK:STDOUT:     inst_block6000004A:
-// CHECK:STDOUT:       0:               inst600000E3
-// CHECK:STDOUT:       1:               inst600000E5
-// CHECK:STDOUT:     inst_block6000004B:
 // CHECK:STDOUT:       0:               inst600000E2
-// CHECK:STDOUT:       1:               inst600000E3
-// CHECK:STDOUT:       2:               inst600000E4
-// CHECK:STDOUT:       3:               inst600000E5
-// CHECK:STDOUT:       4:               inst600000E6
-// CHECK:STDOUT:       5:               inst600000E7
+// CHECK:STDOUT:       1:               inst600000E4
+// CHECK:STDOUT:     inst_block6000004B:
+// CHECK:STDOUT:       0:               inst600000E1
+// CHECK:STDOUT:       1:               inst600000E2
+// CHECK:STDOUT:       2:               inst600000E3
+// CHECK:STDOUT:       3:               inst600000E4
+// CHECK:STDOUT:       4:               inst600000E5
+// CHECK:STDOUT:       5:               inst600000E6
 // CHECK:STDOUT:     inst_block6000004C:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst60000063
-// CHECK:STDOUT:       2:               inst600000C1
-// CHECK:STDOUT:       3:               inst600000C2
-// CHECK:STDOUT:       4:               inst600000C3
-// CHECK:STDOUT:       5:               inst600000D9
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst60000062
+// CHECK:STDOUT:       2:               inst600000C0
+// CHECK:STDOUT:       3:               inst600000C1
+// CHECK:STDOUT:       4:               inst600000C2
+// CHECK:STDOUT:       5:               inst600000D8
 // CHECK:STDOUT:     inst_block6000004D:
-// CHECK:STDOUT:       0:               inst600000C1
+// CHECK:STDOUT:       0:               inst600000C0
 // CHECK:STDOUT:     inst_block6000004E:
-// CHECK:STDOUT:       0:               inst600000E2
+// CHECK:STDOUT:       0:               inst600000E1
 // CHECK:STDOUT:     inst_block6000004F:
-// CHECK:STDOUT:       0:               inst600000E4
+// CHECK:STDOUT:       0:               inst600000E3
 // CHECK:STDOUT:     inst_block60000050:
-// CHECK:STDOUT:       0:               inst600000EE
-// CHECK:STDOUT:       1:               inst600000EF
-// CHECK:STDOUT:       2:               inst600000F0
-// CHECK:STDOUT:       3:               inst600000F1
-// CHECK:STDOUT:       4:               inst600000F2
-// CHECK:STDOUT:       5:               inst600000F3
-// CHECK:STDOUT:       6:               inst600000F4
-// CHECK:STDOUT:       7:               inst600000F5
-// CHECK:STDOUT:       8:               inst600000F6
-// CHECK:STDOUT:       9:               inst600000F7
-// CHECK:STDOUT:       10:              inst600000F8
+// CHECK:STDOUT:       0:               inst600000ED
+// CHECK:STDOUT:       1:               inst600000EE
+// CHECK:STDOUT:       2:               inst600000EF
+// CHECK:STDOUT:       3:               inst600000F0
+// CHECK:STDOUT:       4:               inst600000F1
+// CHECK:STDOUT:       5:               inst600000F2
+// CHECK:STDOUT:       6:               inst600000F3
+// CHECK:STDOUT:       7:               inst600000F4
+// CHECK:STDOUT:       8:               inst600000F5
+// CHECK:STDOUT:       9:               inst600000F6
+// CHECK:STDOUT:       10:              inst600000F7
 // CHECK:STDOUT:     inst_block60000051:
-// CHECK:STDOUT:       0:               inst600000C1
-// CHECK:STDOUT:       1:               inst600000C2
-// CHECK:STDOUT:       2:               inst600000F9
+// CHECK:STDOUT:       0:               inst600000C0
+// CHECK:STDOUT:       1:               inst600000C1
+// CHECK:STDOUT:       2:               inst600000F8
 // CHECK:STDOUT:     inst_block60000052:
-// CHECK:STDOUT:       0:               inst600000D7
-// CHECK:STDOUT:       1:               inst600000D8
+// CHECK:STDOUT:       0:               inst600000D6
+// CHECK:STDOUT:       1:               inst600000D7
 // CHECK:STDOUT:     inst_block60000053:
-// CHECK:STDOUT:       0:               inst60000063
-// CHECK:STDOUT:       1:               inst600000C2
-// CHECK:STDOUT:       2:               inst600000FD
+// CHECK:STDOUT:       0:               inst60000062
+// CHECK:STDOUT:       1:               inst600000C1
+// CHECK:STDOUT:       2:               inst600000FC
 // CHECK:STDOUT:     inst_block60000054:
-// CHECK:STDOUT:       0:               inst60000101
-// CHECK:STDOUT:       1:               inst60000100
-// CHECK:STDOUT:       2:               inst600000FF
+// CHECK:STDOUT:       0:               inst60000100
+// CHECK:STDOUT:       1:               inst600000FF
+// CHECK:STDOUT:       2:               inst600000FE
 // CHECK:STDOUT:     inst_block60000055:
-// CHECK:STDOUT:       0:               inst60000102
-// CHECK:STDOUT:       1:               inst60000103
-// CHECK:STDOUT:       2:               inst60000104
+// CHECK:STDOUT:       0:               inst60000101
+// CHECK:STDOUT:       1:               inst60000102
+// CHECK:STDOUT:       2:               inst60000103
 // CHECK:STDOUT:     inst_block60000056:
-// CHECK:STDOUT:       0:               inst6000004A
-// CHECK:STDOUT:       1:               inst6000004A
-// CHECK:STDOUT:       2:               inst6000004A
+// CHECK:STDOUT:       0:               inst60000049
+// CHECK:STDOUT:       1:               inst60000049
+// CHECK:STDOUT:       2:               inst60000049
 // CHECK:STDOUT:     inst_block60000057:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst600000C1
-// CHECK:STDOUT:       2:               inst600000FC
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst600000C0
+// CHECK:STDOUT:       2:               inst600000FB
 // CHECK:STDOUT:     inst_block60000058:
-// CHECK:STDOUT:       0:               inst60000109
+// CHECK:STDOUT:       0:               inst60000108
 // CHECK:STDOUT:     inst_block60000059:
-// CHECK:STDOUT:       0:               inst6000010C
-// CHECK:STDOUT:       1:               inst6000010D
-// CHECK:STDOUT:       2:               inst6000010E
+// CHECK:STDOUT:       0:               inst6000010B
+// CHECK:STDOUT:       1:               inst6000010C
+// CHECK:STDOUT:       2:               inst6000010D
 // CHECK:STDOUT:     inst_block6000005A:
-// CHECK:STDOUT:       0:               inst60000110
-// CHECK:STDOUT:       1:               inst60000111
-// CHECK:STDOUT:       2:               inst60000112
+// CHECK:STDOUT:       0:               inst6000010F
+// CHECK:STDOUT:       1:               inst60000110
+// CHECK:STDOUT:       2:               inst60000111
 // CHECK:STDOUT:     inst_block6000005B:
-// CHECK:STDOUT:       0:               inst6000010C
-// CHECK:STDOUT:       1:               inst6000010D
-// CHECK:STDOUT:       2:               inst6000010E
+// CHECK:STDOUT:       0:               inst6000010B
+// CHECK:STDOUT:       1:               inst6000010C
+// CHECK:STDOUT:       2:               inst6000010D
 // CHECK:STDOUT:     inst_block6000005C:
-// CHECK:STDOUT:       0:               inst6000010C
-// CHECK:STDOUT:       1:               inst6000010D
-// CHECK:STDOUT:       2:               inst6000010E
-// CHECK:STDOUT:       3:               inst6000010F
-// CHECK:STDOUT:       4:               inst60000110
-// CHECK:STDOUT:       5:               inst60000111
-// CHECK:STDOUT:       6:               inst60000112
-// CHECK:STDOUT:       7:               inst60000113
-// CHECK:STDOUT:       8:               inst60000114
+// CHECK:STDOUT:       0:               inst6000010B
+// CHECK:STDOUT:       1:               inst6000010C
+// CHECK:STDOUT:       2:               inst6000010D
+// CHECK:STDOUT:       3:               inst6000010E
+// CHECK:STDOUT:       4:               inst6000010F
+// CHECK:STDOUT:       5:               inst60000110
+// CHECK:STDOUT:       6:               inst60000111
+// CHECK:STDOUT:       7:               inst60000112
+// CHECK:STDOUT:       8:               inst60000113
 // CHECK:STDOUT:     inst_block6000005D:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst600000C1
-// CHECK:STDOUT:       2:               inst600000FC
-// CHECK:STDOUT:       3:               inst60000108
-// CHECK:STDOUT:       4:               inst60000063
-// CHECK:STDOUT:       5:               inst600000C2
-// CHECK:STDOUT:       6:               inst600000FD
-// CHECK:STDOUT:       7:               inst600000FE
-// CHECK:STDOUT:       8:               inst6000010B
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst600000C0
+// CHECK:STDOUT:       2:               inst600000FB
+// CHECK:STDOUT:       3:               inst60000107
+// CHECK:STDOUT:       4:               inst60000062
+// CHECK:STDOUT:       5:               inst600000C1
+// CHECK:STDOUT:       6:               inst600000FC
+// CHECK:STDOUT:       7:               inst600000FD
+// CHECK:STDOUT:       8:               inst6000010A
 // CHECK:STDOUT:     inst_block6000005E:
-// CHECK:STDOUT:       0:               inst6000011C
+// CHECK:STDOUT:       0:               inst6000011B
 // CHECK:STDOUT:     inst_block6000005F:
-// CHECK:STDOUT:       0:               inst6000011D
-// CHECK:STDOUT:       1:               inst6000011E
-// CHECK:STDOUT:       2:               inst6000011F
+// CHECK:STDOUT:       0:               inst6000011C
+// CHECK:STDOUT:       1:               inst6000011D
+// CHECK:STDOUT:       2:               inst6000011E
 // CHECK:STDOUT:     inst_block60000060:
-// CHECK:STDOUT:       0:               inst6000010C
-// CHECK:STDOUT:       1:               inst6000010D
-// CHECK:STDOUT:       2:               inst6000010E
+// CHECK:STDOUT:       0:               inst6000010B
+// CHECK:STDOUT:       1:               inst6000010C
+// CHECK:STDOUT:       2:               inst6000010D
 // CHECK:STDOUT:     inst_block60000061:
-// CHECK:STDOUT:       0:               inst60000120
-// CHECK:STDOUT:       1:               inst60000121
+// CHECK:STDOUT:       0:               inst6000011F
+// CHECK:STDOUT:       1:               inst60000120
 // CHECK:STDOUT:     inst_block60000062:
-// CHECK:STDOUT:       0:               inst60000123
-// CHECK:STDOUT:       1:               inst60000125
-// CHECK:STDOUT:       2:               inst60000127
-// CHECK:STDOUT:     inst_block60000063:
 // CHECK:STDOUT:       0:               inst60000122
-// CHECK:STDOUT:       1:               inst60000123
-// CHECK:STDOUT:       2:               inst60000124
-// CHECK:STDOUT:       3:               inst60000125
-// CHECK:STDOUT:       4:               inst60000126
-// CHECK:STDOUT:       5:               inst60000127
-// CHECK:STDOUT:       6:               inst60000128
-// CHECK:STDOUT:       7:               inst60000129
+// CHECK:STDOUT:       1:               inst60000124
+// CHECK:STDOUT:       2:               inst60000126
+// CHECK:STDOUT:     inst_block60000063:
+// CHECK:STDOUT:       0:               inst60000121
+// CHECK:STDOUT:       1:               inst60000122
+// CHECK:STDOUT:       2:               inst60000123
+// CHECK:STDOUT:       3:               inst60000124
+// CHECK:STDOUT:       4:               inst60000125
+// CHECK:STDOUT:       5:               inst60000126
+// CHECK:STDOUT:       6:               inst60000127
+// CHECK:STDOUT:       7:               inst60000128
 // CHECK:STDOUT:     inst_block60000064:
-// CHECK:STDOUT:       0:               inst60000062
-// CHECK:STDOUT:       1:               inst60000063
-// CHECK:STDOUT:       2:               inst600000C1
-// CHECK:STDOUT:       3:               inst600000C2
-// CHECK:STDOUT:       4:               inst600000FC
-// CHECK:STDOUT:       5:               inst600000FD
-// CHECK:STDOUT:       6:               inst600000FE
-// CHECK:STDOUT:       7:               inst60000118
+// CHECK:STDOUT:       0:               inst60000061
+// CHECK:STDOUT:       1:               inst60000062
+// CHECK:STDOUT:       2:               inst600000C0
+// CHECK:STDOUT:       3:               inst600000C1
+// CHECK:STDOUT:       4:               inst600000FB
+// CHECK:STDOUT:       5:               inst600000FC
+// CHECK:STDOUT:       6:               inst600000FD
+// CHECK:STDOUT:       7:               inst60000117
 // CHECK:STDOUT:     inst_block60000065:
-// CHECK:STDOUT:       0:               inst600000FC
+// CHECK:STDOUT:       0:               inst600000FB
 // CHECK:STDOUT:     inst_block60000066:
-// CHECK:STDOUT:       0:               inst60000122
+// CHECK:STDOUT:       0:               inst60000121
 // CHECK:STDOUT:     inst_block60000067:
-// CHECK:STDOUT:       0:               inst60000124
+// CHECK:STDOUT:       0:               inst60000123
 // CHECK:STDOUT:     inst_block60000068:
-// CHECK:STDOUT:       0:               inst60000126
+// CHECK:STDOUT:       0:               inst60000125
 // CHECK:STDOUT:     inst_block60000069:
-// CHECK:STDOUT:       0:               inst60000130
-// CHECK:STDOUT:       1:               inst60000131
-// CHECK:STDOUT:       2:               inst60000132
-// CHECK:STDOUT:       3:               inst60000133
-// CHECK:STDOUT:       4:               inst60000134
-// CHECK:STDOUT:       5:               inst60000135
-// CHECK:STDOUT:       6:               inst60000136
-// CHECK:STDOUT:       7:               inst60000137
-// CHECK:STDOUT:       8:               inst60000138
-// CHECK:STDOUT:       9:               inst60000139
-// CHECK:STDOUT:       10:              inst6000013A
-// CHECK:STDOUT:       11:              inst6000013B
-// CHECK:STDOUT:       12:              inst6000013C
-// CHECK:STDOUT:       13:              inst6000013D
-// CHECK:STDOUT:       14:              inst6000013E
-// CHECK:STDOUT:       15:              inst6000013F
+// CHECK:STDOUT:       0:               inst6000012F
+// CHECK:STDOUT:       1:               inst60000130
+// CHECK:STDOUT:       2:               inst60000131
+// CHECK:STDOUT:       3:               inst60000132
+// CHECK:STDOUT:       4:               inst60000133
+// CHECK:STDOUT:       5:               inst60000134
+// CHECK:STDOUT:       6:               inst60000135
+// CHECK:STDOUT:       7:               inst60000136
+// CHECK:STDOUT:       8:               inst60000137
+// CHECK:STDOUT:       9:               inst60000138
+// CHECK:STDOUT:       10:              inst60000139
+// CHECK:STDOUT:       11:              inst6000013A
+// CHECK:STDOUT:       12:              inst6000013B
+// CHECK:STDOUT:       13:              inst6000013C
+// CHECK:STDOUT:       14:              inst6000013D
+// CHECK:STDOUT:       15:              inst6000013E
 // CHECK:STDOUT:     inst_block6000006A:
-// CHECK:STDOUT:       0:               inst600000FC
-// CHECK:STDOUT:       1:               inst600000FD
-// CHECK:STDOUT:       2:               inst60000140
+// CHECK:STDOUT:       0:               inst600000FB
+// CHECK:STDOUT:       1:               inst600000FC
+// CHECK:STDOUT:       2:               inst6000013F
 // CHECK:STDOUT:     inst_block6000006B:
-// CHECK:STDOUT:       0:               inst60000116
-// CHECK:STDOUT:       1:               inst60000117
+// CHECK:STDOUT:       0:               inst60000115
+// CHECK:STDOUT:       1:               inst60000116
 // CHECK:STDOUT:     inst_block6000006C:
-// CHECK:STDOUT:       0:               inst600000AA
-// CHECK:STDOUT:       1:               inst600000AB
-// CHECK:STDOUT:       2:               inst60000040
+// CHECK:STDOUT:       0:               inst600000A9
+// CHECK:STDOUT:       1:               inst600000AA
+// CHECK:STDOUT:       2:               inst6000003F
 // CHECK:STDOUT:     inst_block6000006D:
-// CHECK:STDOUT:       0:               inst60000141
+// CHECK:STDOUT:       0:               inst60000140
 // CHECK:STDOUT:     inst_block6000006E:
-// CHECK:STDOUT:       0:               inst60000142
+// CHECK:STDOUT:       0:               inst60000141
 // CHECK:STDOUT:     inst_block6000006F:
-// CHECK:STDOUT:       0:               inst60000143
+// CHECK:STDOUT:       0:               inst60000142
 // CHECK:STDOUT:     inst_block60000070:
-// CHECK:STDOUT:       0:               inst60000143
-// CHECK:STDOUT:       1:               inst6000001B
-// CHECK:STDOUT:       2:               inst6000001E
+// CHECK:STDOUT:       0:               inst60000142
+// CHECK:STDOUT:       1:               inst6000001A
+// CHECK:STDOUT:       2:               inst6000001D
 // CHECK:STDOUT:     inst_block60000071:
-// CHECK:STDOUT:       0:               inst60000147
+// CHECK:STDOUT:       0:               inst60000146
 // CHECK:STDOUT:     inst_block60000072:
-// CHECK:STDOUT:       0:               inst60000042
+// CHECK:STDOUT:       0:               inst60000041
 // CHECK:STDOUT:     inst_block60000073:
-// CHECK:STDOUT:       0:               inst60000151
-// CHECK:STDOUT:       1:               inst60000154
+// CHECK:STDOUT:       0:               inst60000150
+// CHECK:STDOUT:       1:               inst60000153
 // CHECK:STDOUT:     inst_block60000074:
-// CHECK:STDOUT:       0:               inst6000003E
-// CHECK:STDOUT:       1:               inst60000041
-// CHECK:STDOUT:       2:               inst60000142
-// CHECK:STDOUT:       3:               inst60000147
-// CHECK:STDOUT:       4:               inst60000148
-// CHECK:STDOUT:       5:               inst60000149
-// CHECK:STDOUT:       6:               inst6000014D
+// CHECK:STDOUT:       0:               inst6000003D
+// CHECK:STDOUT:       1:               inst60000040
+// CHECK:STDOUT:       2:               inst60000141
+// CHECK:STDOUT:       3:               inst60000146
+// CHECK:STDOUT:       4:               inst60000147
+// CHECK:STDOUT:       5:               inst60000148
+// CHECK:STDOUT:       6:               inst6000014C
 // CHECK:STDOUT:     inst_block60000075:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst6000000F
-// CHECK:STDOUT:       2:               inst60000038
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst6000000E
+// CHECK:STDOUT:       2:               inst60000037
 // CHECK:STDOUT: ...

+ 122 - 122
toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon

@@ -26,12 +26,12 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst60000027}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst60000026}}
 // CHECK:STDOUT:   entity_names:
 // CHECK:STDOUT:     entity_name60000000: {name: name1, parent_scope: name_scope<none>, index: -1, is_template: 0}
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:
-// CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000A, return_slot_pattern: inst60000022, body: [inst_block6000000D]}
+// CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000A, return_slot_pattern: inst60000021, body: [inst_block6000000D]}
 // CHECK:STDOUT:   classes:         {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
@@ -44,155 +44,155 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     'type(inst6000000F)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst6000000F)}
-// CHECK:STDOUT:     'type(inst6000001C)':
-// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000001C)}
-// CHECK:STDOUT:     'type(inst60000019)':
-// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst6000001C)}
-// CHECK:STDOUT:     'type(inst60000028)':
-// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst6000000F)}
+// CHECK:STDOUT:     'type(inst6000000E)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst6000000E)}
+// CHECK:STDOUT:     'type(inst6000001B)':
+// CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst6000001B)}
+// CHECK:STDOUT:     'type(inst60000018)':
+// CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst6000001B)}
+// CHECK:STDOUT:     'type(inst60000027)':
+// CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst6000000E)}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
-// CHECK:STDOUT:     inst6000000F:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000010:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000011:    {kind: TupleValue, arg0: inst_block_empty, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000012:    {kind: Converted, arg0: inst60000010, arg1: inst6000000F, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000013:    {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000023, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000014:    {kind: PatternType, arg0: inst6000000F, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000015:    {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000016:    {kind: ValueParamPattern, arg0: inst60000015, arg1: call_param0, type: type(inst60000014)}
-// CHECK:STDOUT:     inst60000017:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000018:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000019:    {kind: TupleType, arg0: inst_block60000007, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001A:    {kind: TupleLiteral, arg0: inst_block60000006, type: type(inst60000019)}
-// CHECK:STDOUT:     inst6000001B:    {kind: TupleValue, arg0: inst_block60000008, type: type(inst60000019)}
-// CHECK:STDOUT:     inst6000001C:    {kind: PointerType, arg0: inst60000019, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001D:    {kind: Converted, arg0: inst60000011, arg1: inst6000000F, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001E:    {kind: Converted, arg0: inst60000011, arg1: inst6000000F, type: type(TypeType)}
-// CHECK:STDOUT:     inst6000001F:    {kind: Converted, arg0: inst6000001A, arg1: inst60000019, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000020:    {kind: PatternType, arg0: inst60000019, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000021:    {kind: ReturnSlotPattern, arg0: inst6000001F, type: type(inst60000020)}
-// CHECK:STDOUT:     inst60000022:    {kind: OutParamPattern, arg0: inst60000021, arg1: call_param1, type: type(inst60000020)}
-// CHECK:STDOUT:     inst60000023:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000024:    {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000012, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000025:    {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst60000019)}
-// CHECK:STDOUT:     inst60000026:    {kind: ReturnSlot, arg0: inst60000019, arg1: inst60000025, type: type(inst60000019)}
-// CHECK:STDOUT:     inst60000027:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000C, type: type(inst60000028)}
-// CHECK:STDOUT:     inst60000028:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
-// CHECK:STDOUT:     inst60000029:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000028)}
-// CHECK:STDOUT:     inst6000002A:    {kind: NameRef, arg0: name1, arg1: inst60000013, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst6000002B:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst6000002C:    {kind: TupleLiteral, arg0: inst_block6000000E, type: type(inst60000019)}
-// CHECK:STDOUT:     inst6000002D:    {kind: TupleAccess, arg0: inst60000026, arg1: element0, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst6000002E:    {kind: TupleInit, arg0: inst_block6000000F, arg1: inst6000002D, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst6000002F:    {kind: Converted, arg0: inst6000002A, arg1: inst6000002E, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000030:    {kind: TupleAccess, arg0: inst60000026, arg1: element1, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000031:    {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000030, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000032:    {kind: Converted, arg0: inst6000002B, arg1: inst60000031, type: type(inst6000000F)}
-// CHECK:STDOUT:     inst60000033:    {kind: TupleInit, arg0: inst_block60000010, arg1: inst60000026, type: type(inst60000019)}
-// CHECK:STDOUT:     inst60000034:    {kind: Converted, arg0: inst6000002C, arg1: inst60000033, type: type(inst60000019)}
-// CHECK:STDOUT:     inst60000035:    {kind: ReturnExpr, arg0: inst60000034, arg1: inst60000026}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     inst6000000E:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000000F:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000010:    {kind: TupleValue, arg0: inst_block_empty, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000011:    {kind: Converted, arg0: inst6000000F, arg1: inst6000000E, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000012:    {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000022, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000013:    {kind: PatternType, arg0: inst6000000E, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000014:    {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000015:    {kind: ValueParamPattern, arg0: inst60000014, arg1: call_param0, type: type(inst60000013)}
+// CHECK:STDOUT:     inst60000016:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000017:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000018:    {kind: TupleType, arg0: inst_block60000007, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000019:    {kind: TupleLiteral, arg0: inst_block60000006, type: type(inst60000018)}
+// CHECK:STDOUT:     inst6000001A:    {kind: TupleValue, arg0: inst_block60000008, type: type(inst60000018)}
+// CHECK:STDOUT:     inst6000001B:    {kind: PointerType, arg0: inst60000018, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001C:    {kind: Converted, arg0: inst60000010, arg1: inst6000000E, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001D:    {kind: Converted, arg0: inst60000010, arg1: inst6000000E, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001E:    {kind: Converted, arg0: inst60000019, arg1: inst60000018, type: type(TypeType)}
+// CHECK:STDOUT:     inst6000001F:    {kind: PatternType, arg0: inst60000018, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000020:    {kind: ReturnSlotPattern, arg0: inst6000001E, type: type(inst6000001F)}
+// CHECK:STDOUT:     inst60000021:    {kind: OutParamPattern, arg0: inst60000020, arg1: call_param1, type: type(inst6000001F)}
+// CHECK:STDOUT:     inst60000022:    {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000023:    {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000011, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000024:    {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst60000018)}
+// CHECK:STDOUT:     inst60000025:    {kind: ReturnSlot, arg0: inst60000018, arg1: inst60000024, type: type(inst60000018)}
+// CHECK:STDOUT:     inst60000026:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000C, type: type(inst60000027)}
+// CHECK:STDOUT:     inst60000027:    {kind: FunctionType, arg0: function60000000, arg1: specific<none>, type: type(TypeType)}
+// CHECK:STDOUT:     inst60000028:    {kind: StructValue, arg0: inst_block_empty, type: type(inst60000027)}
+// CHECK:STDOUT:     inst60000029:    {kind: NameRef, arg0: name1, arg1: inst60000012, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst6000002A:    {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst6000002B:    {kind: TupleLiteral, arg0: inst_block6000000E, type: type(inst60000018)}
+// CHECK:STDOUT:     inst6000002C:    {kind: TupleAccess, arg0: inst60000025, arg1: element0, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst6000002D:    {kind: TupleInit, arg0: inst_block6000000F, arg1: inst6000002C, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst6000002E:    {kind: Converted, arg0: inst60000029, arg1: inst6000002D, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst6000002F:    {kind: TupleAccess, arg0: inst60000025, arg1: element1, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000030:    {kind: TupleInit, arg0: inst_block_empty, arg1: inst6000002F, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000031:    {kind: Converted, arg0: inst6000002A, arg1: inst60000030, type: type(inst6000000E)}
+// CHECK:STDOUT:     inst60000032:    {kind: TupleInit, arg0: inst_block60000010, arg1: inst60000025, type: type(inst60000018)}
+// CHECK:STDOUT:     inst60000033:    {kind: Converted, arg0: inst6000002B, arg1: inst60000032, type: type(inst60000018)}
+// CHECK:STDOUT:     inst60000034:    {kind: ReturnExpr, arg0: inst60000033, arg1: inst60000025}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
-// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst6000000F)
-// CHECK:STDOUT:       inst60000010:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000011:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000012:    concrete_constant(inst6000000F)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
+// CHECK:STDOUT:       inst6000000E:    concrete_constant(inst6000000E)
+// CHECK:STDOUT:       inst6000000F:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000010:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000011:    concrete_constant(inst6000000E)
+// CHECK:STDOUT:       inst60000013:    concrete_constant(inst60000013)
 // CHECK:STDOUT:       inst60000014:    concrete_constant(inst60000014)
 // CHECK:STDOUT:       inst60000015:    concrete_constant(inst60000015)
-// CHECK:STDOUT:       inst60000016:    concrete_constant(inst60000016)
-// CHECK:STDOUT:       inst60000017:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000018:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000019:    concrete_constant(inst60000019)
-// CHECK:STDOUT:       inst6000001A:    concrete_constant(inst6000001B)
+// CHECK:STDOUT:       inst60000016:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000017:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000018:    concrete_constant(inst60000018)
+// CHECK:STDOUT:       inst60000019:    concrete_constant(inst6000001A)
+// CHECK:STDOUT:       inst6000001A:    concrete_constant(inst6000001A)
 // CHECK:STDOUT:       inst6000001B:    concrete_constant(inst6000001B)
-// CHECK:STDOUT:       inst6000001C:    concrete_constant(inst6000001C)
-// CHECK:STDOUT:       inst6000001D:    concrete_constant(inst6000000F)
-// CHECK:STDOUT:       inst6000001E:    concrete_constant(inst6000000F)
-// CHECK:STDOUT:       inst6000001F:    concrete_constant(inst60000019)
+// CHECK:STDOUT:       inst6000001C:    concrete_constant(inst6000000E)
+// CHECK:STDOUT:       inst6000001D:    concrete_constant(inst6000000E)
+// CHECK:STDOUT:       inst6000001E:    concrete_constant(inst60000018)
+// CHECK:STDOUT:       inst6000001F:    concrete_constant(inst6000001F)
 // CHECK:STDOUT:       inst60000020:    concrete_constant(inst60000020)
 // CHECK:STDOUT:       inst60000021:    concrete_constant(inst60000021)
-// CHECK:STDOUT:       inst60000022:    concrete_constant(inst60000022)
-// CHECK:STDOUT:       inst60000024:    concrete_constant(inst6000000F)
-// CHECK:STDOUT:       inst60000027:    concrete_constant(inst60000029)
+// CHECK:STDOUT:       inst60000023:    concrete_constant(inst6000000E)
+// CHECK:STDOUT:       inst60000026:    concrete_constant(inst60000028)
+// CHECK:STDOUT:       inst60000027:    concrete_constant(inst60000027)
 // CHECK:STDOUT:       inst60000028:    concrete_constant(inst60000028)
-// CHECK:STDOUT:       inst60000029:    concrete_constant(inst60000029)
-// CHECK:STDOUT:       inst6000002B:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst6000002E:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst6000002F:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000031:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000032:    concrete_constant(inst60000011)
-// CHECK:STDOUT:       inst60000033:    concrete_constant(inst6000001B)
-// CHECK:STDOUT:       inst60000034:    concrete_constant(inst6000001B)
+// CHECK:STDOUT:       inst6000002A:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst6000002D:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst6000002E:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000030:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000031:    concrete_constant(inst60000010)
+// CHECK:STDOUT:       inst60000032:    concrete_constant(inst6000001A)
+// CHECK:STDOUT:       inst60000033:    concrete_constant(inst6000001A)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
-// CHECK:STDOUT:       0:               inst60000027
+// CHECK:STDOUT:       0:               inst60000026
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
-// CHECK:STDOUT:       0:               inst60000010
-// CHECK:STDOUT:       1:               inst60000012
+// CHECK:STDOUT:       0:               inst6000000F
+// CHECK:STDOUT:       1:               inst60000011
 // CHECK:STDOUT:     inst_block60000005:
-// CHECK:STDOUT:       0:               inst60000016
+// CHECK:STDOUT:       0:               inst60000015
 // CHECK:STDOUT:     inst_block60000006:
-// CHECK:STDOUT:       0:               inst60000017
-// CHECK:STDOUT:       1:               inst60000018
+// CHECK:STDOUT:       0:               inst60000016
+// CHECK:STDOUT:       1:               inst60000017
 // CHECK:STDOUT:     inst_block60000007:
-// CHECK:STDOUT:       0:               inst6000000F
-// CHECK:STDOUT:       1:               inst6000000F
+// CHECK:STDOUT:       0:               inst6000000E
+// CHECK:STDOUT:       1:               inst6000000E
 // CHECK:STDOUT:     inst_block60000008:
-// CHECK:STDOUT:       0:               inst60000011
-// CHECK:STDOUT:       1:               inst60000011
+// CHECK:STDOUT:       0:               inst60000010
+// CHECK:STDOUT:       1:               inst60000010
 // CHECK:STDOUT:     inst_block60000009:
-// CHECK:STDOUT:       0:               inst6000001D
-// CHECK:STDOUT:       1:               inst6000001E
+// CHECK:STDOUT:       0:               inst6000001C
+// CHECK:STDOUT:       1:               inst6000001D
 // CHECK:STDOUT:     inst_block6000000A:
-// CHECK:STDOUT:       0:               inst60000023
-// CHECK:STDOUT:       1:               inst60000025
+// CHECK:STDOUT:       0:               inst60000022
+// CHECK:STDOUT:       1:               inst60000024
 // CHECK:STDOUT:     inst_block6000000B:
-// CHECK:STDOUT:       0:               inst60000015
-// CHECK:STDOUT:       1:               inst60000016
-// CHECK:STDOUT:       2:               inst60000021
-// CHECK:STDOUT:       3:               inst60000022
+// CHECK:STDOUT:       0:               inst60000014
+// CHECK:STDOUT:       1:               inst60000015
+// CHECK:STDOUT:       2:               inst60000020
+// CHECK:STDOUT:       3:               inst60000021
 // CHECK:STDOUT:     inst_block6000000C:
-// CHECK:STDOUT:       0:               inst60000017
-// CHECK:STDOUT:       1:               inst60000018
-// CHECK:STDOUT:       2:               inst6000001A
-// CHECK:STDOUT:       3:               inst6000001D
-// CHECK:STDOUT:       4:               inst6000001E
-// CHECK:STDOUT:       5:               inst6000001F
-// CHECK:STDOUT:       6:               inst60000023
-// CHECK:STDOUT:       7:               inst60000024
-// CHECK:STDOUT:       8:               inst60000013
-// CHECK:STDOUT:       9:               inst60000025
-// CHECK:STDOUT:       10:              inst60000026
+// CHECK:STDOUT:       0:               inst60000016
+// CHECK:STDOUT:       1:               inst60000017
+// CHECK:STDOUT:       2:               inst60000019
+// CHECK:STDOUT:       3:               inst6000001C
+// CHECK:STDOUT:       4:               inst6000001D
+// CHECK:STDOUT:       5:               inst6000001E
+// CHECK:STDOUT:       6:               inst60000022
+// CHECK:STDOUT:       7:               inst60000023
+// CHECK:STDOUT:       8:               inst60000012
+// CHECK:STDOUT:       9:               inst60000024
+// CHECK:STDOUT:       10:              inst60000025
 // CHECK:STDOUT:     inst_block6000000D:
-// CHECK:STDOUT:       0:               inst6000002A
-// CHECK:STDOUT:       1:               inst6000002B
-// CHECK:STDOUT:       2:               inst6000002C
-// CHECK:STDOUT:       3:               inst6000002D
-// CHECK:STDOUT:       4:               inst6000002E
-// CHECK:STDOUT:       5:               inst6000002F
-// CHECK:STDOUT:       6:               inst60000030
-// CHECK:STDOUT:       7:               inst60000031
-// CHECK:STDOUT:       8:               inst60000032
-// CHECK:STDOUT:       9:               inst60000033
-// CHECK:STDOUT:       10:              inst60000034
-// CHECK:STDOUT:       11:              inst60000035
+// CHECK:STDOUT:       0:               inst60000029
+// CHECK:STDOUT:       1:               inst6000002A
+// CHECK:STDOUT:       2:               inst6000002B
+// CHECK:STDOUT:       3:               inst6000002C
+// CHECK:STDOUT:       4:               inst6000002D
+// CHECK:STDOUT:       5:               inst6000002E
+// CHECK:STDOUT:       6:               inst6000002F
+// CHECK:STDOUT:       7:               inst60000030
+// CHECK:STDOUT:       8:               inst60000031
+// CHECK:STDOUT:       9:               inst60000032
+// CHECK:STDOUT:       10:              inst60000033
+// CHECK:STDOUT:       11:              inst60000034
 // CHECK:STDOUT:     inst_block6000000E:
-// CHECK:STDOUT:       0:               inst6000002A
-// CHECK:STDOUT:       1:               inst6000002B
+// CHECK:STDOUT:       0:               inst60000029
+// CHECK:STDOUT:       1:               inst6000002A
 // CHECK:STDOUT:     inst_block6000000F: {}
 // CHECK:STDOUT:     inst_block60000010:
-// CHECK:STDOUT:       0:               inst6000002F
-// CHECK:STDOUT:       1:               inst60000032
+// CHECK:STDOUT:       0:               inst6000002E
+// CHECK:STDOUT:       1:               inst60000031
 // CHECK:STDOUT:     inst_block60000011:
-// CHECK:STDOUT:       0:               instE
-// CHECK:STDOUT:       1:               inst60000027
+// CHECK:STDOUT:       0:               instD
+// CHECK:STDOUT:       1:               inst60000026
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- one_file_with_textual_ir.carbon
 // CHECK:STDOUT:

+ 6 - 6
toolchain/check/testdata/interop/cpp/function/decayed_param.carbon

@@ -138,11 +138,11 @@ fn F() {
 // CHECK:STDOUT:   %uninit: %Cpp.nullptr_t = uninitialized_value [concrete]
 // CHECK:STDOUT:   %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.d80: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%T.d9f) [symbolic]
 // CHECK:STDOUT:   %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.2ce: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.d80 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.213: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.87f, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete]
+// CHECK:STDOUT:   %ImplicitAs.impl_witness.eae: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.126, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete]
 // CHECK:STDOUT:   %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.87f: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete]
 // CHECK:STDOUT:   %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.83e: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.87f = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.5e9: %ImplicitAs.type.534 = facet_value %Cpp.nullptr_t, (%ImplicitAs.impl_witness.213) [concrete]
-// CHECK:STDOUT:   %.28d: type = fn_type_with_self_type %ImplicitAs.Convert.type.8fe, %ImplicitAs.facet.5e9 [concrete]
+// CHECK:STDOUT:   %ImplicitAs.facet.4bf: %ImplicitAs.type.534 = facet_value %Cpp.nullptr_t, (%ImplicitAs.impl_witness.eae) [concrete]
+// CHECK:STDOUT:   %.164: type = fn_type_with_self_type %ImplicitAs.Convert.type.8fe, %ImplicitAs.facet.4bf [concrete]
 // CHECK:STDOUT:   %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.83e [concrete]
 // CHECK:STDOUT:   %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.83e, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(%i32) [concrete]
 // CHECK:STDOUT:   %bound_method.ed9: <bound method> = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn [concrete]
@@ -185,8 +185,8 @@ fn F() {
 // CHECK:STDOUT:   %ImplicitAs.impl_witness_table.da6 = impl_witness_table (%Core.import_ref.ec9), @U.binding.as_type.as.ImplicitAs.impl.ea7 [concrete]
 // CHECK:STDOUT:   %Core.import_ref.7fb: @T.binding.as_type.as.OptionalAs.impl.%T.binding.as_type.as.OptionalAs.impl.Convert.type (%T.binding.as_type.as.OptionalAs.impl.Convert.type.8c6) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.OptionalAs.impl.%T.binding.as_type.as.OptionalAs.impl.Convert (constants.%T.binding.as_type.as.OptionalAs.impl.Convert.180)]
 // CHECK:STDOUT:   %OptionalAs.impl_witness_table.8ee = impl_witness_table (%Core.import_ref.7fb), @T.binding.as_type.as.OptionalAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.54b: @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type (%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.d80) = import_ref Core//prelude/types/cpp/nullptr, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert (constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.2ce)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.87f = impl_witness_table (%Core.import_ref.54b), @Cpp.nullptr_t.as.ImplicitAs.impl [concrete]
+// CHECK:STDOUT:   %Core.import_ref.9b7: @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type (%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.d80) = import_ref Core//prelude/types/cpp/nullptr, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert (constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.2ce)]
+// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.126 = impl_witness_table (%Core.import_ref.9b7), @Cpp.nullptr_t.as.ImplicitAs.impl [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() {
@@ -233,7 +233,7 @@ fn F() {
 // CHECK:STDOUT:   %Cpp.ref.loc13_18: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT:   %nullptr.ref: %Cpp.nullptr_t = name_ref nullptr, %uninit [concrete = constants.%uninit]
-// CHECK:STDOUT:   %impl.elem0.loc13: %.28d = impl_witness_access constants.%ImplicitAs.impl_witness.213, element0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.83e]
+// CHECK:STDOUT:   %impl.elem0.loc13: %.164 = impl_witness_access constants.%ImplicitAs.impl_witness.eae, element0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.83e]
 // CHECK:STDOUT:   %bound_method.loc13_21.1: <bound method> = bound_method %nullptr.ref, %impl.elem0.loc13 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound]
 // CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem0.loc13, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(constants.%i32) [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn]
 // CHECK:STDOUT:   %bound_method.loc13_21.2: <bound method> = bound_method %nullptr.ref, %specific_fn.loc13 [concrete = constants.%bound_method.ed9]

+ 128 - 118
toolchain/check/testdata/interop/cpp/function/void_pointer.carbon

@@ -84,19 +84,6 @@ fn F() {
   //@dump-sem-ir-end
 }
 
-// --- fail_void.carbon
-
-library "[[@TEST_NAME]]";
-
-import Cpp;
-
-// CHECK:STDERR: fail_void.carbon:[[@LINE+5]]:6: error: parameter has incomplete type `Cpp.void` in function definition [IncompleteTypeInFunctionParam]
-// CHECK:STDERR: fn F(x: Cpp.void) {}
-// CHECK:STDERR:      ^~~~~~~~~~~
-// CHECK:STDERR: fail_void.carbon: note: `Cpp.void` is always-incomplete [CppVoidIncomplete]
-// CHECK:STDERR:
-fn F(x: Cpp.void) {}
-
 // --- non_nullable_pointer.carbon
 
 library "[[@TEST_NAME]]";
@@ -133,7 +120,8 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %ptr: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %foo.type: type = fn_type @foo [concrete]
@@ -142,7 +130,7 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .foo = %foo.cpp_overload_set.value
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
@@ -166,7 +154,8 @@ fn F() {
 // CHECK:STDOUT: --- non_nullable_return_value.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %ptr: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %pattern_type: type = pattern_type %ptr [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete]
@@ -176,7 +165,7 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .foo = %foo.cpp_overload_set.value
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
@@ -198,7 +187,7 @@ fn F() {
 // CHECK:STDOUT:   %foo.call: init %ptr = call imports.%foo.decl()
 // CHECK:STDOUT:   %.loc10_23: type = splice_block %ptr [concrete = constants.%ptr] {
 // CHECK:STDOUT:     %Cpp.ref.loc10_15: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
+// CHECK:STDOUT:     %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
 // CHECK:STDOUT:     %ptr: type = ptr_type %void.ref [concrete = constants.%ptr]
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc10_35.1: %ptr = value_of_initializer %foo.call
@@ -211,7 +200,8 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %OptionalStorage.type: type = facet_type <@OptionalStorage> [concrete]
@@ -222,36 +212,36 @@ fn F() {
 // CHECK:STDOUT:   %ptr.as.OptionalStorage.impl.Some.type.911: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.d9f) [symbolic]
 // CHECK:STDOUT:   %ptr.as.OptionalStorage.impl.Some.2a0: %ptr.as.OptionalStorage.impl.Some.type.911 = struct_value () [symbolic]
 // CHECK:STDOUT:   %type_where: type = facet_type <type where .Self impls <CanDestroy>> [concrete]
-// CHECK:STDOUT:   %OptionalStorage.impl_witness.a64: <witness> = impl_witness imports.%OptionalStorage.impl_witness_table.236, @ptr.as.OptionalStorage.impl(Cpp.void) [concrete]
-// CHECK:STDOUT:   %OptionalStorage.facet.e2a: %OptionalStorage.type = facet_value %ptr.03c, (%OptionalStorage.impl_witness.a64) [concrete]
-// CHECK:STDOUT:   %Optional.75d: type = class_type @Optional, @Optional(%OptionalStorage.facet.e2a) [concrete]
+// CHECK:STDOUT:   %OptionalStorage.impl_witness.cc2: <witness> = impl_witness imports.%OptionalStorage.impl_witness_table.236, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete]
+// CHECK:STDOUT:   %OptionalStorage.facet.2f5: %OptionalStorage.type = facet_value %ptr.874, (%OptionalStorage.impl_witness.cc2) [concrete]
+// CHECK:STDOUT:   %Optional.eca: type = class_type @Optional, @Optional(%OptionalStorage.facet.2f5) [concrete]
 // CHECK:STDOUT:   %foo.type: type = fn_type @foo [concrete]
 // CHECK:STDOUT:   %foo: %foo.type = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.707: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.75d)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.465: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Optional.75d) [concrete]
+// CHECK:STDOUT:   %ImplicitAs.type.ab3: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.eca)> [concrete]
+// CHECK:STDOUT:   %ImplicitAs.Convert.type.142: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Optional.eca) [concrete]
 // CHECK:STDOUT:   %OptionalAs.type.593: type = facet_type <@OptionalAs, @OptionalAs(%T.3fe)> [symbolic]
 // CHECK:STDOUT:   %U.ec3: %OptionalAs.type.593 = symbolic_binding U, 1 [symbolic]
 // CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.type.855: type = fn_type @U.binding.as_type.as.ImplicitAs.impl.Convert.2, @U.binding.as_type.as.ImplicitAs.impl.ea7(%T.3fe, %U.ec3) [symbolic]
 // CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.337: %U.binding.as_type.as.ImplicitAs.impl.Convert.type.855 = struct_value () [symbolic]
-// CHECK:STDOUT:   %OptionalAs.type.a25: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.e2a)> [concrete]
+// CHECK:STDOUT:   %OptionalAs.type.716: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.2f5)> [concrete]
 // CHECK:STDOUT:   %T.binding.as_type.as.OptionalAs.impl.Convert.type.8c6: type = fn_type @T.binding.as_type.as.OptionalAs.impl.Convert, @T.binding.as_type.as.OptionalAs.impl(%T.3fe) [symbolic]
 // CHECK:STDOUT:   %T.binding.as_type.as.OptionalAs.impl.Convert.180: %T.binding.as_type.as.OptionalAs.impl.Convert.type.8c6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %OptionalAs.impl_witness.c4d: <witness> = impl_witness imports.%OptionalAs.impl_witness_table.8ee, @T.binding.as_type.as.OptionalAs.impl(%OptionalStorage.facet.e2a) [concrete]
-// CHECK:STDOUT:   %OptionalAs.facet: %OptionalAs.type.a25 = facet_value %ptr.03c, (%OptionalAs.impl_witness.c4d) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.354: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.da6, @U.binding.as_type.as.ImplicitAs.impl.ea7(%OptionalStorage.facet.e2a, %OptionalAs.facet) [concrete]
-// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.type.efe: type = fn_type @U.binding.as_type.as.ImplicitAs.impl.Convert.2, @U.binding.as_type.as.ImplicitAs.impl.ea7(%OptionalStorage.facet.e2a, %OptionalAs.facet) [concrete]
-// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.aa4: %U.binding.as_type.as.ImplicitAs.impl.Convert.type.efe = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet: %ImplicitAs.type.707 = facet_value %ptr.03c, (%ImplicitAs.impl_witness.354) [concrete]
-// CHECK:STDOUT:   %.120: type = fn_type_with_self_type %ImplicitAs.Convert.type.465, %ImplicitAs.facet [concrete]
-// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %U.binding.as_type.as.ImplicitAs.impl.Convert.aa4, @U.binding.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.e2a, %OptionalAs.facet) [concrete]
-// CHECK:STDOUT:   %facet_value.9af: %type_where = facet_value %Optional.75d, () [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.773: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.9af) [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.9de: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.773 = struct_value () [concrete]
+// CHECK:STDOUT:   %OptionalAs.impl_witness.049: <witness> = impl_witness imports.%OptionalAs.impl_witness_table.8ee, @T.binding.as_type.as.OptionalAs.impl(%OptionalStorage.facet.2f5) [concrete]
+// CHECK:STDOUT:   %OptionalAs.facet: %OptionalAs.type.716 = facet_value %ptr.874, (%OptionalAs.impl_witness.049) [concrete]
+// CHECK:STDOUT:   %ImplicitAs.impl_witness.53b: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.da6, @U.binding.as_type.as.ImplicitAs.impl.ea7(%OptionalStorage.facet.2f5, %OptionalAs.facet) [concrete]
+// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.type.92a: type = fn_type @U.binding.as_type.as.ImplicitAs.impl.Convert.2, @U.binding.as_type.as.ImplicitAs.impl.ea7(%OptionalStorage.facet.2f5, %OptionalAs.facet) [concrete]
+// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.2ca: %U.binding.as_type.as.ImplicitAs.impl.Convert.type.92a = struct_value () [concrete]
+// CHECK:STDOUT:   %ImplicitAs.facet: %ImplicitAs.type.ab3 = facet_value %ptr.874, (%ImplicitAs.impl_witness.53b) [concrete]
+// CHECK:STDOUT:   %.1ad: type = fn_type_with_self_type %ImplicitAs.Convert.type.142, %ImplicitAs.facet [concrete]
+// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %U.binding.as_type.as.ImplicitAs.impl.Convert.2ca, @U.binding.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.2f5, %OptionalAs.facet) [concrete]
+// CHECK:STDOUT:   %facet_value.87a: %type_where = facet_value %Optional.eca, () [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.f05: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.87a) [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.afe: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.f05 = struct_value () [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .foo = %foo.cpp_overload_set.value
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
@@ -266,10 +256,10 @@ fn F() {
 // CHECK:STDOUT:     <elided>
 // CHECK:STDOUT:   } {
 // CHECK:STDOUT:     <elided>
-// CHECK:STDOUT:     %.loc10_16.1: type = splice_block %Optional [concrete = constants.%Optional.75d] {
-// CHECK:STDOUT:       %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.03c, (constants.%OptionalStorage.impl_witness.a64) [concrete = constants.%OptionalStorage.facet.e2a]
-// CHECK:STDOUT:       %.loc10_16.2: %OptionalStorage.type = converted constants.%ptr.03c, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.e2a]
-// CHECK:STDOUT:       %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.e2a) [concrete = constants.%Optional.75d]
+// CHECK:STDOUT:     %.loc10_16.1: type = splice_block %Optional [concrete = constants.%Optional.eca] {
+// CHECK:STDOUT:       %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.874, (constants.%OptionalStorage.impl_witness.cc2) [concrete = constants.%OptionalStorage.facet.2f5]
+// CHECK:STDOUT:       %.loc10_16.2: %OptionalStorage.type = converted constants.%ptr.874, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.2f5]
+// CHECK:STDOUT:       %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.2f5) [concrete = constants.%Optional.eca]
 // CHECK:STDOUT:     }
 // CHECK:STDOUT:     <elided>
 // CHECK:STDOUT:   }
@@ -279,22 +269,22 @@ fn F() {
 // CHECK:STDOUT:   %OptionalAs.impl_witness_table.8ee = impl_witness_table (%Core.import_ref.7fb), @T.binding.as_type.as.OptionalAs.impl [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: fn @F(%input.param: %ptr.03c) {
+// CHECK:STDOUT: fn @F(%input.param: %ptr.874) {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   %Cpp.ref.loc10: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
 // CHECK:STDOUT:   %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value]
-// CHECK:STDOUT:   %input.ref: %ptr.03c = name_ref input, %input
-// CHECK:STDOUT:   %impl.elem0: %.120 = impl_witness_access constants.%ImplicitAs.impl_witness.354, element0 [concrete = constants.%U.binding.as_type.as.ImplicitAs.impl.Convert.aa4]
+// CHECK:STDOUT:   %input.ref: %ptr.874 = name_ref input, %input
+// CHECK:STDOUT:   %impl.elem0: %.1ad = impl_witness_access constants.%ImplicitAs.impl_witness.53b, element0 [concrete = constants.%U.binding.as_type.as.ImplicitAs.impl.Convert.2ca]
 // CHECK:STDOUT:   %bound_method.loc10_11.1: <bound method> = bound_method %input.ref, %impl.elem0
-// CHECK:STDOUT:   %specific_fn: <specific function> = specific_function %impl.elem0, @U.binding.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.e2a, constants.%OptionalAs.facet) [concrete = constants.%U.binding.as_type.as.ImplicitAs.impl.Convert.specific_fn]
+// CHECK:STDOUT:   %specific_fn: <specific function> = specific_function %impl.elem0, @U.binding.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.2f5, constants.%OptionalAs.facet) [concrete = constants.%U.binding.as_type.as.ImplicitAs.impl.Convert.specific_fn]
 // CHECK:STDOUT:   %bound_method.loc10_11.2: <bound method> = bound_method %input.ref, %specific_fn
-// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.75d = call %bound_method.loc10_11.2(%input.ref)
-// CHECK:STDOUT:   %.loc10_11.1: init %Optional.75d = converted %input.ref, %U.binding.as_type.as.ImplicitAs.impl.Convert.call
-// CHECK:STDOUT:   %.loc10_11.2: ref %Optional.75d = temporary_storage
-// CHECK:STDOUT:   %.loc10_11.3: ref %Optional.75d = temporary %.loc10_11.2, %.loc10_11.1
-// CHECK:STDOUT:   %.loc10_11.4: %Optional.75d = acquire_value %.loc10_11.3
+// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.eca = call %bound_method.loc10_11.2(%input.ref)
+// CHECK:STDOUT:   %.loc10_11.1: init %Optional.eca = converted %input.ref, %U.binding.as_type.as.ImplicitAs.impl.Convert.call
+// CHECK:STDOUT:   %.loc10_11.2: ref %Optional.eca = temporary_storage
+// CHECK:STDOUT:   %.loc10_11.3: ref %Optional.eca = temporary %.loc10_11.2, %.loc10_11.1
+// CHECK:STDOUT:   %.loc10_11.4: %Optional.eca = acquire_value %.loc10_11.3
 // CHECK:STDOUT:   %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc10_11.4)
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %.loc10_11.3, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.9de
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %.loc10_11.3, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.afe
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT:   %bound_method.loc10_11.3: <bound method> = bound_method %.loc10_11.3, %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn
 // CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_11.3(%.loc10_11.3)
@@ -312,34 +302,43 @@ fn F() {
 // CHECK:STDOUT:   %T.3fe: %OptionalStorage.type = symbolic_binding T, 0 [symbolic]
 // CHECK:STDOUT:   %Optional.None.type.193: type = fn_type @Optional.None, @Optional(%T.3fe) [symbolic]
 // CHECK:STDOUT:   %Optional.None.dc7: %Optional.None.type.193 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %T.d9f: type = symbolic_binding T, 0 [symbolic]
 // CHECK:STDOUT:   %ptr.4f0: type = ptr_type %T.d9f [symbolic]
 // CHECK:STDOUT:   %MaybeUnformed.cff: type = class_type @MaybeUnformed, @MaybeUnformed(%ptr.4f0) [symbolic]
 // CHECK:STDOUT:   %ptr.as.OptionalStorage.impl.None.type.8ed: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.d9f) [symbolic]
 // CHECK:STDOUT:   %ptr.as.OptionalStorage.impl.None.41a: %ptr.as.OptionalStorage.impl.None.type.8ed = struct_value () [symbolic]
-// CHECK:STDOUT:   %OptionalStorage.impl_witness.328: <witness> = impl_witness imports.%OptionalStorage.impl_witness_table.f52, @ptr.as.OptionalStorage.impl(Cpp.void) [concrete]
-// CHECK:STDOUT:   %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.03c, (%OptionalStorage.impl_witness.328) [concrete]
-// CHECK:STDOUT:   %Optional.db3: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete]
-// CHECK:STDOUT:   %Optional.None.type.623: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet) [concrete]
-// CHECK:STDOUT:   %Optional.None.97f: %Optional.None.type.623 = struct_value () [concrete]
-// CHECK:STDOUT:   %Optional.None.specific_fn: <specific function> = specific_function %Optional.None.97f, @Optional.None(%OptionalStorage.facet) [concrete]
+// CHECK:STDOUT:   %OptionalStorage.impl_witness.ab6: <witness> = impl_witness imports.%OptionalStorage.impl_witness_table.f52, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete]
+// CHECK:STDOUT:   %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.874, (%OptionalStorage.impl_witness.ab6) [concrete]
+// CHECK:STDOUT:   %Optional.082: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete]
+// CHECK:STDOUT:   %Optional.None.type.fe0: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet) [concrete]
+// CHECK:STDOUT:   %Optional.None.a64: %Optional.None.type.fe0 = struct_value () [concrete]
+// CHECK:STDOUT:   %Optional.None.specific_fn: <specific function> = specific_function %Optional.None.a64, @Optional.None(%OptionalStorage.facet) [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [concrete] {
 // CHECK:STDOUT:     .Optional = %Core.Optional
+// CHECK:STDOUT:     .CppCompat = %CppCompat.c59
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
 // CHECK:STDOUT:     .foo = %foo.cpp_overload_set.value
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value]
 // CHECK:STDOUT:   %Core.Optional: %Optional.type = import_ref Core//prelude/types/optional, Optional, loaded [concrete = constants.%Optional.generic]
 // CHECK:STDOUT:   %Core.import_ref.f1d: @Optional.%Optional.None.type (%Optional.None.type.193) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @Optional.%Optional.None (constants.%Optional.None.dc7)]
+// CHECK:STDOUT:   %Core.CppCompat: <namespace> = import_ref Core//prelude, CppCompat, loaded
+// CHECK:STDOUT:   %CppCompat.c59: <namespace> = namespace %Core.CppCompat, [concrete] {
+// CHECK:STDOUT:     .VoidBase = %Core.VoidBase
+// CHECK:STDOUT:     import Core//prelude
+// CHECK:STDOUT:     import Core//prelude/...
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Core.VoidBase: type = import_ref Core//prelude/types/cpp/void, VoidBase, loaded [concrete = constants.%Cpp.void]
 // CHECK:STDOUT:   %Core.import_ref.2fb: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.cff)]
 // CHECK:STDOUT:   %Core.import_ref.1d4: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.8ed) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.41a)]
 // CHECK:STDOUT:   %Core.import_ref.720 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded
@@ -355,15 +354,15 @@ fn F() {
 // CHECK:STDOUT:   %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
 // CHECK:STDOUT:   %Optional.ref: %Optional.type = name_ref Optional, imports.%Core.Optional [concrete = constants.%Optional.generic]
 // CHECK:STDOUT:   %Cpp.ref.loc14_25: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:   %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
-// CHECK:STDOUT:   %ptr: type = ptr_type %void.ref [concrete = constants.%ptr.03c]
-// CHECK:STDOUT:   %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.328) [concrete = constants.%OptionalStorage.facet]
+// CHECK:STDOUT:   %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
+// CHECK:STDOUT:   %ptr: type = ptr_type %void.ref [concrete = constants.%ptr.874]
+// CHECK:STDOUT:   %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.ab6) [concrete = constants.%OptionalStorage.facet]
 // CHECK:STDOUT:   %.loc14_34: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet]
-// CHECK:STDOUT:   %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.db3]
-// CHECK:STDOUT:   %.loc14_35: %Optional.None.type.623 = specific_constant imports.%Core.import_ref.f1d, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.97f]
-// CHECK:STDOUT:   %None.ref: %Optional.None.type.623 = name_ref None, %.loc14_35 [concrete = constants.%Optional.None.97f]
+// CHECK:STDOUT:   %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.082]
+// CHECK:STDOUT:   %.loc14_35: %Optional.None.type.fe0 = specific_constant imports.%Core.import_ref.f1d, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.a64]
+// CHECK:STDOUT:   %None.ref: %Optional.None.type.fe0 = name_ref None, %.loc14_35 [concrete = constants.%Optional.None.a64]
 // CHECK:STDOUT:   %Optional.None.specific_fn: <specific function> = specific_function %None.ref, @Optional.None(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.specific_fn]
-// CHECK:STDOUT:   %Optional.None.call: init %Optional.db3 = call %Optional.None.specific_fn()
+// CHECK:STDOUT:   %Optional.None.call: init %Optional.082 = call %Optional.None.specific_fn()
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
@@ -374,38 +373,47 @@ fn F() {
 // CHECK:STDOUT:   %Optional.type: type = generic_class_type @Optional [concrete]
 // CHECK:STDOUT:   %Optional.generic: %Optional.type = struct_value () [concrete]
 // CHECK:STDOUT:   %OptionalStorage.type: type = facet_type <@OptionalStorage> [concrete]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %T.d9f: type = symbolic_binding T, 0 [symbolic]
 // CHECK:STDOUT:   %ptr.4f0: type = ptr_type %T.d9f [symbolic]
 // CHECK:STDOUT:   %MaybeUnformed.cff: type = class_type @MaybeUnformed, @MaybeUnformed(%ptr.4f0) [symbolic]
 // CHECK:STDOUT:   %type_where: type = facet_type <type where .Self impls <CanDestroy>> [concrete]
 // CHECK:STDOUT:   %Destroy.type: type = facet_type <@Destroy> [concrete]
-// CHECK:STDOUT:   %OptionalStorage.impl_witness.e1a: <witness> = impl_witness imports.%OptionalStorage.impl_witness_table.2f8, @ptr.as.OptionalStorage.impl(Cpp.void) [concrete]
-// CHECK:STDOUT:   %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.03c, (%OptionalStorage.impl_witness.e1a) [concrete]
-// CHECK:STDOUT:   %Optional.af8: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete]
-// CHECK:STDOUT:   %pattern_type.f90: type = pattern_type %Optional.af8 [concrete]
+// CHECK:STDOUT:   %OptionalStorage.impl_witness.0b2: <witness> = impl_witness imports.%OptionalStorage.impl_witness_table.2f8, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete]
+// CHECK:STDOUT:   %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.874, (%OptionalStorage.impl_witness.0b2) [concrete]
+// CHECK:STDOUT:   %Optional.158: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete]
+// CHECK:STDOUT:   %pattern_type.005: type = pattern_type %Optional.158 [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %foo.type: type = fn_type @foo [concrete]
 // CHECK:STDOUT:   %foo: %foo.type = struct_value () [concrete]
-// CHECK:STDOUT:   %facet_value.2d8: %type_where = facet_value %Optional.af8, () [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.d7f: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.2d8) [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.7ff: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.d7f = struct_value () [concrete]
+// CHECK:STDOUT:   %facet_value.911: %type_where = facet_value %Optional.158, () [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.99d: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.911) [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.df1: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.99d = struct_value () [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Core: <namespace> = namespace file.%Core.import, [concrete] {
 // CHECK:STDOUT:     .Optional = %Core.Optional
+// CHECK:STDOUT:     .CppCompat = %CppCompat.c59
 // CHECK:STDOUT:     .Destroy = %Core.Destroy
 // CHECK:STDOUT:     import Core//prelude
 // CHECK:STDOUT:     import Core//prelude/...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .foo = %foo.cpp_overload_set.value
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Core.Optional: %Optional.type = import_ref Core//prelude/types/optional, Optional, loaded [concrete = constants.%Optional.generic]
+// CHECK:STDOUT:   %Core.CppCompat: <namespace> = import_ref Core//prelude, CppCompat, loaded
+// CHECK:STDOUT:   %CppCompat.c59: <namespace> = namespace %Core.CppCompat, [concrete] {
+// CHECK:STDOUT:     .VoidBase = %Core.VoidBase
+// CHECK:STDOUT:     import Core//prelude
+// CHECK:STDOUT:     import Core//prelude/...
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Core.VoidBase: type = import_ref Core//prelude/types/cpp/void, VoidBase, loaded [concrete = constants.%Cpp.void]
 // CHECK:STDOUT:   %Core.import_ref.2fb: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.cff)]
 // CHECK:STDOUT:   %Core.import_ref.a7c = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded
 // CHECK:STDOUT:   %Core.import_ref.720 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded
@@ -416,9 +424,9 @@ fn F() {
 // CHECK:STDOUT:   %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] {
 // CHECK:STDOUT:     <elided>
 // CHECK:STDOUT:   } {
-// CHECK:STDOUT:     %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.03c, (constants.%OptionalStorage.impl_witness.e1a) [concrete = constants.%OptionalStorage.facet]
-// CHECK:STDOUT:     %.loc10: %OptionalStorage.type = converted constants.%ptr.03c, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet]
-// CHECK:STDOUT:     %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.af8]
+// CHECK:STDOUT:     %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.874, (constants.%OptionalStorage.impl_witness.0b2) [concrete = constants.%OptionalStorage.facet]
+// CHECK:STDOUT:     %.loc10: %OptionalStorage.type = converted constants.%ptr.874, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet]
+// CHECK:STDOUT:     %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.158]
 // CHECK:STDOUT:     <elided>
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
@@ -427,26 +435,26 @@ fn F() {
 // CHECK:STDOUT: fn @F() {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %output.patt: %pattern_type.f90 = value_binding_pattern output [concrete]
+// CHECK:STDOUT:     %output.patt: %pattern_type.005 = value_binding_pattern output [concrete]
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %Cpp.ref.loc10_42: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
 // CHECK:STDOUT:   %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value]
-// CHECK:STDOUT:   %foo.call: init %Optional.af8 = call imports.%foo.decl()
-// CHECK:STDOUT:   %.loc10_38.1: type = splice_block %Optional [concrete = constants.%Optional.af8] {
+// CHECK:STDOUT:   %foo.call: init %Optional.158 = call imports.%foo.decl()
+// CHECK:STDOUT:   %.loc10_38.1: type = splice_block %Optional [concrete = constants.%Optional.158] {
 // CHECK:STDOUT:     %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
 // CHECK:STDOUT:     %Optional.ref: %Optional.type = name_ref Optional, imports.%Core.Optional [concrete = constants.%Optional.generic]
 // CHECK:STDOUT:     %Cpp.ref.loc10_29: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
-// CHECK:STDOUT:     %ptr: type = ptr_type %void.ref [concrete = constants.%ptr.03c]
-// CHECK:STDOUT:     %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.e1a) [concrete = constants.%OptionalStorage.facet]
+// CHECK:STDOUT:     %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
+// CHECK:STDOUT:     %ptr: type = ptr_type %void.ref [concrete = constants.%ptr.874]
+// CHECK:STDOUT:     %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.0b2) [concrete = constants.%OptionalStorage.facet]
 // CHECK:STDOUT:     %.loc10_38.2: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet]
-// CHECK:STDOUT:     %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.af8]
+// CHECK:STDOUT:     %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.158]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %.loc10_50.1: ref %Optional.af8 = temporary_storage
-// CHECK:STDOUT:   %.loc10_50.2: ref %Optional.af8 = temporary %.loc10_50.1, %foo.call
-// CHECK:STDOUT:   %.loc10_50.3: %Optional.af8 = acquire_value %.loc10_50.2
-// CHECK:STDOUT:   %output: %Optional.af8 = value_binding output, %.loc10_50.3
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %.loc10_50.2, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.7ff
+// CHECK:STDOUT:   %.loc10_50.1: ref %Optional.158 = temporary_storage
+// CHECK:STDOUT:   %.loc10_50.2: ref %Optional.158 = temporary %.loc10_50.1, %foo.call
+// CHECK:STDOUT:   %.loc10_50.3: %Optional.158 = acquire_value %.loc10_50.2
+// CHECK:STDOUT:   %output: %Optional.158 = value_binding output, %.loc10_50.3
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %.loc10_50.2, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.df1
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT:   %bound_method: <bound method> = bound_method %.loc10_50.2, %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn
 // CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%.loc10_50.2)
@@ -457,9 +465,10 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
-// CHECK:STDOUT:   %ptr.730: type = ptr_type %ptr.03c [concrete]
-// CHECK:STDOUT:   %pattern_type.283: type = pattern_type %ptr.730 [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
+// CHECK:STDOUT:   %ptr.e0b: type = ptr_type %ptr.874 [concrete]
+// CHECK:STDOUT:   %pattern_type.21b: type = pattern_type %ptr.e0b [concrete]
 // CHECK:STDOUT:   %Return.cpp_overload_set.type: type = cpp_overload_set_type @Return.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %Return.cpp_overload_set.value: %Return.cpp_overload_set.type = cpp_overload_set_value @Return.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %Return.type: type = fn_type @Return [concrete]
@@ -469,14 +478,14 @@ fn F() {
 // CHECK:STDOUT:   %Invoke.type: type = fn_type @Invoke [concrete]
 // CHECK:STDOUT:   %Invoke: %Invoke.type = struct_value () [concrete]
 // CHECK:STDOUT:   %type_where: type = facet_type <type where .Self impls <CanDestroy>> [concrete]
-// CHECK:STDOUT:   %facet_value: %type_where = facet_value %ptr.730, () [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.7d6: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.62a: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.7d6 = struct_value () [concrete]
+// CHECK:STDOUT:   %facet_value: %type_where = facet_value %ptr.e0b, () [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.40b: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.554: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.40b = struct_value () [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .Return = %Return.cpp_overload_set.value
 // CHECK:STDOUT:     .Invoke = %Invoke.cpp_overload_set.value
 // CHECK:STDOUT:     import Cpp//...
@@ -498,27 +507,27 @@ fn F() {
 // CHECK:STDOUT: fn @F() {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %non_nullable_pointer.patt: %pattern_type.283 = ref_binding_pattern non_nullable_pointer [concrete]
-// CHECK:STDOUT:     %non_nullable_pointer.var_patt: %pattern_type.283 = var_pattern %non_nullable_pointer.patt [concrete]
+// CHECK:STDOUT:     %non_nullable_pointer.patt: %pattern_type.21b = ref_binding_pattern non_nullable_pointer [concrete]
+// CHECK:STDOUT:     %non_nullable_pointer.var_patt: %pattern_type.21b = var_pattern %non_nullable_pointer.patt [concrete]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %non_nullable_pointer.var: ref %ptr.730 = var %non_nullable_pointer.var_patt
+// CHECK:STDOUT:   %non_nullable_pointer.var: ref %ptr.e0b = var %non_nullable_pointer.var_patt
 // CHECK:STDOUT:   %Cpp.ref.loc11_42: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
 // CHECK:STDOUT:   %Return.ref: %Return.cpp_overload_set.type = name_ref Return, imports.%Return.cpp_overload_set.value [concrete = constants.%Return.cpp_overload_set.value]
-// CHECK:STDOUT:   %Return.call: init %ptr.730 = call imports.%Return.decl()
+// CHECK:STDOUT:   %Return.call: init %ptr.e0b = call imports.%Return.decl()
 // CHECK:STDOUT:   assign %non_nullable_pointer.var, %Return.call
-// CHECK:STDOUT:   %.loc11: type = splice_block %ptr.loc11_38 [concrete = constants.%ptr.730] {
+// CHECK:STDOUT:   %.loc11: type = splice_block %ptr.loc11_38 [concrete = constants.%ptr.e0b] {
 // CHECK:STDOUT:     %Cpp.ref.loc11_29: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
-// CHECK:STDOUT:     %ptr.loc11_37: type = ptr_type %void.ref [concrete = constants.%ptr.03c]
-// CHECK:STDOUT:     %ptr.loc11_38: type = ptr_type %ptr.loc11_37 [concrete = constants.%ptr.730]
+// CHECK:STDOUT:     %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
+// CHECK:STDOUT:     %ptr.loc11_37: type = ptr_type %void.ref [concrete = constants.%ptr.874]
+// CHECK:STDOUT:     %ptr.loc11_38: type = ptr_type %ptr.loc11_37 [concrete = constants.%ptr.e0b]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %non_nullable_pointer: ref %ptr.730 = ref_binding non_nullable_pointer, %non_nullable_pointer.var
+// CHECK:STDOUT:   %non_nullable_pointer: ref %ptr.e0b = ref_binding non_nullable_pointer, %non_nullable_pointer.var
 // CHECK:STDOUT:   %Cpp.ref.loc12: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
 // CHECK:STDOUT:   %Invoke.ref: %Invoke.cpp_overload_set.type = name_ref Invoke, imports.%Invoke.cpp_overload_set.value [concrete = constants.%Invoke.cpp_overload_set.value]
-// CHECK:STDOUT:   %non_nullable_pointer.ref: ref %ptr.730 = name_ref non_nullable_pointer, %non_nullable_pointer
-// CHECK:STDOUT:   %.loc12: %ptr.730 = acquire_value %non_nullable_pointer.ref
+// CHECK:STDOUT:   %non_nullable_pointer.ref: ref %ptr.e0b = name_ref non_nullable_pointer, %non_nullable_pointer
+// CHECK:STDOUT:   %.loc12: %ptr.e0b = acquire_value %non_nullable_pointer.ref
 // CHECK:STDOUT:   %Invoke.call: init %empty_tuple.type = call imports.%Invoke.decl(%.loc12)
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %non_nullable_pointer.var, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.62a
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %non_nullable_pointer.var, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.554
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT:   %bound_method: <bound method> = bound_method %non_nullable_pointer.var, %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn
 // CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%non_nullable_pointer.var)
@@ -529,9 +538,10 @@ fn F() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %const: type = const_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %const: type = const_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %ptr: type = ptr_type %const [concrete]
-// CHECK:STDOUT:   %pattern_type.39c: type = pattern_type %ptr [concrete]
+// CHECK:STDOUT:   %pattern_type.972: type = pattern_type %ptr [concrete]
 // CHECK:STDOUT:   %Return.cpp_overload_set.type: type = cpp_overload_set_type @Return.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %Return.cpp_overload_set.value: %Return.cpp_overload_set.type = cpp_overload_set_value @Return.cpp_overload_set [concrete]
 // CHECK:STDOUT:   %Return.type: type = fn_type @Return [concrete]
@@ -542,13 +552,13 @@ fn F() {
 // CHECK:STDOUT:   %Invoke: %Invoke.type = struct_value () [concrete]
 // CHECK:STDOUT:   %type_where: type = facet_type <type where .Self impls <CanDestroy>> [concrete]
 // CHECK:STDOUT:   %facet_value: %type_where = facet_value %ptr, () [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.db8: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [concrete]
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.a82: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.db8 = struct_value () [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.type.755: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [concrete]
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.565: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.755 = struct_value () [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .Return = %Return.cpp_overload_set.value
 // CHECK:STDOUT:     .Invoke = %Invoke.cpp_overload_set.value
 // CHECK:STDOUT:     import Cpp//...
@@ -570,8 +580,8 @@ fn F() {
 // CHECK:STDOUT: fn @F() {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %const_void_pointer.patt: %pattern_type.39c = ref_binding_pattern const_void_pointer [concrete]
-// CHECK:STDOUT:     %const_void_pointer.var_patt: %pattern_type.39c = var_pattern %const_void_pointer.patt [concrete]
+// CHECK:STDOUT:     %const_void_pointer.patt: %pattern_type.972 = ref_binding_pattern const_void_pointer [concrete]
+// CHECK:STDOUT:     %const_void_pointer.var_patt: %pattern_type.972 = var_pattern %const_void_pointer.patt [concrete]
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %const_void_pointer.var: ref %ptr = var %const_void_pointer.var_patt
 // CHECK:STDOUT:   %Cpp.ref.loc11_45: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
@@ -580,7 +590,7 @@ fn F() {
 // CHECK:STDOUT:   assign %const_void_pointer.var, %Return.call
 // CHECK:STDOUT:   %.loc11: type = splice_block %ptr [concrete = constants.%ptr] {
 // CHECK:STDOUT:     %Cpp.ref.loc11_33: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
+// CHECK:STDOUT:     %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
 // CHECK:STDOUT:     %const: type = const_type %void.ref [concrete = constants.%const]
 // CHECK:STDOUT:     %ptr: type = ptr_type %const [concrete = constants.%ptr]
 // CHECK:STDOUT:   }
@@ -590,7 +600,7 @@ fn F() {
 // CHECK:STDOUT:   %const_void_pointer.ref: ref %ptr = name_ref const_void_pointer, %const_void_pointer
 // CHECK:STDOUT:   %.loc12: %ptr = acquire_value %const_void_pointer.ref
 // CHECK:STDOUT:   %Invoke.call: init %empty_tuple.type = call imports.%Invoke.decl(%.loc12)
-// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %const_void_pointer.var, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.a82
+// CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.bound: <bound method> = bound_method %const_void_pointer.var, constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.565
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT:   %bound_method: <bound method> = bound_method %const_void_pointer.var, %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn
 // CHECK:STDOUT:   %DestroyT.binding.as_type.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%const_void_pointer.var)

+ 66 - 0
toolchain/check/testdata/interop/cpp/void.carbon

@@ -0,0 +1,66 @@
+// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
+//
+// AUTOUPDATE
+// TIP: To test this file alone, run:
+// TIP:   bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/void.carbon
+// TIP: To dump output, run:
+// TIP:   bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/void.carbon
+
+// --- void_not_incomplete.carbon
+
+library "[[@TEST_NAME]]";
+
+import Cpp;
+
+// This is valid, unlike in C++, because `Cpp.void` is complete but abstract in
+// Carbon. Values of type `Cpp.void` exist, but objects of that type do not.
+fn F(x: Cpp.void) {}
+
+// --- fail_void_abstract.carbon
+
+library "[[@TEST_NAME]]";
+
+import Cpp;
+
+fn G() {
+  // CHECK:STDERR: fail_void_abstract.carbon:[[@LINE+7]]:10: error: binding pattern has abstract type `Cpp.void` in `var` pattern [AbstractTypeInVarPattern]
+  // CHECK:STDERR:   var x: Cpp.void;
+  // CHECK:STDERR:          ^~~~~~~~
+  // CHECK:STDERR: {{.*}}/prelude/types/cpp/void.carbon:22:1: note: class was declared abstract here [ClassAbstractHere]
+  // CHECK:STDERR: abstract class CppCompat.VoidBase {
+  // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  // CHECK:STDERR:
+  var x: Cpp.void;
+}
+
+// --- fail_void_argument.carbon
+
+library "[[@TEST_NAME]]";
+
+import Cpp inline "void F(int);";
+
+fn G(v: Cpp.void) {
+  // CHECK:STDERR: fail_void_argument.carbon:[[@LINE+7]]:10: error: no matching function for call to 'F' [CppInteropParseError]
+  // CHECK:STDERR:    14 |   Cpp.F(v);
+  // CHECK:STDERR:       |          ^
+  // CHECK:STDERR: fail_void_argument.carbon:[[@LINE-6]]:6: note: candidate function not viable: cannot convert argument of incomplete type 'void' to 'int' for 1st argument [CppInteropParseNote]
+  // CHECK:STDERR:     4 | void F(int);
+  // CHECK:STDERR:       |      ^ ~~~
+  // CHECK:STDERR:
+  Cpp.F(v);
+}
+
+fn H(p: Cpp.void*) {
+  // CHECK:STDERR: fail_void_argument.carbon:[[@LINE+7]]:11: error: no matching function for call to 'F' [CppInteropParseError]
+  // CHECK:STDERR:    25 |   Cpp.F(*p);
+  // CHECK:STDERR:       |           ^
+  // CHECK:STDERR: fail_void_argument.carbon:[[@LINE-17]]:6: note: candidate function not viable: cannot convert argument of incomplete type 'void' to 'int' for 1st argument [CppInteropParseNote]
+  // CHECK:STDERR:     4 | void F(int);
+  // CHECK:STDERR:       |      ^ ~~~
+  // CHECK:STDERR:
+  Cpp.F(*p);
+}

+ 29 - 25
toolchain/check/testdata/interop/cpp/void_pointer.carbon

@@ -99,14 +99,15 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %S: type = class_type @S [concrete]
 // CHECK:STDOUT:   %ptr.5c7: type = ptr_type %S [concrete]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
-// CHECK:STDOUT:   %pattern_type.1f6: type = pattern_type %ptr.03c [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
+// CHECK:STDOUT:   %pattern_type.9fb: type = pattern_type %ptr.874 [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
 // CHECK:STDOUT:     .S = %S.decl
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %S.decl: type = class_decl @S [concrete = constants.%S] {} {}
@@ -115,16 +116,16 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT: fn @F(%input.param: %ptr.5c7) {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %p.patt: %pattern_type.1f6 = value_binding_pattern p [concrete]
+// CHECK:STDOUT:     %p.patt: %pattern_type.9fb = value_binding_pattern p [concrete]
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %input.ref: %ptr.5c7 = name_ref input, %input
-// CHECK:STDOUT:   %.loc17_18: type = splice_block %ptr.loc17 [concrete = constants.%ptr.03c] {
+// CHECK:STDOUT:   %.loc17_18: type = splice_block %ptr.loc17 [concrete = constants.%ptr.874] {
 // CHECK:STDOUT:     %Cpp.ref.loc17: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
-// CHECK:STDOUT:     %ptr.loc17: type = ptr_type %void.ref [concrete = constants.%ptr.03c]
+// CHECK:STDOUT:     %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
+// CHECK:STDOUT:     %ptr.loc17: type = ptr_type %void.ref [concrete = constants.%ptr.874]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %.loc17_22: %ptr.03c = converted %input.ref, <error> [concrete = <error>]
-// CHECK:STDOUT:   %p: %ptr.03c = value_binding p, <error> [concrete = <error>]
+// CHECK:STDOUT:   %.loc17_22: %ptr.874 = converted %input.ref, <error> [concrete = <error>]
+// CHECK:STDOUT:   %p: %ptr.874 = value_binding p, <error> [concrete = <error>]
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
@@ -133,13 +134,14 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %C: type = class_type @C [concrete]
 // CHECK:STDOUT:   %ptr.019: type = ptr_type %C [concrete]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
-// CHECK:STDOUT:   %pattern_type.1f6: type = pattern_type %ptr.03c [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
+// CHECK:STDOUT:   %pattern_type.9fb: type = pattern_type %ptr.874 [concrete]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT: }
@@ -147,23 +149,24 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT: fn @F(%input.param: %ptr.019) {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %p.patt: %pattern_type.1f6 = value_binding_pattern p [concrete]
+// CHECK:STDOUT:     %p.patt: %pattern_type.9fb = value_binding_pattern p [concrete]
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %input.ref: %ptr.019 = name_ref input, %input
-// CHECK:STDOUT:   %.loc17_18: type = splice_block %ptr.loc17 [concrete = constants.%ptr.03c] {
+// CHECK:STDOUT:   %.loc17_18: type = splice_block %ptr.loc17 [concrete = constants.%ptr.874] {
 // CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %void.ref: type = name_ref void, Cpp.void [concrete = Cpp.void]
-// CHECK:STDOUT:     %ptr.loc17: type = ptr_type %void.ref [concrete = constants.%ptr.03c]
+// CHECK:STDOUT:     %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void]
+// CHECK:STDOUT:     %ptr.loc17: type = ptr_type %void.ref [concrete = constants.%ptr.874]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %.loc17_22: %ptr.03c = converted %input.ref, <error> [concrete = <error>]
-// CHECK:STDOUT:   %p: %ptr.03c = value_binding p, <error> [concrete = <error>]
+// CHECK:STDOUT:   %.loc17_22: %ptr.874 = converted %input.ref, <error> [concrete = <error>]
+// CHECK:STDOUT:   %p: %ptr.874 = value_binding p, <error> [concrete = <error>]
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: --- fail_todo_explicit_as_from_void_pointer_to_cpp_class_pointer.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %S: type = class_type @S [concrete]
 // CHECK:STDOUT:   %ptr.5c7: type = ptr_type %S [concrete]
 // CHECK:STDOUT:   %pattern_type.259: type = pattern_type %ptr.5c7 [concrete]
@@ -171,19 +174,19 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT:
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .void = Cpp.void
+// CHECK:STDOUT:     .void = constants.%Cpp.void
 // CHECK:STDOUT:     .S = %S.decl
 // CHECK:STDOUT:     import Cpp//...
 // CHECK:STDOUT:   }
 // CHECK:STDOUT:   %S.decl: type = class_decl @S [concrete = constants.%S] {} {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: fn @F(%input.param: %ptr.03c) {
+// CHECK:STDOUT: fn @F(%input.param: %ptr.874) {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
 // CHECK:STDOUT:     %p.patt: %pattern_type.259 = value_binding_pattern p [concrete]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %input.ref: %ptr.03c = name_ref input, %input
+// CHECK:STDOUT:   %input.ref: %ptr.874 = name_ref input, %input
 // CHECK:STDOUT:   %Cpp.ref.loc17_28: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
 // CHECK:STDOUT:   %S.ref.loc17_31: type = name_ref S, imports.%S.decl [concrete = constants.%S]
 // CHECK:STDOUT:   %ptr.loc17_33: type = ptr_type %S.ref.loc17_31 [concrete = constants.%ptr.5c7]
@@ -201,7 +204,8 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {
 // CHECK:STDOUT:   %C: type = class_type @C [concrete]
-// CHECK:STDOUT:   %ptr.03c: type = ptr_type Cpp.void [concrete]
+// CHECK:STDOUT:   %Cpp.void: type = class_type @VoidBase [concrete]
+// CHECK:STDOUT:   %ptr.874: type = ptr_type %Cpp.void [concrete]
 // CHECK:STDOUT:   %ptr.019: type = ptr_type %C [concrete]
 // CHECK:STDOUT:   %pattern_type.44a: type = pattern_type %ptr.019 [concrete]
 // CHECK:STDOUT: }
@@ -209,12 +213,12 @@ fn F(input: Cpp.void*) {
 // CHECK:STDOUT: imports {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: fn @F(%input.param: %ptr.03c) {
+// CHECK:STDOUT: fn @F(%input.param: %ptr.874) {
 // CHECK:STDOUT: !entry:
 // CHECK:STDOUT:   name_binding_decl {
 // CHECK:STDOUT:     %p.patt: %pattern_type.44a = value_binding_pattern p [concrete]
 // CHECK:STDOUT:   }
-// CHECK:STDOUT:   %input.ref: %ptr.03c = name_ref input, %input
+// CHECK:STDOUT:   %input.ref: %ptr.874 = name_ref input, %input
 // CHECK:STDOUT:   %C.ref.loc17_24: type = name_ref C, file.%C.decl [concrete = constants.%C]
 // CHECK:STDOUT:   %ptr.loc17_25: type = ptr_type %C.ref.loc17_24 [concrete = constants.%ptr.019]
 // CHECK:STDOUT:   %.loc17_21: %ptr.019 = converted %input.ref, <error> [concrete = <error>]

+ 0 - 14
toolchain/check/type_completion.cpp

@@ -208,12 +208,6 @@ class TypeCompleter {
   auto BuildInfoForInst(SemIR::TypeId /*type_id*/, SemIR::ConstType inst) const
       -> SemIR::CompleteTypeInfo;
 
-  auto BuildInfoForInst(SemIR::TypeId /*type_id*/,
-                        SemIR::CppVoidType /*inst*/) const
-      -> SemIR::CompleteTypeInfo {
-    CARBON_FATAL("`CppVoidType` is always-incomplete");
-  }
-
   auto BuildInfoForInst(SemIR::TypeId type_id,
                         SemIR::CustomLayoutType inst) const
       -> SemIR::CompleteTypeInfo;
@@ -387,14 +381,6 @@ auto TypeCompleter::AddNestedIncompleteTypes(SemIR::Inst type_inst) -> bool {
       Push(context_->types().GetTypeIdForTypeInstId(inst.inner_id));
       break;
     }
-    case SemIR::CppVoidType::Kind: {
-      if (diagnoser_) {
-        CARBON_DIAGNOSTIC(CppVoidIncomplete, Note,
-                          "`Cpp.void` is always-incomplete");
-        diagnoser_().Note(SemIR::LocId::None, CppVoidIncomplete).Emit();
-      }
-      return false;
-    }
     case CARBON_KIND(SemIR::CustomLayoutType inst): {
       for (auto field : context_->struct_type_fields().Get(inst.fields_id)) {
         Push(context_->types().GetTypeIdForTypeInstId(field.type_inst_id));

+ 0 - 1
toolchain/diagnostics/diagnostic_kind.def

@@ -291,7 +291,6 @@ CARBON_DIAGNOSTIC_KIND(ClassForwardDeclaredHere)
 CARBON_DIAGNOSTIC_KIND(ClassSpecificDeclOutsideClass)
 CARBON_DIAGNOSTIC_KIND(ClassSpecificDeclPrevious)
 CARBON_DIAGNOSTIC_KIND(ClassIncompleteWithinDefinition)
-CARBON_DIAGNOSTIC_KIND(CppVoidIncomplete)
 CARBON_DIAGNOSTIC_KIND(GenericVirtual)
 CARBON_DIAGNOSTIC_KIND(OverrideWithoutBase)
 CARBON_DIAGNOSTIC_KIND(OverrideWithoutVirtualInBase)

+ 4 - 4
toolchain/driver/testdata/stdin.carbon

@@ -32,7 +32,7 @@
 // CHECK:STDOUT:   import_ir_insts: {}
 // CHECK:STDOUT:   clang_decls:     {}
 // CHECK:STDOUT:   name_scopes:
-// CHECK:STDOUT:     name_scope0:     {inst: instE, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {}}
+// CHECK:STDOUT:     name_scope0:     {inst: instD, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {}}
 // CHECK:STDOUT:   entity_names:    {}
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:       {}
@@ -49,10 +49,10 @@
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:   insts:
-// CHECK:STDOUT:     instE:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:     instD:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:   constant_values:
 // CHECK:STDOUT:     values:
-// CHECK:STDOUT:       instE:           concrete_constant(instE)
+// CHECK:STDOUT:       instD:           concrete_constant(instD)
 // CHECK:STDOUT:     symbolic_constants: {}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
@@ -60,7 +60,7 @@
 // CHECK:STDOUT:     imports:         {}
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
-// CHECK:STDOUT:       0:               instE
+// CHECK:STDOUT:       0:               instD
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- -
 // CHECK:STDOUT:

+ 8 - 9
toolchain/lower/file_context.cpp

@@ -927,15 +927,14 @@ static auto BuildTypeForInst(FileContext& context,
 }
 
 template <typename InstT>
-  requires(
-      InstT::Kind.template IsAnyOf<
-          SemIR::AssociatedEntityType, SemIR::AutoType, SemIR::BoundMethodType,
-          SemIR::CharLiteralType, SemIR::CppOverloadSetType, SemIR::CppVoidType,
-          SemIR::FacetType, SemIR::FloatLiteralType, SemIR::FunctionType,
-          SemIR::FunctionTypeWithSelfType, SemIR::GenericClassType,
-          SemIR::GenericInterfaceType, SemIR::GenericNamedConstraintType,
-          SemIR::InstType, SemIR::IntLiteralType, SemIR::NamespaceType,
-          SemIR::WhereExpr, SemIR::WitnessType, SemIR::UnboundElementType>())
+  requires(InstT::Kind.template IsAnyOf<
+           SemIR::AssociatedEntityType, SemIR::AutoType, SemIR::BoundMethodType,
+           SemIR::CharLiteralType, SemIR::CppOverloadSetType, SemIR::FacetType,
+           SemIR::FloatLiteralType, SemIR::FunctionType,
+           SemIR::FunctionTypeWithSelfType, SemIR::GenericClassType,
+           SemIR::GenericInterfaceType, SemIR::GenericNamedConstraintType,
+           SemIR::InstType, SemIR::IntLiteralType, SemIR::NamespaceType,
+           SemIR::WhereExpr, SemIR::WitnessType, SemIR::UnboundElementType>())
 static auto BuildTypeForInst(FileContext& context, InstT /*inst*/)
     -> llvm::Type* {
   // Return an empty struct as a placeholder.

+ 3 - 3
toolchain/lower/testdata/interop/cpp/nullptr.carbon

@@ -213,10 +213,10 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) {
 // CHECK:STDOUT: !30 = !DILocation(line: 32, column: 3, scope: !28)
 // CHECK:STDOUT: !31 = distinct !DISubprogram(name: "ConvertNullptrConstant", linkageName: "_CConvertNullptrConstant.Main", scope: null, file: !6, line: 35, type: !8, spFlags: DISPFlagDefinition, unit: !5)
 // CHECK:STDOUT: !32 = !DILocation(line: 36, column: 3, scope: !31)
-// CHECK:STDOUT: !33 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.NullptrT.CppCompat.Core:ImplicitAs.Core.b88d1103f417c6d4", scope: null, file: !34, line: 45, type: !8, spFlags: DISPFlagDefinition, unit: !5)
+// CHECK:STDOUT: !33 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.NullptrT.CppCompat.Core:ImplicitAs.Core.b88d1103f417c6d4", scope: null, file: !34, line: 46, type: !8, spFlags: DISPFlagDefinition, unit: !5)
 // CHECK:STDOUT: !34 = !DIFile(filename: "{{.*}}/prelude/types/cpp/nullptr.carbon", directory: "")
-// CHECK:STDOUT: !35 = !DILocation(line: 46, column: 14, scope: !33)
-// CHECK:STDOUT: !36 = !DILocation(line: 46, column: 7, scope: !33)
+// CHECK:STDOUT: !35 = !DILocation(line: 47, column: 14, scope: !33)
+// CHECK:STDOUT: !36 = !DILocation(line: 47, column: 7, scope: !33)
 // CHECK:STDOUT: !37 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.e49c05a5c9dc9c86", scope: null, file: !38, line: 26, type: !8, spFlags: DISPFlagDefinition, unit: !5)
 // CHECK:STDOUT: !38 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "")
 // CHECK:STDOUT: !39 = !DILocation(line: 27, column: 5, scope: !37)

+ 1 - 1
toolchain/lower/testdata/interop/cpp/return.carbon

@@ -2,7 +2,7 @@
 // Exceptions. See /LICENSE for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
-// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/primitives.carbon
+// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
 // EXTRA-ARGS: --target=x86_64-linux-gnu
 //
 // AUTOUPDATE

+ 109 - 0
toolchain/lower/testdata/interop/cpp/void.carbon

@@ -0,0 +1,109 @@
+// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
+//
+// AUTOUPDATE
+// TIP: To test this file alone, run:
+// TIP:   bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/interop/cpp/void.carbon
+// TIP: To dump output, run:
+// TIP:   bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/lower/testdata/interop/cpp/void.carbon
+
+// --- take_void_ptr.h
+
+void take_void_ptr(void *p);
+
+// --- call.carbon
+
+library "[[@TEST_NAME]]";
+
+import Cpp library "take_void_ptr.h";
+
+fn PassVoidPtr(a: Cpp.void*) {
+  Cpp.take_void_ptr(a);
+}
+
+// CHECK:STDOUT: ; ModuleID = 'call.carbon'
+// CHECK:STDOUT: source_filename = "call.carbon"
+// CHECK:STDOUT: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+// CHECK:STDOUT: target triple = "x86_64-unknown-linux-gnu"
+// CHECK:STDOUT:
+// CHECK:STDOUT: ; Function Attrs: nounwind
+// CHECK:STDOUT: define void @_CPassVoidPtr.Main(ptr %a) #0 !dbg !7 {
+// CHECK:STDOUT: entry:
+// CHECK:STDOUT:   %.loc7_21.2.temp = alloca ptr, align 8, !dbg !10
+// CHECK:STDOUT:   %U.binding.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.f82b7327366b1770:ImplicitAs.Core.1bbd3eba7f2908d7"(ptr %a), !dbg !10
+// CHECK:STDOUT:   call void @llvm.lifetime.start.p0(ptr %.loc7_21.2.temp), !dbg !10
+// CHECK:STDOUT:   store ptr %U.binding.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc7_21.2.temp, align 8, !dbg !10
+// CHECK:STDOUT:   %.loc7_21.4 = load ptr, ptr %.loc7_21.2.temp, align 8, !dbg !10
+// CHECK:STDOUT:   call void @_Z13take_void_ptrPv(ptr %.loc7_21.4), !dbg !11
+// CHECK:STDOUT:   ret void, !dbg !12
+// CHECK:STDOUT: }
+// CHECK:STDOUT:
+// CHECK:STDOUT: declare void @_Z13take_void_ptrPv(ptr)
+// CHECK:STDOUT:
+// CHECK:STDOUT: ; Function Attrs: nounwind
+// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.f82b7327366b1770:ImplicitAs.Core.1bbd3eba7f2908d7"(ptr %self) #0 !dbg !13 {
+// CHECK:STDOUT:   %1 = call ptr @"_CConvert.8d16edc1dfe20a7c:OptionalAs.Core.b95abfcde220df97"(ptr %self), !dbg !15
+// CHECK:STDOUT:   ret ptr %1, !dbg !16
+// CHECK:STDOUT: }
+// CHECK:STDOUT:
+// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
+// CHECK:STDOUT:
+// CHECK:STDOUT: ; Function Attrs: nounwind
+// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.8d16edc1dfe20a7c:OptionalAs.Core.b95abfcde220df97"(ptr %self) #0 !dbg !17 {
+// CHECK:STDOUT:   %1 = call ptr @_CSome.Optional.Core.b95abfcde220df97(ptr %self), !dbg !18
+// CHECK:STDOUT:   ret ptr %1, !dbg !19
+// CHECK:STDOUT: }
+// CHECK:STDOUT:
+// CHECK:STDOUT: ; Function Attrs: nounwind
+// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.b95abfcde220df97(ptr %value) #0 !dbg !20 {
+// CHECK:STDOUT:   %1 = call ptr @"_CSome.4f0b5cc38af595d2:OptionalStorage.Core.a3238f3d1f6ba299"(ptr %value), !dbg !21
+// CHECK:STDOUT:   ret ptr %1, !dbg !22
+// CHECK:STDOUT: }
+// CHECK:STDOUT:
+// CHECK:STDOUT: ; Function Attrs: nounwind
+// CHECK:STDOUT: define linkonce_odr ptr @"_CSome.4f0b5cc38af595d2:OptionalStorage.Core.a3238f3d1f6ba299"(ptr %self) #0 !dbg !23 {
+// CHECK:STDOUT:   %1 = alloca ptr, align 8, !dbg !24
+// CHECK:STDOUT:   call void @llvm.lifetime.start.p0(ptr %1), !dbg !24
+// CHECK:STDOUT:   store ptr %self, ptr %1, align 8, !dbg !25
+// CHECK:STDOUT:   %2 = load ptr, ptr %1, align 8, !dbg !26
+// CHECK:STDOUT:   ret ptr %2, !dbg !27
+// CHECK:STDOUT: }
+// CHECK:STDOUT:
+// CHECK:STDOUT: attributes #0 = { nounwind }
+// CHECK:STDOUT: attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+// CHECK:STDOUT:
+// CHECK:STDOUT: !llvm.module.flags = !{!0, !1, !2, !3, !4}
+// CHECK:STDOUT: !llvm.dbg.cu = !{!5}
+// CHECK:STDOUT:
+// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5}
+// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
+// CHECK:STDOUT: !2 = !{i32 1, !"wchar_size", i32 4}
+// CHECK:STDOUT: !3 = !{i32 8, !"PIC Level", i32 0}
+// CHECK:STDOUT: !4 = !{i32 7, !"PIE Level", i32 2}
+// CHECK:STDOUT: !5 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !6, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
+// CHECK:STDOUT: !6 = !DIFile(filename: "call.carbon", directory: "")
+// CHECK:STDOUT: !7 = distinct !DISubprogram(name: "PassVoidPtr", linkageName: "_CPassVoidPtr.Main", scope: null, file: !6, line: 6, type: !8, spFlags: DISPFlagDefinition, unit: !5)
+// CHECK:STDOUT: !8 = !DISubroutineType(types: !9)
+// CHECK:STDOUT: !9 = !{}
+// CHECK:STDOUT: !10 = !DILocation(line: 7, column: 21, scope: !7)
+// CHECK:STDOUT: !11 = !DILocation(line: 7, column: 3, scope: !7)
+// CHECK:STDOUT: !12 = !DILocation(line: 6, column: 1, scope: !7)
+// CHECK:STDOUT: !13 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.f82b7327366b1770:ImplicitAs.Core.1bbd3eba7f2908d7", scope: null, file: !14, line: 82, type: !8, spFlags: DISPFlagDefinition, unit: !5)
+// CHECK:STDOUT: !14 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "")
+// CHECK:STDOUT: !15 = !DILocation(line: 83, column: 12, scope: !13)
+// CHECK:STDOUT: !16 = !DILocation(line: 83, column: 5, scope: !13)
+// CHECK:STDOUT: !17 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.8d16edc1dfe20a7c:OptionalAs.Core.b95abfcde220df97", scope: null, file: !14, line: 68, type: !8, spFlags: DISPFlagDefinition, unit: !5)
+// CHECK:STDOUT: !18 = !DILocation(line: 69, column: 12, scope: !17)
+// CHECK:STDOUT: !19 = !DILocation(line: 69, column: 5, scope: !17)
+// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.b95abfcde220df97", scope: null, file: !14, line: 29, type: !8, spFlags: DISPFlagDefinition, unit: !5)
+// CHECK:STDOUT: !21 = !DILocation(line: 30, column: 12, scope: !20)
+// CHECK:STDOUT: !22 = !DILocation(line: 30, column: 5, scope: !20)
+// CHECK:STDOUT: !23 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.4f0b5cc38af595d2:OptionalStorage.Core.a3238f3d1f6ba299", scope: null, file: !14, line: 125, type: !8, spFlags: DISPFlagDefinition, unit: !5)
+// CHECK:STDOUT: !24 = !DILocation(line: 126, column: 14, scope: !23)
+// CHECK:STDOUT: !25 = !DILocation(line: 127, column: 5, scope: !23)
+// CHECK:STDOUT: !26 = !DILocation(line: 126, column: 18, scope: !23)
+// CHECK:STDOUT: !27 = !DILocation(line: 128, column: 5, scope: !23)

+ 0 - 1
toolchain/sem_ir/expr_info.cpp

@@ -117,7 +117,6 @@ auto GetExprCategory(const File& file, InstId inst_id) -> ExprCategory {
       case ConvertToValueAction::Kind:
       case CppOverloadSetType::Kind:
       case CppOverloadSetValue::Kind:
-      case CppVoidType::Kind:
       case CustomLayoutType::Kind:
       case FacetAccessType::Kind:
       case FacetType::Kind:

+ 0 - 1
toolchain/sem_ir/inst_kind.def

@@ -55,7 +55,6 @@ CARBON_SEM_IR_INST_KIND(ConvertToValueAction)
 CARBON_SEM_IR_INST_KIND(Converted)
 CARBON_SEM_IR_INST_KIND(CppOverloadSetType)
 CARBON_SEM_IR_INST_KIND(CppOverloadSetValue)
-CARBON_SEM_IR_INST_KIND(CppVoidType)
 CARBON_SEM_IR_INST_KIND(CustomLayoutType)
 CARBON_SEM_IR_INST_KIND(Deref)
 CARBON_SEM_IR_INST_KIND(ErrorInst)

+ 13 - 7
toolchain/sem_ir/singleton_insts.h

@@ -13,13 +13,19 @@ namespace Carbon::SemIR {
 // The canonical list of singleton kinds. The order of `TypeType` is
 // significant because other singletons use it as a type.
 static constexpr std::array SingletonInstKinds = {
-    InstKind::TypeType,        InstKind::AutoType,
-    InstKind::BoolType,        InstKind::BoundMethodType,
-    InstKind::CharLiteralType, InstKind::CppVoidType,
-    InstKind::ErrorInst,       InstKind::FloatLiteralType,
-    InstKind::InstType,        InstKind::IntLiteralType,
-    InstKind::NamespaceType,   InstKind::SpecificFunctionType,
-    InstKind::VtableType,      InstKind::WitnessType,
+    InstKind::TypeType,
+    InstKind::AutoType,
+    InstKind::BoolType,
+    InstKind::BoundMethodType,
+    InstKind::CharLiteralType,
+    InstKind::ErrorInst,
+    InstKind::FloatLiteralType,
+    InstKind::InstType,
+    InstKind::IntLiteralType,
+    InstKind::NamespaceType,
+    InstKind::SpecificFunctionType,
+    InstKind::VtableType,
+    InstKind::WitnessType,
 };
 
 // Returns true if the InstKind is a singleton.

+ 4 - 0
toolchain/sem_ir/type_info.cpp

@@ -178,6 +178,7 @@ auto RecognizedTypeInfo::ForType(const File& file, ClassType class_type)
     Kind kind = llvm::StringSwitch<Kind>(*name_ident)
                     .Case("Long32", CppLong32)
                     .Case("NullptrT", CppNullptrT)
+                    .Case("VoidBase", CppVoidBase)
                     .Default(None);
     return {.kind = kind};
   }
@@ -210,6 +211,9 @@ auto RecognizedTypeInfo::PrintLiteral(const File& file,
     case CppNullptrT:
       out << "Cpp.nullptr_t";
       break;
+    case CppVoidBase:
+      out << "Cpp.void";
+      break;
     case Str:
       out << "str";
       break;

+ 2 - 0
toolchain/sem_ir/type_info.h

@@ -240,6 +240,8 @@ struct RecognizedTypeInfo {
     CppLong32,
     // `Cpp.nullptr_t` / `Core.CppCompat.NullptrT`.
     CppNullptrT,
+    // `Cpp.void` / `Core.CppCompat.VoidBase`.
+    CppVoidBase,
     // `str` / `Core.String`.
     // TODO: Rename `Core.String` to `Core.Str`.
     Str,

+ 0 - 1
toolchain/sem_ir/type_iterator.cpp

@@ -90,7 +90,6 @@ auto TypeIterator::ProcessTypeId(TypeId type_id) -> std::optional<Step> {
     case BoolType::Kind:
     case CharLiteralType::Kind:
     case CppOverloadSetType::Kind:
-    case CppVoidType::Kind:
     case FacetType::Kind:
     case FloatLiteralType::Kind:
     case FloatType::Kind:

+ 0 - 8
toolchain/sem_ir/typed_insts.h

@@ -506,14 +506,6 @@ struct ConvertToValueAction {
   TypeInstId target_type_inst_id;
 };
 
-// A type for C++ `void`. Should only be used for pointers (`void*`).
-struct CppVoidType
-    : public SingletonTypeInst<InstKind::CppVoidType, "Cpp.void"> {
-  // `Cpp.void` is never complete, so `GetSingletonType` won't work.
-  static constexpr auto TypeId =
-      TypeId::ForTypeConstant(ConstantId::ForConcreteConstant(TypeInstId));
-};
-
 // A type whose layout is determined externally. This is used as the object
 // representation of class types imported from C++.
 struct CustomLayoutType {