diff --git a/core/prelude/destroy.carbon b/core/prelude/destroy.carbon index d8759fc327cb..83b42d7f200e 100644 --- a/core/prelude/destroy.carbon +++ b/core/prelude/destroy.carbon @@ -7,10 +7,10 @@ package Core library "prelude/destroy"; // Object destruction, including running `fn destroy()`. Note this is distinct // from memory deallocation. interface Destroy { - fn Op[self: Self](); + fn Op[addr self: Self*](); } // Provide a default blanket impl for trivial destruction. impl forall [T:! type] T as Destroy { - fn Op[self: Self]() = "no_op"; + fn Op[addr self: Self*]() = "no_op"; } diff --git a/toolchain/check/testdata/array/basics.carbon b/toolchain/check/testdata/array/basics.carbon index bfd4aee059a1..9de5f74adc36 100644 --- a/toolchain/check/testdata/array/basics.carbon +++ b/toolchain/check/testdata/array/basics.carbon @@ -176,6 +176,7 @@ var a: array(1, 1); // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_2, %tuple.type.734 [concrete] +// CHECK:STDOUT: %ptr.c6b: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %pattern_type.e0b: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %tuple.type.14a: type = tuple_type (%tuple.type.734, %tuple.type.734) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] @@ -188,6 +189,7 @@ var a: array(1, 1); // CHECK:STDOUT: %Destroy.impl_witness.66a: = impl_witness imports.%Destroy.impl_witness_table, @impl(%tuple.type.734) [concrete] // CHECK:STDOUT: %Op.type.fe9: type = fn_type @Op.2, @impl(%tuple.type.734) [concrete] // CHECK:STDOUT: %Op.ae1: %Op.type.fe9 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.dbe: type = ptr_type %tuple.type.734 [concrete] // CHECK:STDOUT: %Destroy.facet.829: %Destroy.type = facet_value %tuple.type.734, (%Destroy.impl_witness.66a) [concrete] // CHECK:STDOUT: %.e31: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.829 [concrete] // CHECK:STDOUT: %Op.specific_fn.80d: = specific_function %Op.ae1, @Op.2(%tuple.type.734) [concrete] @@ -200,7 +202,7 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -225,8 +227,8 @@ var a: array(1, 1); // CHECK:STDOUT: %F.call.loc10_40: init %tuple.type.734 = call %F.ref.loc10_38() to %.loc10_41.3 // CHECK:STDOUT: %.loc10_41.5: %tuple.type.14a = tuple_literal (%F.call.loc10_35, %F.call.loc10_40) // CHECK:STDOUT: %.loc10_41.6: init %array_type = array_init (%F.call.loc10_35, %F.call.loc10_40) to %v.var -// CHECK:STDOUT: %.loc10_3.1: init %array_type = converted %.loc10_41.5, %.loc10_41.6 -// CHECK:STDOUT: assign %v.var, %.loc10_3.1 +// CHECK:STDOUT: %.loc10_3: init %array_type = converted %.loc10_41.5, %.loc10_41.6 +// CHECK:STDOUT: assign %v.var, %.loc10_3 // CHECK:STDOUT: %.loc10_28: type = splice_block %array_type [concrete = constants.%array_type] { // CHECK:STDOUT: %C.ref.loc10_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %C.ref.loc10_20: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -241,34 +243,20 @@ var a: array(1, 1); // CHECK:STDOUT: %bound_method.loc10_41.1: = bound_method %.loc10_41.3, %impl.elem0.loc10_41.1 // CHECK:STDOUT: %specific_fn.loc10_41.1: = specific_function %impl.elem0.loc10_41.1, @Op.2(constants.%tuple.type.734) [concrete = constants.%Op.specific_fn.80d] // CHECK:STDOUT: %bound_method.loc10_41.2: = bound_method %.loc10_41.3, %specific_fn.loc10_41.1 -// CHECK:STDOUT: %tuple.elem0.loc10_41.1: ref %C = tuple_access %.loc10_41.3, element0 -// CHECK:STDOUT: %.loc10_41.7: %C = bind_value %tuple.elem0.loc10_41.1 -// CHECK:STDOUT: %tuple.elem1.loc10_41.1: ref %C = tuple_access %.loc10_41.3, element1 -// CHECK:STDOUT: %.loc10_41.8: %C = bind_value %tuple.elem1.loc10_41.1 -// CHECK:STDOUT: %tuple.elem2.loc10_41.1: ref %C = tuple_access %.loc10_41.3, element2 -// CHECK:STDOUT: %.loc10_41.9: %C = bind_value %tuple.elem2.loc10_41.1 -// CHECK:STDOUT: %tuple.loc10_41.1: %tuple.type.734 = tuple_value (%.loc10_41.7, %.loc10_41.8, %.loc10_41.9) -// CHECK:STDOUT: %.loc10_41.10: %tuple.type.734 = converted %.loc10_41.3, %tuple.loc10_41.1 -// CHECK:STDOUT: %no_op.loc10_41.1: init %empty_tuple.type = call %bound_method.loc10_41.2(%.loc10_41.10) +// CHECK:STDOUT: %addr.loc10_41.1: %ptr.dbe = addr_of %.loc10_41.3 +// CHECK:STDOUT: %no_op.loc10_41.1: init %empty_tuple.type = call %bound_method.loc10_41.2(%addr.loc10_41.1) // CHECK:STDOUT: %impl.elem0.loc10_41.2: %.e31 = impl_witness_access constants.%Destroy.impl_witness.66a, element0 [concrete = constants.%Op.ae1] // CHECK:STDOUT: %bound_method.loc10_41.3: = bound_method %.loc10_41.1, %impl.elem0.loc10_41.2 // CHECK:STDOUT: %specific_fn.loc10_41.2: = specific_function %impl.elem0.loc10_41.2, @Op.2(constants.%tuple.type.734) [concrete = constants.%Op.specific_fn.80d] // CHECK:STDOUT: %bound_method.loc10_41.4: = bound_method %.loc10_41.1, %specific_fn.loc10_41.2 -// CHECK:STDOUT: %tuple.elem0.loc10_41.2: ref %C = tuple_access %.loc10_41.1, element0 -// CHECK:STDOUT: %.loc10_41.11: %C = bind_value %tuple.elem0.loc10_41.2 -// CHECK:STDOUT: %tuple.elem1.loc10_41.2: ref %C = tuple_access %.loc10_41.1, element1 -// CHECK:STDOUT: %.loc10_41.12: %C = bind_value %tuple.elem1.loc10_41.2 -// CHECK:STDOUT: %tuple.elem2.loc10_41.2: ref %C = tuple_access %.loc10_41.1, element2 -// CHECK:STDOUT: %.loc10_41.13: %C = bind_value %tuple.elem2.loc10_41.2 -// CHECK:STDOUT: %tuple.loc10_41.2: %tuple.type.734 = tuple_value (%.loc10_41.11, %.loc10_41.12, %.loc10_41.13) -// CHECK:STDOUT: %.loc10_41.14: %tuple.type.734 = converted %.loc10_41.1, %tuple.loc10_41.2 -// CHECK:STDOUT: %no_op.loc10_41.2: init %empty_tuple.type = call %bound_method.loc10_41.4(%.loc10_41.14) +// CHECK:STDOUT: %addr.loc10_41.2: %ptr.dbe = addr_of %.loc10_41.1 +// CHECK:STDOUT: %no_op.loc10_41.2: init %empty_tuple.type = call %bound_method.loc10_41.4(%addr.loc10_41.2) // CHECK:STDOUT: %impl.elem0.loc10_3: %.b1e = impl_witness_access constants.%Destroy.impl_witness.9e1, element0 [concrete = constants.%Op.d4f] // CHECK:STDOUT: %bound_method.loc10_3.1: = bound_method %v.var, %impl.elem0.loc10_3 // CHECK:STDOUT: %specific_fn.loc10_3: = specific_function %impl.elem0.loc10_3, @Op.2(constants.%array_type) [concrete = constants.%Op.specific_fn.04c] // CHECK:STDOUT: %bound_method.loc10_3.2: = bound_method %v.var, %specific_fn.loc10_3 -// CHECK:STDOUT: %.loc10_3.2: %array_type = bind_value %v.var -// CHECK:STDOUT: %no_op.loc10_3: init %empty_tuple.type = call %bound_method.loc10_3.2(%.loc10_3.2) +// CHECK:STDOUT: %addr.loc10_3: %ptr.c6b = addr_of %v.var +// CHECK:STDOUT: %no_op.loc10_3: init %empty_tuple.type = call %bound_method.loc10_3.2(%addr.loc10_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -278,8 +266,10 @@ var a: array(1, 1); // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3, %empty_tuple.type [concrete] +// CHECK:STDOUT: %ptr.20b: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %pattern_type.035: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %ptr.7fe: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] @@ -292,8 +282,6 @@ var a: array(1, 1); // CHECK:STDOUT: %Destroy.facet.d28: %Destroy.type = facet_value %tuple.type, (%Destroy.impl_witness.5b3) [concrete] // CHECK:STDOUT: %.886: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.d28 [concrete] // CHECK:STDOUT: %Op.specific_fn.234: = specific_function %Op.dce, @Op.2(%tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.287: = impl_witness imports.%Destroy.impl_witness_table, @impl(%array_type) [concrete] // CHECK:STDOUT: %Op.type.c60: type = fn_type @Op.2, @impl(%array_type) [concrete] // CHECK:STDOUT: %Op.f81: %Op.type.c60 = struct_value () [concrete] @@ -303,7 +291,7 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -341,24 +329,14 @@ var a: array(1, 1); // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %b.var, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Op.2(constants.%tuple.type) [concrete = constants.%Op.specific_fn.234] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %b.var, %specific_fn.loc8 -// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %b.var, element0 -// CHECK:STDOUT: %tuple.loc8_3.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_3.1: %empty_tuple.type = converted %tuple.elem0, %tuple.loc8_3.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access %b.var, element1 -// CHECK:STDOUT: %tuple.loc8_3.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_3.2: %empty_tuple.type = converted %tuple.elem1, %tuple.loc8_3.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access %b.var, element2 -// CHECK:STDOUT: %tuple.loc8_3.3: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_3.3: %empty_tuple.type = converted %tuple.elem2, %tuple.loc8_3.3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc8_3.4: %tuple.type = tuple_value (%.loc8_3.1, %.loc8_3.2, %.loc8_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc8_3.4: %tuple.type = converted %b.var, %tuple.loc8_3.4 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.4) +// CHECK:STDOUT: %addr.loc8: %ptr.7fe = addr_of %b.var +// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) // CHECK:STDOUT: %impl.elem0.loc7: %.b3c = impl_witness_access constants.%Destroy.impl_witness.287, element0 [concrete = constants.%Op.f81] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %a.var, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%array_type) [concrete = constants.%Op.specific_fn.29c] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %a.var, %specific_fn.loc7 -// CHECK:STDOUT: %.loc7_3: %array_type = bind_value %a.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3) +// CHECK:STDOUT: %addr.loc7: %ptr.20b = addr_of %a.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,9 +348,9 @@ var a: array(1, 1); // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple) [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_1, %empty_tuple.type [concrete] +// CHECK:STDOUT: %ptr.b99: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%empty_tuple) [concrete] @@ -384,6 +362,7 @@ var a: array(1, 1); // CHECK:STDOUT: %Destroy.impl_witness.511: = impl_witness imports.%Destroy.impl_witness_table, @impl(%tuple.type) [concrete] // CHECK:STDOUT: %Op.type.23e: type = fn_type @Op.2, @impl(%tuple.type) [concrete] // CHECK:STDOUT: %Op.f19: %Op.type.23e = struct_value () [concrete] +// CHECK:STDOUT: %ptr.652: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.108: %Destroy.type = facet_value %tuple.type, (%Destroy.impl_witness.511) [concrete] // CHECK:STDOUT: %.2cd: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.108 [concrete] // CHECK:STDOUT: %Op.specific_fn.d2b: = specific_function %Op.f19, @Op.2(%tuple.type) [concrete] @@ -396,7 +375,7 @@ var a: array(1, 1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -411,14 +390,14 @@ var a: array(1, 1); // CHECK:STDOUT: %F.call: init %tuple.type = call %F.ref() // CHECK:STDOUT: %.loc8_27.1: ref %tuple.type = temporary_storage // CHECK:STDOUT: %.loc8_27.2: ref %tuple.type = temporary %.loc8_27.1, %F.call -// CHECK:STDOUT: %tuple.elem0.loc8_27.1: ref %empty_tuple.type = tuple_access %.loc8_27.2, element0 +// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %.loc8_27.2, element0 // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc8_27.3: ref %empty_tuple.type = array_index %t.var, %int_0 // CHECK:STDOUT: %.loc8_27.4: init %empty_tuple.type = tuple_init () to %.loc8_27.3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_27.5: init %empty_tuple.type = converted %tuple.elem0.loc8_27.1, %.loc8_27.4 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_27.5: init %empty_tuple.type = converted %tuple.elem0, %.loc8_27.4 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_27.6: init %array_type = array_init (%.loc8_27.5) to %t.var [concrete = constants.%array] -// CHECK:STDOUT: %.loc8_3.1: init %array_type = converted %F.call, %.loc8_27.6 [concrete = constants.%array] -// CHECK:STDOUT: assign %t.var, %.loc8_3.1 +// CHECK:STDOUT: %.loc8_3: init %array_type = converted %F.call, %.loc8_27.6 [concrete = constants.%array] +// CHECK:STDOUT: assign %t.var, %.loc8_3 // CHECK:STDOUT: %.loc8_21: type = splice_block %array_type [concrete = constants.%array_type] { // CHECK:STDOUT: %.loc8_17.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] @@ -430,18 +409,14 @@ var a: array(1, 1); // CHECK:STDOUT: %bound_method.loc8_27.1: = bound_method %.loc8_27.1, %impl.elem0.loc8_27 // CHECK:STDOUT: %specific_fn.loc8_27: = specific_function %impl.elem0.loc8_27, @Op.2(constants.%tuple.type) [concrete = constants.%Op.specific_fn.d2b] // CHECK:STDOUT: %bound_method.loc8_27.2: = bound_method %.loc8_27.1, %specific_fn.loc8_27 -// CHECK:STDOUT: %tuple.elem0.loc8_27.2: ref %empty_tuple.type = tuple_access %.loc8_27.1, element0 -// CHECK:STDOUT: %tuple.loc8_27.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_27.7: %empty_tuple.type = converted %tuple.elem0.loc8_27.2, %tuple.loc8_27.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc8_27.2: %tuple.type = tuple_value (%.loc8_27.7) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc8_27.8: %tuple.type = converted %.loc8_27.1, %tuple.loc8_27.2 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc8_27: init %empty_tuple.type = call %bound_method.loc8_27.2(%.loc8_27.8) +// CHECK:STDOUT: %addr.loc8_27: %ptr.652 = addr_of %.loc8_27.1 +// CHECK:STDOUT: %no_op.loc8_27: init %empty_tuple.type = call %bound_method.loc8_27.2(%addr.loc8_27) // CHECK:STDOUT: %impl.elem0.loc8_3: %.0ab = impl_witness_access constants.%Destroy.impl_witness.740, element0 [concrete = constants.%Op.688] // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %t.var, %impl.elem0.loc8_3 // CHECK:STDOUT: %specific_fn.loc8_3: = specific_function %impl.elem0.loc8_3, @Op.2(constants.%array_type) [concrete = constants.%Op.specific_fn.cae] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %t.var, %specific_fn.loc8_3 -// CHECK:STDOUT: %.loc8_3.2: %array_type = bind_value %t.var -// CHECK:STDOUT: %no_op.loc8_3: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.2) +// CHECK:STDOUT: %addr.loc8_3: %ptr.b99 = addr_of %t.var +// CHECK:STDOUT: %no_op.loc8_3: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/init_dependent_bound.carbon b/toolchain/check/testdata/array/init_dependent_bound.carbon index cc6ddcfceaac..b8e404ddb4bb 100644 --- a/toolchain/check/testdata/array/init_dependent_bound.carbon +++ b/toolchain/check/testdata/array/init_dependent_bound.carbon @@ -63,6 +63,7 @@ fn H() { G(3); } // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %array_type.281: type = array_type %int_0, %T [symbolic] +// CHECK:STDOUT: %ptr.e06: type = ptr_type %array_type.281 [symbolic] // CHECK:STDOUT: %require_complete.b7f: = require_complete_type %array_type.281 [symbolic] // CHECK:STDOUT: %pattern_type.d48: type = pattern_type %array_type.281 [symbolic] // CHECK:STDOUT: %array.2ed: %array_type.281 = tuple_value () [symbolic] @@ -70,6 +71,7 @@ fn H() { G(3); } // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] // CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @impl(%T) [symbolic] // CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.662: = require_complete_type %ptr.e06 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %array_type.281, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.cdc: %Destroy.type = facet_value %array_type.281, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.77e: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.cdc [symbolic] @@ -77,19 +79,21 @@ fn H() { G(3); } // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet.cdc) [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %array_type.6f1: type = array_type %int_0, %C [concrete] +// CHECK:STDOUT: %ptr.cf4: type = ptr_type %array_type.6f1 [concrete] // CHECK:STDOUT: %complete_type.ed6: = complete_type_witness %array_type.6f1 [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %array_type.6f1 [concrete] // CHECK:STDOUT: %array.2e5: %array_type.6f1 = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.8b8: = impl_witness imports.%Destroy.impl_witness_table, @impl(%array_type.6f1) [concrete] // CHECK:STDOUT: %Op.type.a3e: type = fn_type @Op.2, @impl(%array_type.6f1) [concrete] // CHECK:STDOUT: %Op.dc5: %Op.type.a3e = struct_value () [concrete] +// CHECK:STDOUT: %complete_type.3e1: = complete_type_witness %ptr.cf4 [concrete] // CHECK:STDOUT: %Destroy.facet.da7: %Destroy.type = facet_value %array_type.6f1, (%Destroy.impl_witness.8b8) [concrete] // CHECK:STDOUT: %.a21: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.da7 [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.dc5, @Op.2(%array_type.6f1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -98,14 +102,16 @@ fn H() { G(3); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %array_type.loc7_22.2: type = array_type constants.%int_0, %T.loc4_6.2 [symbolic = %array_type.loc7_22.2 (constants.%array_type.281)] -// CHECK:STDOUT: %require_complete: = require_complete_type %array_type.loc7_22.2 [symbolic = %require_complete (constants.%require_complete.b7f)] +// CHECK:STDOUT: %require_complete.loc7_22: = require_complete_type %array_type.loc7_22.2 [symbolic = %require_complete.loc7_22 (constants.%require_complete.b7f)] // CHECK:STDOUT: %pattern_type: type = pattern_type %array_type.loc7_22.2 [symbolic = %pattern_type (constants.%pattern_type.d48)] // CHECK:STDOUT: %array: @G.%array_type.loc7_22.2 (%array_type.281) = tuple_value () [symbolic = %array (constants.%array.2ed)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %array_type.loc7_22.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %array_type.loc7_22.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.cdc)] -// CHECK:STDOUT: %.loc7_3.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc7_3.4 (constants.%.77e)] -// CHECK:STDOUT: %impl.elem0.loc7_3.2: @G.%.loc7_3.4 (%.77e) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc7_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc7_3.3 (constants.%.77e)] +// CHECK:STDOUT: %impl.elem0.loc7_3.2: @G.%.loc7_3.3 (%.77e) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %array_type.loc7_22.2 [symbolic = %ptr (constants.%ptr.e06)] +// CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %ptr [symbolic = %require_complete.loc7_3 (constants.%require_complete.662)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -124,12 +130,12 @@ fn H() { G(3); } // CHECK:STDOUT: %array_type.loc7_22.1: type = array_type %int_0, %T.ref [symbolic = %array_type.loc7_22.2 (constants.%array_type.281)] // CHECK:STDOUT: } // CHECK:STDOUT: %arr: ref @G.%array_type.loc7_22.2 (%array_type.281) = bind_name arr, %arr.var -// CHECK:STDOUT: %impl.elem0.loc7_3.1: @G.%.loc7_3.4 (%.77e) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc7_3.1: @G.%.loc7_3.3 (%.77e) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %arr.var, %impl.elem0.loc7_3.1 // CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Op.1(constants.%Destroy.facet.cdc) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %arr.var, %specific_impl_fn.loc7_3.1 -// CHECK:STDOUT: %.loc7_3.2: @G.%array_type.loc7_22.2 (%array_type.281) = bind_value %arr.var -// CHECK:STDOUT: %.loc7_3.3: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.2) +// CHECK:STDOUT: %addr: @G.%ptr (%ptr.e06) = addr_of %arr.var +// CHECK:STDOUT: %.loc7_3.2: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -143,14 +149,16 @@ fn H() { G(3); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %array_type.loc7_22.2 => constants.%array_type.6f1 -// CHECK:STDOUT: %require_complete => constants.%complete_type.ed6 +// CHECK:STDOUT: %require_complete.loc7_22 => constants.%complete_type.ed6 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9c8 // CHECK:STDOUT: %array => constants.%array.2e5 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.8b8 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.da7 -// CHECK:STDOUT: %.loc7_3.4 => constants.%.a21 +// CHECK:STDOUT: %.loc7_3.3 => constants.%.a21 // CHECK:STDOUT: %impl.elem0.loc7_3.2 => constants.%Op.dc5 // CHECK:STDOUT: %specific_impl_fn.loc7_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %ptr => constants.%ptr.cf4 +// CHECK:STDOUT: %require_complete.loc7_3 => constants.%complete_type.3e1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_init_template_dependent_bound.carbon diff --git a/toolchain/check/testdata/as/basics.carbon b/toolchain/check/testdata/as/basics.carbon index 23e984fcc4ba..3c6caa92c2fa 100644 --- a/toolchain/check/testdata/as/basics.carbon +++ b/toolchain/check/testdata/as/basics.carbon @@ -217,19 +217,21 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %Destroy.impl_witness.599: = impl_witness imports.%Destroy.impl_witness_table, @impl(%X) [concrete] // CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.2, @impl(%X) [concrete] // CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] // CHECK:STDOUT: %Destroy.facet.177: %Destroy.type = facet_value %X, (%Destroy.impl_witness.599) [concrete] // CHECK:STDOUT: %.bfc: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.177 [concrete] // CHECK:STDOUT: %Op.specific_fn.d1f: = specific_function %Op.33a, @Op.2(%X) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.543: = impl_witness imports.%Destroy.impl_witness_table, @impl(%tuple.type.b67) [concrete] // CHECK:STDOUT: %Op.type.df3: type = fn_type @Op.2, @impl(%tuple.type.b67) [concrete] // CHECK:STDOUT: %Op.279: %Op.type.df3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.120: type = ptr_type %tuple.type.b67 [concrete] // CHECK:STDOUT: %Destroy.facet.54c: %Destroy.type = facet_value %tuple.type.b67, (%Destroy.impl_witness.543) [concrete] // CHECK:STDOUT: %.fdd: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.54c [concrete] // CHECK:STDOUT: %Op.specific_fn.837: = specific_function %Op.279, @Op.2(%tuple.type.b67) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -266,14 +268,14 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %bound_method.loc13_33.1: = bound_method %.loc13_33.1, %impl.elem0.loc13_33 // CHECK:STDOUT: %specific_fn.loc13_33: = specific_function %impl.elem0.loc13_33, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn.d1f] // CHECK:STDOUT: %bound_method.loc13_33.2: = bound_method %.loc13_33.1, %specific_fn.loc13_33 -// CHECK:STDOUT: %.loc13_33.4: %X = bind_value %.loc13_33.1 -// CHECK:STDOUT: %no_op.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33.2(%.loc13_33.4) +// CHECK:STDOUT: %addr.loc13_33: %ptr.d17 = addr_of %.loc13_33.1 +// CHECK:STDOUT: %no_op.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33.2(%addr.loc13_33) // CHECK:STDOUT: %impl.elem0.loc13_25: %.bfc = impl_witness_access constants.%Destroy.impl_witness.599, element0 [concrete = constants.%Op.33a] // CHECK:STDOUT: %bound_method.loc13_25.1: = bound_method %.loc13_25.1, %impl.elem0.loc13_25 // CHECK:STDOUT: %specific_fn.loc13_25: = specific_function %impl.elem0.loc13_25, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn.d1f] // CHECK:STDOUT: %bound_method.loc13_25.2: = bound_method %.loc13_25.1, %specific_fn.loc13_25 -// CHECK:STDOUT: %.loc13_25.4: %X = bind_value %.loc13_25.1 -// CHECK:STDOUT: %no_op.loc13_25: init %empty_tuple.type = call %bound_method.loc13_25.2(%.loc13_25.4) +// CHECK:STDOUT: %addr.loc13_25: %ptr.d17 = addr_of %.loc13_25.1 +// CHECK:STDOUT: %no_op.loc13_25: init %empty_tuple.type = call %bound_method.loc13_25.2(%addr.loc13_25) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -285,19 +287,19 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %tuple.type.b67 = var %b.var_patt // CHECK:STDOUT: %Make.ref.loc20_20: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %tuple.elem0.loc20_34: ref %X = tuple_access %b.var, element0 -// CHECK:STDOUT: %Make.call.loc20_25: init %X = call %Make.ref.loc20_20() to %tuple.elem0.loc20_34 +// CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %b.var, element0 +// CHECK:STDOUT: %Make.call.loc20_25: init %X = call %Make.ref.loc20_20() to %tuple.elem0 // CHECK:STDOUT: %Make.ref.loc20_28: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %tuple.elem1.loc20_34: ref %X = tuple_access %b.var, element1 -// CHECK:STDOUT: %Make.call.loc20_33: init %X = call %Make.ref.loc20_28() to %tuple.elem1.loc20_34 +// CHECK:STDOUT: %tuple.elem1: ref %X = tuple_access %b.var, element1 +// CHECK:STDOUT: %Make.call.loc20_33: init %X = call %Make.ref.loc20_28() to %tuple.elem1 // CHECK:STDOUT: %.loc20_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc20_25, %Make.call.loc20_33) // CHECK:STDOUT: %X.ref.loc20_40: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %X.ref.loc20_43: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc20_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc20_40, %X.ref.loc20_43) // CHECK:STDOUT: %.loc20_44.2: type = converted %.loc20_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: %.loc20_34.2: init %tuple.type.b67 = tuple_init (%Make.call.loc20_25, %Make.call.loc20_33) to %b.var -// CHECK:STDOUT: %.loc20_3.1: init %tuple.type.b67 = converted %.loc20_34.1, %.loc20_34.2 -// CHECK:STDOUT: assign %b.var, %.loc20_3.1 +// CHECK:STDOUT: %.loc20_3: init %tuple.type.b67 = converted %.loc20_34.1, %.loc20_34.2 +// CHECK:STDOUT: assign %b.var, %.loc20_3 // CHECK:STDOUT: %.loc20_15.1: type = splice_block %.loc20_15.3 [concrete = constants.%tuple.type.b67] { // CHECK:STDOUT: %X.ref.loc20_11: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %X.ref.loc20_14: type = name_ref X, file.%X.decl [concrete = constants.%X] @@ -306,28 +308,23 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.b67 = bind_name b, %b.var // CHECK:STDOUT: %impl.elem0.loc20_34.1: %.bfc = impl_witness_access constants.%Destroy.impl_witness.599, element0 [concrete = constants.%Op.33a] -// CHECK:STDOUT: %bound_method.loc20_34.1: = bound_method %tuple.elem1.loc20_34, %impl.elem0.loc20_34.1 +// CHECK:STDOUT: %bound_method.loc20_34.1: = bound_method %tuple.elem1, %impl.elem0.loc20_34.1 // CHECK:STDOUT: %specific_fn.loc20_34.1: = specific_function %impl.elem0.loc20_34.1, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn.d1f] -// CHECK:STDOUT: %bound_method.loc20_34.2: = bound_method %tuple.elem1.loc20_34, %specific_fn.loc20_34.1 -// CHECK:STDOUT: %.loc20_34.3: %X = bind_value %tuple.elem1.loc20_34 -// CHECK:STDOUT: %no_op.loc20_34.1: init %empty_tuple.type = call %bound_method.loc20_34.2(%.loc20_34.3) +// CHECK:STDOUT: %bound_method.loc20_34.2: = bound_method %tuple.elem1, %specific_fn.loc20_34.1 +// CHECK:STDOUT: %addr.loc20_34.1: %ptr.d17 = addr_of %tuple.elem1 +// CHECK:STDOUT: %no_op.loc20_34.1: init %empty_tuple.type = call %bound_method.loc20_34.2(%addr.loc20_34.1) // CHECK:STDOUT: %impl.elem0.loc20_34.2: %.bfc = impl_witness_access constants.%Destroy.impl_witness.599, element0 [concrete = constants.%Op.33a] -// CHECK:STDOUT: %bound_method.loc20_34.3: = bound_method %tuple.elem0.loc20_34, %impl.elem0.loc20_34.2 +// CHECK:STDOUT: %bound_method.loc20_34.3: = bound_method %tuple.elem0, %impl.elem0.loc20_34.2 // CHECK:STDOUT: %specific_fn.loc20_34.2: = specific_function %impl.elem0.loc20_34.2, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn.d1f] -// CHECK:STDOUT: %bound_method.loc20_34.4: = bound_method %tuple.elem0.loc20_34, %specific_fn.loc20_34.2 -// CHECK:STDOUT: %.loc20_34.4: %X = bind_value %tuple.elem0.loc20_34 -// CHECK:STDOUT: %no_op.loc20_34.2: init %empty_tuple.type = call %bound_method.loc20_34.4(%.loc20_34.4) +// CHECK:STDOUT: %bound_method.loc20_34.4: = bound_method %tuple.elem0, %specific_fn.loc20_34.2 +// CHECK:STDOUT: %addr.loc20_34.2: %ptr.d17 = addr_of %tuple.elem0 +// CHECK:STDOUT: %no_op.loc20_34.2: init %empty_tuple.type = call %bound_method.loc20_34.4(%addr.loc20_34.2) // CHECK:STDOUT: %impl.elem0.loc20_3: %.fdd = impl_witness_access constants.%Destroy.impl_witness.543, element0 [concrete = constants.%Op.279] // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %b.var, %impl.elem0.loc20_3 // CHECK:STDOUT: %specific_fn.loc20_3: = specific_function %impl.elem0.loc20_3, @Op.2(constants.%tuple.type.b67) [concrete = constants.%Op.specific_fn.837] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %b.var, %specific_fn.loc20_3 -// CHECK:STDOUT: %tuple.elem0.loc20_3: ref %X = tuple_access %b.var, element0 -// CHECK:STDOUT: %.loc20_3.2: %X = bind_value %tuple.elem0.loc20_3 -// CHECK:STDOUT: %tuple.elem1.loc20_3: ref %X = tuple_access %b.var, element1 -// CHECK:STDOUT: %.loc20_3.3: %X = bind_value %tuple.elem1.loc20_3 -// CHECK:STDOUT: %tuple: %tuple.type.b67 = tuple_value (%.loc20_3.2, %.loc20_3.3) -// CHECK:STDOUT: %.loc20_3.4: %tuple.type.b67 = converted %b.var, %tuple -// CHECK:STDOUT: %no_op.loc20_3: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3.4) +// CHECK:STDOUT: %addr.loc20_3: %ptr.120 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc20_3: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr.loc20_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -355,7 +352,7 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -396,24 +393,24 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %X = var %x.var_patt // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc24_3.1: ref %X = splice_block %x.var {} -// CHECK:STDOUT: %Make.call: init %X = call %Make.ref() to %.loc24_3.1 +// CHECK:STDOUT: %.loc24: ref %X = splice_block %x.var {} +// CHECK:STDOUT: %Make.call: init %X = call %Make.ref() to %.loc24 // CHECK:STDOUT: %X.ref.loc24_25: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: assign %x.var, %Make.call // CHECK:STDOUT: %X.ref.loc24_10: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %x: ref %X = bind_name x, %x.var // CHECK:STDOUT: %impl.elem0.loc24_3.1: %.bfc = impl_witness_access constants.%Destroy.impl_witness.599, element0 [concrete = constants.%Op.33a] -// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24_3.1, %impl.elem0.loc24_3.1 +// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24, %impl.elem0.loc24_3.1 // CHECK:STDOUT: %specific_fn.loc24_3.1: = specific_function %impl.elem0.loc24_3.1, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %.loc24_3.1, %specific_fn.loc24_3.1 -// CHECK:STDOUT: %.loc24_3.2: %X = bind_value %.loc24_3.1 -// CHECK:STDOUT: %no_op.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24_3.2) +// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %.loc24, %specific_fn.loc24_3.1 +// CHECK:STDOUT: %addr.loc24_3.1: %ptr.d17 = addr_of %.loc24 +// CHECK:STDOUT: %no_op.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3.1) // CHECK:STDOUT: %impl.elem0.loc24_3.2: %.bfc = impl_witness_access constants.%Destroy.impl_witness.599, element0 [concrete = constants.%Op.33a] // CHECK:STDOUT: %bound_method.loc24_3.3: = bound_method %x.var, %impl.elem0.loc24_3.2 // CHECK:STDOUT: %specific_fn.loc24_3.2: = specific_function %impl.elem0.loc24_3.2, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc24_3.4: = bound_method %x.var, %specific_fn.loc24_3.2 -// CHECK:STDOUT: %.loc24_3.3: %X = bind_value %x.var -// CHECK:STDOUT: %no_op.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.4(%.loc24_3.3) +// CHECK:STDOUT: %addr.loc24_3.2: %ptr.d17 = addr_of %x.var +// CHECK:STDOUT: %no_op.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.4(%addr.loc24_3.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon index ec20076908b0..6fa4db3d8ce5 100644 --- a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon +++ b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon @@ -98,9 +98,9 @@ fn F(); // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -214,13 +214,14 @@ fn F(); // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -234,29 +235,27 @@ fn F(); // CHECK:STDOUT: %C.call: init %empty_tuple.type = call %C.ref() // CHECK:STDOUT: %.loc13_7.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc13_7.2: ref %empty_tuple.type = temporary %.loc13_7.1, %A.call -// CHECK:STDOUT: %tuple.loc13_7.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc13_7.3: %empty_tuple.type = converted %A.call, %tuple.loc13_7.1 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %tuple.loc13: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_7.3: %empty_tuple.type = converted %A.call, %tuple.loc13 [concrete = constants.%empty_tuple] // CHECK:STDOUT: // CHECK:STDOUT: %.loc17_7.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc17_7.2: ref %empty_tuple.type = temporary %.loc17_7.1, %C.call -// CHECK:STDOUT: %tuple.loc17_7.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc17_7.3: %empty_tuple.type = converted %C.call, %tuple.loc17_7.1 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %tuple.loc17: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc17_7.3: %empty_tuple.type = converted %C.call, %tuple.loc17 [concrete = constants.%empty_tuple] // CHECK:STDOUT: // CHECK:STDOUT: %impl.elem0.loc17: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc17_7.1: = bound_method %.loc17_7.1, %impl.elem0.loc17 // CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc17_7.2: = bound_method %.loc17_7.1, %specific_fn.loc17 -// CHECK:STDOUT: %tuple.loc17_7.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc17_7.4: %empty_tuple.type = converted %.loc17_7.1, %tuple.loc17_7.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17_7.2(%.loc17_7.4) +// CHECK:STDOUT: %addr.loc17: %ptr.843 = addr_of %.loc17_7.1 +// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17_7.2(%addr.loc17) // CHECK:STDOUT: // CHECK:STDOUT: %impl.elem0.loc13: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc13_7.1: = bound_method %.loc13_7.1, %impl.elem0.loc13 // CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc13_7.2: = bound_method %.loc13_7.1, %specific_fn.loc13 -// CHECK:STDOUT: %tuple.loc13_7.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc13_7.4: %empty_tuple.type = converted %.loc13_7.1, %tuple.loc13_7.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13_7.2(%.loc13_7.4) +// CHECK:STDOUT: %addr.loc13: %ptr.843 = addr_of %.loc13_7.1 +// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13_7.2(%addr.loc13) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/duplicate_name_same_line.carbon b/toolchain/check/testdata/basics/duplicate_name_same_line.carbon index 92f7bdd742d8..bc5b81c623dc 100644 --- a/toolchain/check/testdata/basics/duplicate_name_same_line.carbon +++ b/toolchain/check/testdata/basics/duplicate_name_same_line.carbon @@ -33,14 +33,14 @@ fn A() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -79,16 +79,14 @@ fn A() { // CHECK:STDOUT: %bound_method.loc18_25.1: = bound_method %n.var.loc18_25, %impl.elem0.loc18_25 // CHECK:STDOUT: %specific_fn.loc18_25: = specific_function %impl.elem0.loc18_25, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_25.2: = bound_method %n.var.loc18_25, %specific_fn.loc18_25 -// CHECK:STDOUT: %tuple.loc18_25: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc18_25: %empty_tuple.type = converted %n.var.loc18_25, %tuple.loc18_25 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc18_25: init %empty_tuple.type = call %bound_method.loc18_25.2(%.loc18_25) +// CHECK:STDOUT: %addr.loc18_25: %ptr.843 = addr_of %n.var.loc18_25 +// CHECK:STDOUT: %no_op.loc18_25: init %empty_tuple.type = call %bound_method.loc18_25.2(%addr.loc18_25) // CHECK:STDOUT: %impl.elem0.loc18_5: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %n.var.loc18_5, %impl.elem0.loc18_5 // CHECK:STDOUT: %specific_fn.loc18_5: = specific_function %impl.elem0.loc18_5, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %n.var.loc18_5, %specific_fn.loc18_5 -// CHECK:STDOUT: %tuple.loc18_5: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc18_5: %empty_tuple.type = converted %n.var.loc18_5, %tuple.loc18_5 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc18_5: init %empty_tuple.type = call %bound_method.loc18_5.2(%.loc18_5) +// CHECK:STDOUT: %addr.loc18_5: %ptr.843 = addr_of %n.var.loc18_5 +// CHECK:STDOUT: %no_op.loc18_5: init %empty_tuple.type = call %bound_method.loc18_5.2(%addr.loc18_5) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index 70d6c398b824..dc08aea5a657 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -201,6 +201,7 @@ class A { // CHECK:STDOUT: %Destroy.impl_witness.315: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Circle) [concrete] // CHECK:STDOUT: %Op.type.6cf: type = fn_type @Op.3, @impl.49c(%Circle) [concrete] // CHECK:STDOUT: %Op.e38: %Op.type.6cf = struct_value () [concrete] +// CHECK:STDOUT: %ptr.54d: type = ptr_type %Circle [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Circle, (%Destroy.impl_witness.315) [concrete] // CHECK:STDOUT: %.9b5: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e38, @Op.3(%Circle) [concrete] @@ -219,7 +220,7 @@ class A { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -348,8 +349,8 @@ class A { // CHECK:STDOUT: %bound_method.loc18_36.1: = bound_method %.loc18_36.1, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.3(constants.%Circle) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_36.2: = bound_method %.loc18_36.1, %specific_fn -// CHECK:STDOUT: %.loc18_36.4: %Circle = bind_value %.loc18_36.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_36.2(%.loc18_36.4) +// CHECK:STDOUT: %addr: %ptr.54d = addr_of %.loc18_36.1 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_36.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index 8387d70ad80e..b750ecf2460d 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -141,7 +141,7 @@ fn ConvertInit() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -404,8 +404,8 @@ fn ConvertInit() { // CHECK:STDOUT: %bound_method.loc42_57.3: = bound_method %.loc42_57.2, %impl.elem0.loc42_57.2 // CHECK:STDOUT: %specific_fn.loc42_57.2: = specific_function %impl.elem0.loc42_57.2, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc42_57.4: = bound_method %.loc42_57.2, %specific_fn.loc42_57.2 -// CHECK:STDOUT: %.loc42_57.10: %C = bind_value %.loc42_57.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc42_57.4(%.loc42_57.10) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc42_57.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc42_57.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/destroy_calls.carbon b/toolchain/check/testdata/class/destroy_calls.carbon index bda3a9b08d20..167fb91ef9e9 100644 --- a/toolchain/check/testdata/class/destroy_calls.carbon +++ b/toolchain/check/testdata/class/destroy_calls.carbon @@ -269,7 +269,7 @@ fn G() { F({}); } // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %NoAddr: type = class_type @NoAddr [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.88f: type = pattern_type %NoAddr [concrete] // CHECK:STDOUT: %ExplicitReturn: type = class_type @ExplicitReturn [concrete] // CHECK:STDOUT: %pattern_type.611: type = pattern_type %ExplicitReturn [concrete] @@ -283,18 +283,21 @@ fn G() { F({}); } // CHECK:STDOUT: %Destroy.impl_witness.824: = impl_witness imports.%Destroy.impl_witness_table, @impl(%WithAddr) [concrete] // CHECK:STDOUT: %Op.type.8f4: type = fn_type @Op.2, @impl(%WithAddr) [concrete] // CHECK:STDOUT: %Op.bec: %Op.type.8f4 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b4e: type = ptr_type %WithAddr [concrete] // CHECK:STDOUT: %Destroy.facet.6cc: %Destroy.type = facet_value %WithAddr, (%Destroy.impl_witness.824) [concrete] // CHECK:STDOUT: %.372: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.6cc [concrete] // CHECK:STDOUT: %Op.specific_fn.b42: = specific_function %Op.bec, @Op.2(%WithAddr) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.40a: = impl_witness imports.%Destroy.impl_witness_table, @impl(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Op.type.641: type = fn_type @Op.2, @impl(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Op.8e6: %Op.type.641 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b0a: type = ptr_type %ExplicitReturn [concrete] // CHECK:STDOUT: %Destroy.facet.c42: %Destroy.type = facet_value %ExplicitReturn, (%Destroy.impl_witness.40a) [concrete] // CHECK:STDOUT: %.b47: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.c42 [concrete] // CHECK:STDOUT: %Op.specific_fn.523: = specific_function %Op.8e6, @Op.2(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.aaa: = impl_witness imports.%Destroy.impl_witness_table, @impl(%NoAddr) [concrete] // CHECK:STDOUT: %Op.type.73f: type = fn_type @Op.2, @impl(%NoAddr) [concrete] // CHECK:STDOUT: %Op.d78: %Op.type.73f = struct_value () [concrete] +// CHECK:STDOUT: %ptr.4b8: type = ptr_type %NoAddr [concrete] // CHECK:STDOUT: %Destroy.facet.2b6: %Destroy.type = facet_value %NoAddr, (%Destroy.impl_witness.aaa) [concrete] // CHECK:STDOUT: %.7a4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2b6 [concrete] // CHECK:STDOUT: %Op.specific_fn.8fe: = specific_function %Op.d78, @Op.2(%NoAddr) [concrete] @@ -309,20 +312,20 @@ fn G() { F({}); } // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b5b = import_ref Main//types, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.1ed = import_ref Main//types, loc6_27, unloaded -// CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst42 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b14 = import_ref Main//types, loc10_30, unloaded // CHECK:STDOUT: %Main.import_ref.f79 = import_ref Main//types, loc11_33, unloaded -// CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst70 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//types, loc15_24, unloaded // CHECK:STDOUT: %Main.import_ref.675 = import_ref Main//types, loc16_33, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -393,20 +396,20 @@ fn G() { F({}); } // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %with_addr.var, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Op.2(constants.%WithAddr) [concrete = constants.%Op.specific_fn.b42] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %with_addr.var, %specific_fn.loc8 -// CHECK:STDOUT: %.loc8: %WithAddr = bind_value %with_addr.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8) +// CHECK:STDOUT: %addr.loc8: %ptr.b4e = addr_of %with_addr.var +// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) // CHECK:STDOUT: %impl.elem0.loc7: %.b47 = impl_witness_access constants.%Destroy.impl_witness.40a, element0 [concrete = constants.%Op.8e6] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %explicit_return.var, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%ExplicitReturn) [concrete = constants.%Op.specific_fn.523] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %explicit_return.var, %specific_fn.loc7 -// CHECK:STDOUT: %.loc7: %ExplicitReturn = bind_value %explicit_return.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7) +// CHECK:STDOUT: %addr.loc7: %ptr.b0a = addr_of %explicit_return.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: %impl.elem0.loc6: %.7a4 = impl_witness_access constants.%Destroy.impl_witness.aaa, element0 [concrete = constants.%Op.d78] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %no_addr.var, %impl.elem0.loc6 // CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Op.2(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %no_addr.var, %specific_fn.loc6 -// CHECK:STDOUT: %.loc6: %NoAddr = bind_value %no_addr.var -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6_3.2(%.loc6) +// CHECK:STDOUT: %addr.loc6: %ptr.4b8 = addr_of %no_addr.var +// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -418,7 +421,7 @@ fn G() { F({}); } // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %NoAddr: type = class_type @NoAddr [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.88f: type = pattern_type %NoAddr [concrete] // CHECK:STDOUT: %ExplicitReturn: type = class_type @ExplicitReturn [concrete] // CHECK:STDOUT: %pattern_type.611: type = pattern_type %ExplicitReturn [concrete] @@ -433,18 +436,21 @@ fn G() { F({}); } // CHECK:STDOUT: %Destroy.impl_witness.aaa: = impl_witness imports.%Destroy.impl_witness_table, @impl(%NoAddr) [concrete] // CHECK:STDOUT: %Op.type.73f: type = fn_type @Op.2, @impl(%NoAddr) [concrete] // CHECK:STDOUT: %Op.d78: %Op.type.73f = struct_value () [concrete] +// CHECK:STDOUT: %ptr.4b8: type = ptr_type %NoAddr [concrete] // CHECK:STDOUT: %Destroy.facet.2b6: %Destroy.type = facet_value %NoAddr, (%Destroy.impl_witness.aaa) [concrete] // CHECK:STDOUT: %.7a4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2b6 [concrete] // CHECK:STDOUT: %Op.specific_fn.8fe: = specific_function %Op.d78, @Op.2(%NoAddr) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.824: = impl_witness imports.%Destroy.impl_witness_table, @impl(%WithAddr) [concrete] // CHECK:STDOUT: %Op.type.8f4: type = fn_type @Op.2, @impl(%WithAddr) [concrete] // CHECK:STDOUT: %Op.bec: %Op.type.8f4 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b4e: type = ptr_type %WithAddr [concrete] // CHECK:STDOUT: %Destroy.facet.6cc: %Destroy.type = facet_value %WithAddr, (%Destroy.impl_witness.824) [concrete] // CHECK:STDOUT: %.372: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.6cc [concrete] // CHECK:STDOUT: %Op.specific_fn.b42: = specific_function %Op.bec, @Op.2(%WithAddr) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.40a: = impl_witness imports.%Destroy.impl_witness_table, @impl(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Op.type.641: type = fn_type @Op.2, @impl(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Op.8e6: %Op.type.641 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b0a: type = ptr_type %ExplicitReturn [concrete] // CHECK:STDOUT: %Destroy.facet.c42: %Destroy.type = facet_value %ExplicitReturn, (%Destroy.impl_witness.40a) [concrete] // CHECK:STDOUT: %.b47: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.c42 [concrete] // CHECK:STDOUT: %Op.specific_fn.523: = specific_function %Op.8e6, @Op.2(%ExplicitReturn) [concrete] @@ -459,20 +465,20 @@ fn G() { F({}); } // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b5b = import_ref Main//types, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.1ed = import_ref Main//types, loc6_27, unloaded -// CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst42 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b14 = import_ref Main//types, loc10_30, unloaded // CHECK:STDOUT: %Main.import_ref.f79 = import_ref Main//types, loc11_33, unloaded -// CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst70 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//types, loc15_24, unloaded // CHECK:STDOUT: %Main.import_ref.675 = import_ref Main//types, loc16_33, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -557,26 +563,26 @@ fn G() { F({}); } // CHECK:STDOUT: %bound_method.loc10_5.1: = bound_method %in_scope.var, %impl.elem0.loc10 // CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Op.2(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] // CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %in_scope.var, %specific_fn.loc10 -// CHECK:STDOUT: %.loc10: %NoAddr = bind_value %in_scope.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_5.2(%.loc10) +// CHECK:STDOUT: %addr.loc10: %ptr.4b8 = addr_of %in_scope.var +// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_5.2(%addr.loc10) // CHECK:STDOUT: %impl.elem0.loc8: %.372 = impl_witness_access constants.%Destroy.impl_witness.824, element0 [concrete = constants.%Op.bec] // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %with_addr.var, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Op.2(constants.%WithAddr) [concrete = constants.%Op.specific_fn.b42] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %with_addr.var, %specific_fn.loc8 -// CHECK:STDOUT: %.loc8: %WithAddr = bind_value %with_addr.var -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8) +// CHECK:STDOUT: %addr.loc8: %ptr.b4e = addr_of %with_addr.var +// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) // CHECK:STDOUT: %impl.elem0.loc7: %.b47 = impl_witness_access constants.%Destroy.impl_witness.40a, element0 [concrete = constants.%Op.8e6] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %explicit_return.var, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%ExplicitReturn) [concrete = constants.%Op.specific_fn.523] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %explicit_return.var, %specific_fn.loc7 -// CHECK:STDOUT: %.loc7: %ExplicitReturn = bind_value %explicit_return.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7) +// CHECK:STDOUT: %addr.loc7: %ptr.b0a = addr_of %explicit_return.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: %impl.elem0.loc6: %.7a4 = impl_witness_access constants.%Destroy.impl_witness.aaa, element0 [concrete = constants.%Op.d78] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %no_addr.var, %impl.elem0.loc6 // CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Op.2(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %no_addr.var, %specific_fn.loc6 -// CHECK:STDOUT: %.loc6: %NoAddr = bind_value %no_addr.var -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6_3.2(%.loc6) +// CHECK:STDOUT: %addr.loc6: %ptr.4b8 = addr_of %no_addr.var +// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -588,7 +594,7 @@ fn G() { F({}); } // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %NoAddr: type = class_type @NoAddr [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Make.type.bc9: type = fn_type @Make.1 [concrete] // CHECK:STDOUT: %Make.1be: %Make.type.bc9 = struct_value () [concrete] // CHECK:STDOUT: %ExplicitReturn: type = class_type @ExplicitReturn [concrete] @@ -605,18 +611,21 @@ fn G() { F({}); } // CHECK:STDOUT: %Destroy.impl_witness.824: = impl_witness imports.%Destroy.impl_witness_table, @impl(%WithAddr) [concrete] // CHECK:STDOUT: %Op.type.8f4: type = fn_type @Op.2, @impl(%WithAddr) [concrete] // CHECK:STDOUT: %Op.bec: %Op.type.8f4 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b4e: type = ptr_type %WithAddr [concrete] // CHECK:STDOUT: %Destroy.facet.6cc: %Destroy.type = facet_value %WithAddr, (%Destroy.impl_witness.824) [concrete] // CHECK:STDOUT: %.372: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.6cc [concrete] // CHECK:STDOUT: %Op.specific_fn.b42: = specific_function %Op.bec, @Op.2(%WithAddr) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.40a: = impl_witness imports.%Destroy.impl_witness_table, @impl(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Op.type.641: type = fn_type @Op.2, @impl(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Op.8e6: %Op.type.641 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b0a: type = ptr_type %ExplicitReturn [concrete] // CHECK:STDOUT: %Destroy.facet.c42: %Destroy.type = facet_value %ExplicitReturn, (%Destroy.impl_witness.40a) [concrete] // CHECK:STDOUT: %.b47: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.c42 [concrete] // CHECK:STDOUT: %Op.specific_fn.523: = specific_function %Op.8e6, @Op.2(%ExplicitReturn) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.aaa: = impl_witness imports.%Destroy.impl_witness_table, @impl(%NoAddr) [concrete] // CHECK:STDOUT: %Op.type.73f: type = fn_type @Op.2, @impl(%NoAddr) [concrete] // CHECK:STDOUT: %Op.d78: %Op.type.73f = struct_value () [concrete] +// CHECK:STDOUT: %ptr.4b8: type = ptr_type %NoAddr [concrete] // CHECK:STDOUT: %Destroy.facet.2b6: %Destroy.type = facet_value %NoAddr, (%Destroy.impl_witness.aaa) [concrete] // CHECK:STDOUT: %.7a4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2b6 [concrete] // CHECK:STDOUT: %Op.specific_fn.8fe: = specific_function %Op.d78, @Op.2(%NoAddr) [concrete] @@ -631,20 +640,20 @@ fn G() { F({}); } // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.784: %Make.type.bc9 = import_ref Main//types, loc5_22, loaded [concrete = constants.%Make.1be] // CHECK:STDOUT: %Main.import_ref.1ed = import_ref Main//types, loc6_27, unloaded -// CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst42 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.8e0: %Make.type.378 = import_ref Main//types, loc10_30, loaded [concrete = constants.%Make.960] // CHECK:STDOUT: %Main.import_ref.f79 = import_ref Main//types, loc11_33, unloaded -// CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst70 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.974: %Make.type.e14 = import_ref Main//types, loc15_24, loaded [concrete = constants.%Make.b0a] // CHECK:STDOUT: %Main.import_ref.675 = import_ref Main//types, loc16_33, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -709,20 +718,20 @@ fn G() { F({}); } // CHECK:STDOUT: %bound_method.loc10_17.1: = bound_method %.loc10_17.1, %impl.elem0.loc10 // CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Op.2(constants.%WithAddr) [concrete = constants.%Op.specific_fn.b42] // CHECK:STDOUT: %bound_method.loc10_17.2: = bound_method %.loc10_17.1, %specific_fn.loc10 -// CHECK:STDOUT: %.loc10_17.3: %WithAddr = bind_value %.loc10_17.1 -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_17.2(%.loc10_17.3) +// CHECK:STDOUT: %addr.loc10: %ptr.b4e = addr_of %.loc10_17.1 +// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_17.2(%addr.loc10) // CHECK:STDOUT: %impl.elem0.loc9: %.b47 = impl_witness_access constants.%Destroy.impl_witness.40a, element0 [concrete = constants.%Op.8e6] // CHECK:STDOUT: %bound_method.loc9_23.1: = bound_method %.loc9_23.1, %impl.elem0.loc9 // CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Op.2(constants.%ExplicitReturn) [concrete = constants.%Op.specific_fn.523] // CHECK:STDOUT: %bound_method.loc9_23.2: = bound_method %.loc9_23.1, %specific_fn.loc9 -// CHECK:STDOUT: %.loc9_23.3: %ExplicitReturn = bind_value %.loc9_23.1 -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_23.2(%.loc9_23.3) +// CHECK:STDOUT: %addr.loc9: %ptr.b0a = addr_of %.loc9_23.1 +// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_23.2(%addr.loc9) // CHECK:STDOUT: %impl.elem0.loc8: %.7a4 = impl_witness_access constants.%Destroy.impl_witness.aaa, element0 [concrete = constants.%Op.d78] // CHECK:STDOUT: %bound_method.loc8_15.1: = bound_method %.loc8_15.1, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Op.2(constants.%NoAddr) [concrete = constants.%Op.specific_fn.8fe] // CHECK:STDOUT: %bound_method.loc8_15.2: = bound_method %.loc8_15.1, %specific_fn.loc8 -// CHECK:STDOUT: %.loc8_15.3: %NoAddr = bind_value %.loc8_15.1 -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_15.2(%.loc8_15.3) +// CHECK:STDOUT: %addr.loc8: %ptr.4b8 = addr_of %.loc8_15.1 +// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_15.2(%addr.loc8) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -740,7 +749,7 @@ fn G() { F({}); } // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %destroy.ab7: %destroy.type.d69 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Args: type = class_type @Args [concrete] // CHECK:STDOUT: %pattern_type.a81: type = pattern_type %Args [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] @@ -757,12 +766,14 @@ fn G() { F({}); } // CHECK:STDOUT: %Destroy.impl_witness.ba4: = impl_witness imports.%Destroy.impl_witness_table, @impl(%Args) [concrete] // CHECK:STDOUT: %Op.type.59d: type = fn_type @Op.2, @impl(%Args) [concrete] // CHECK:STDOUT: %Op.a71: %Op.type.59d = struct_value () [concrete] +// CHECK:STDOUT: %ptr.7b2: type = ptr_type %Args [concrete] // CHECK:STDOUT: %Destroy.facet.7fd: %Destroy.type = facet_value %Args, (%Destroy.impl_witness.ba4) [concrete] // CHECK:STDOUT: %.dcb: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7fd [concrete] // CHECK:STDOUT: %Op.specific_fn.242: = specific_function %Op.a71, @Op.2(%Args) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.da8: = impl_witness imports.%Destroy.impl_witness_table, @impl(%NoSelf) [concrete] // CHECK:STDOUT: %Op.type.f20: type = fn_type @Op.2, @impl(%NoSelf) [concrete] // CHECK:STDOUT: %Op.2e0: %Op.type.f20 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5ab: type = ptr_type %NoSelf [concrete] // CHECK:STDOUT: %Destroy.facet.f87: %Destroy.type = facet_value %NoSelf, (%Destroy.impl_witness.da8) [concrete] // CHECK:STDOUT: %.960: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.f87 [concrete] // CHECK:STDOUT: %Op.specific_fn.a58: = specific_function %Op.2e0, @Op.2(%NoSelf) [concrete] @@ -775,7 +786,7 @@ fn G() { F({}); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -795,7 +806,7 @@ fn G() { F({}); } // CHECK:STDOUT: class @NoSelf { // CHECK:STDOUT: %destroy.decl: %destroy.type.d69 = fn_decl @destroy.1 [concrete = constants.%destroy.ab7] {} {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -821,7 +832,7 @@ fn G() { F({}); } // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -853,14 +864,14 @@ fn G() { F({}); } // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %b.var, %impl.elem0.loc22 // CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Op.2(constants.%Args) [concrete = constants.%Op.specific_fn.242] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %b.var, %specific_fn.loc22 -// CHECK:STDOUT: %.loc22: %Args = bind_value %b.var -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22) +// CHECK:STDOUT: %addr.loc22: %ptr.7b2 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22) // CHECK:STDOUT: %impl.elem0.loc21: %.960 = impl_witness_access constants.%Destroy.impl_witness.da8, element0 [concrete = constants.%Op.2e0] // CHECK:STDOUT: %bound_method.loc21_3.1: = bound_method %a.var, %impl.elem0.loc21 // CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Op.2(constants.%NoSelf) [concrete = constants.%Op.specific_fn.a58] // CHECK:STDOUT: %bound_method.loc21_3.2: = bound_method %a.var, %specific_fn.loc21 -// CHECK:STDOUT: %.loc21: %NoSelf = bind_value %a.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%.loc21) +// CHECK:STDOUT: %addr.loc21: %ptr.5ab = addr_of %a.var +// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -874,7 +885,7 @@ fn G() { F({}); } // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T.8b3d5d.1) [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.389: = require_complete_type %C.f2e [template] @@ -884,6 +895,8 @@ fn G() { F({}); } // CHECK:STDOUT: %T.8b3d5d.2: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @impl(%T.8b3d5d.2) [symbolic] // CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.7d2: type = ptr_type %C.f2e [template] +// CHECK:STDOUT: %require_complete.448: = require_complete_type %ptr.7d2 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C.f2e, @Destroy [template] // CHECK:STDOUT: %Destroy.facet.d66: %Destroy.type = facet_value %C.f2e, (%Destroy.lookup_impl_witness) [template] // CHECK:STDOUT: %.eb5: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.d66 [template] @@ -897,6 +910,8 @@ fn G() { F({}); } // CHECK:STDOUT: %Destroy.impl_witness.a3f: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C.7a7) [concrete] // CHECK:STDOUT: %Op.type.add: type = fn_type @Op.2, @impl(%C.7a7) [concrete] // CHECK:STDOUT: %Op.b1c: %Op.type.add = struct_value () [concrete] +// CHECK:STDOUT: %ptr.308: type = ptr_type %C.7a7 [concrete] +// CHECK:STDOUT: %complete_type.903: = complete_type_witness %ptr.308 [concrete] // CHECK:STDOUT: %Destroy.facet.f20: %Destroy.type = facet_value %C.7a7, (%Destroy.impl_witness.a3f) [concrete] // CHECK:STDOUT: %.2d6: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.f20 [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.b1c, @Op.2(%C.7a7) [concrete] @@ -909,7 +924,7 @@ fn G() { F({}); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -941,7 +956,7 @@ fn G() { F({}); } // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -954,13 +969,15 @@ fn G() { F({}); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %C.loc6_13.2: type = class_type @C, @C(%T.loc5_15.2) [template = %C.loc6_13.2 (constants.%C.f2e)] -// CHECK:STDOUT: %require_complete: = require_complete_type %C.loc6_13.2 [template = %require_complete (constants.%require_complete.389)] +// CHECK:STDOUT: %require_complete.loc6_13: = require_complete_type %C.loc6_13.2 [template = %require_complete.loc6_13 (constants.%require_complete.389)] // CHECK:STDOUT: %pattern_type: type = pattern_type %C.loc6_13.2 [template = %pattern_type (constants.%pattern_type.e5e)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %C.loc6_13.2, @Destroy [template = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.loc6_13.2, (%Destroy.lookup_impl_witness) [template = %Destroy.facet (constants.%Destroy.facet.d66)] -// CHECK:STDOUT: %.loc6_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc6_3.3 (constants.%.eb5)] -// CHECK:STDOUT: %impl.elem0.loc6_3.2: @F.%.loc6_3.3 (%.eb5) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc6_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc6_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc6_3.2 (constants.%.eb5)] +// CHECK:STDOUT: %impl.elem0.loc6_3.2: @F.%.loc6_3.2 (%.eb5) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc6_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc6_3.2: = specific_impl_function %impl.elem0.loc6_3.2, @Op.1(%Destroy.facet) [template = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %C.loc6_13.2 [template = %ptr (constants.%ptr.7d2)] +// CHECK:STDOUT: %require_complete.loc6_3: = require_complete_type %ptr [template = %require_complete.loc6_3 (constants.%require_complete.448)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -975,12 +992,12 @@ fn G() { F({}); } // CHECK:STDOUT: %C.loc6_13.1: type = class_type @C, @C(constants.%T.8b3d5d.1) [template = %C.loc6_13.2 (constants.%C.f2e)] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref @F.%C.loc6_13.2 (%C.f2e) = bind_name v, %v.var -// CHECK:STDOUT: %impl.elem0.loc6_3.1: @F.%.loc6_3.3 (%.eb5) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc6_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc6_3.1: @F.%.loc6_3.2 (%.eb5) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc6_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %v.var, %impl.elem0.loc6_3.1 // CHECK:STDOUT: %specific_impl_fn.loc6_3.1: = specific_impl_function %impl.elem0.loc6_3.1, @Op.1(constants.%Destroy.facet.d66) [template = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %v.var, %specific_impl_fn.loc6_3.1 -// CHECK:STDOUT: %.loc6_3.1: @F.%C.loc6_13.2 (%C.f2e) = bind_value %v.var -// CHECK:STDOUT: %.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%.loc6_3.1) +// CHECK:STDOUT: %addr: @F.%ptr (%ptr.7d2) = addr_of %v.var +// CHECK:STDOUT: %.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1010,13 +1027,15 @@ fn G() { F({}); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %C.loc6_13.2 => constants.%C.7a7 -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete.loc6_13 => constants.%complete_type.357 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.99a // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.a3f // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.f20 -// CHECK:STDOUT: %.loc6_3.3 => constants.%.2d6 +// CHECK:STDOUT: %.loc6_3.2 => constants.%.2d6 // CHECK:STDOUT: %impl.elem0.loc6_3.2 => constants.%Op.b1c // CHECK:STDOUT: %specific_impl_fn.loc6_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %ptr => constants.%ptr.308 +// CHECK:STDOUT: %require_complete.loc6_3 => constants.%complete_type.903 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%empty_struct_type) { diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index f4a1d01641e3..b4aff92c4ff6 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -53,7 +53,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete] // CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -76,7 +76,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -128,7 +128,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %self: %Class = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -147,9 +147,9 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %c.ref.loc32: %Class = name_ref c, %c // CHECK:STDOUT: %F.ref.loc32: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] // CHECK:STDOUT: %F.bound.loc32: = bound_method %c.ref.loc32, %F.ref.loc32 -// CHECK:STDOUT: %.loc32_3.1: ref %Class = temporary_storage -// CHECK:STDOUT: %addr.loc32: %ptr.e71 = addr_of %.loc32_3.1 -// CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr.loc32) +// CHECK:STDOUT: %.loc32: ref %Class = temporary_storage +// CHECK:STDOUT: %addr.loc32_3.1: %ptr.e71 = addr_of %.loc32 +// CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr.loc32_3.1) // CHECK:STDOUT: %c.ref.loc34: %Class = name_ref c, %c // CHECK:STDOUT: %G.ref.loc34: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] // CHECK:STDOUT: %G.bound.loc34: = bound_method %c.ref.loc34, %G.ref.loc34 @@ -167,11 +167,11 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %.loc39_4.2: %Class = bind_value %.loc39_4.1 // CHECK:STDOUT: %G.call.loc39: init %empty_tuple.type = call %G.bound.loc39(%.loc39_4.2) // CHECK:STDOUT: %impl.elem0: %.b9f = impl_witness_access constants.%Destroy.impl_witness.fef, element0 [concrete = constants.%Op.d64] -// CHECK:STDOUT: %bound_method.loc32_3.1: = bound_method %.loc32_3.1, %impl.elem0 +// CHECK:STDOUT: %bound_method.loc32_3.1: = bound_method %.loc32, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%Class) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc32_3.2: = bound_method %.loc32_3.1, %specific_fn -// CHECK:STDOUT: %.loc32_3.2: %Class = bind_value %.loc32_3.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc32_3.2(%.loc32_3.2) +// CHECK:STDOUT: %bound_method.loc32_3.2: = bound_method %.loc32, %specific_fn +// CHECK:STDOUT: %addr.loc32_3.2: %ptr.e71 = addr_of %.loc32 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc32_3.2(%addr.loc32_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 8c1c5ffb8ec0..7a3df93a598f 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -70,12 +70,14 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet.5f7: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5f7 [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.3(%i32) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.fef: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Class) [concrete] // CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.3, @impl.49c(%Class) [concrete] // CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %Destroy.facet.817: %Destroy.type = facet_value %Class, (%Destroy.impl_witness.fef) [concrete] // CHECK:STDOUT: %.b9f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.817 [concrete] // CHECK:STDOUT: %Op.specific_fn.618: = specific_function %Op.d64, @Op.3(%Class) [concrete] @@ -94,7 +96,7 @@ fn Run() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -191,20 +193,20 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc25_3.1: = bound_method %ck.var, %impl.elem0.loc25 // CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc25_3.2: = bound_method %ck.var, %specific_fn.loc25 -// CHECK:STDOUT: %.loc25_3: %i32 = bind_value %ck.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%.loc25_3) +// CHECK:STDOUT: %addr.loc25: %ptr.235 = addr_of %ck.var +// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%addr.loc25) // CHECK:STDOUT: %impl.elem0.loc24: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %cj.var, %impl.elem0.loc24 // CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %cj.var, %specific_fn.loc24 -// CHECK:STDOUT: %.loc24_3: %i32 = bind_value %cj.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24_3) +// CHECK:STDOUT: %addr.loc24: %ptr.235 = addr_of %cj.var +// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24) // CHECK:STDOUT: %impl.elem0.loc21: %.b9f = impl_witness_access constants.%Destroy.impl_witness.fef, element0 [concrete = constants.%Op.d64] // CHECK:STDOUT: %bound_method.loc21_3.1: = bound_method %c.var, %impl.elem0.loc21 // CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Op.3(constants.%Class) [concrete = constants.%Op.specific_fn.618] // CHECK:STDOUT: %bound_method.loc21_3.2: = bound_method %c.var, %specific_fn.loc21 -// CHECK:STDOUT: %.loc21: %Class = bind_value %c.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%.loc21) +// CHECK:STDOUT: %addr.loc21: %ptr.e71 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index ef36547cf360..071b979f75eb 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -71,12 +71,14 @@ fn Test() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet.5f7: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5f7 [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.3(%i32) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.fef: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Class) [concrete] // CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.3, @impl.49c(%Class) [concrete] // CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %Destroy.facet.817: %Destroy.type = facet_value %Class, (%Destroy.impl_witness.fef) [concrete] // CHECK:STDOUT: %.b9f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.817 [concrete] // CHECK:STDOUT: %Op.specific_fn.618: = specific_function %Op.d64, @Op.3(%Class) [concrete] @@ -95,7 +97,7 @@ fn Test() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -199,20 +201,20 @@ fn Test() { // CHECK:STDOUT: %bound_method.loc26_3.1: = bound_method %ck.var, %impl.elem0.loc26 // CHECK:STDOUT: %specific_fn.loc26: = specific_function %impl.elem0.loc26, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc26_3.2: = bound_method %ck.var, %specific_fn.loc26 -// CHECK:STDOUT: %.loc26_3: %i32 = bind_value %ck.var -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3.2(%.loc26_3) +// CHECK:STDOUT: %addr.loc26: %ptr.235 = addr_of %ck.var +// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3.2(%addr.loc26) // CHECK:STDOUT: %impl.elem0.loc25: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc25_3.1: = bound_method %cj.var, %impl.elem0.loc25 // CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc25_3.2: = bound_method %cj.var, %specific_fn.loc25 -// CHECK:STDOUT: %.loc25_3: %i32 = bind_value %cj.var -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%.loc25_3) +// CHECK:STDOUT: %addr.loc25: %ptr.235 = addr_of %cj.var +// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%addr.loc25) // CHECK:STDOUT: %impl.elem0.loc21: %.b9f = impl_witness_access constants.%Destroy.impl_witness.fef, element0 [concrete = constants.%Op.d64] // CHECK:STDOUT: %bound_method.loc21_3.1: = bound_method %cv.var, %impl.elem0.loc21 // CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Op.3(constants.%Class) [concrete = constants.%Op.specific_fn.618] // CHECK:STDOUT: %bound_method.loc21_3.2: = bound_method %cv.var, %specific_fn.loc21 -// CHECK:STDOUT: %.loc21: %Class = bind_value %cv.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%.loc21) +// CHECK:STDOUT: %addr.loc21: %ptr.e71 = addr_of %cv.var +// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index e1d3231f5713..e574ece8760a 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -674,12 +674,14 @@ class Class(U:! type) { // CHECK:STDOUT: %Destroy.impl_witness.f45: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%CompleteClass.a06) [concrete] // CHECK:STDOUT: %Op.type.370: type = fn_type @Op.3, @impl.49c(%CompleteClass.a06) [concrete] // CHECK:STDOUT: %Op.867: %Op.type.370 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d29: type = ptr_type %CompleteClass.a06 [concrete] // CHECK:STDOUT: %Destroy.facet.968: %Destroy.type = facet_value %CompleteClass.a06, (%Destroy.impl_witness.f45) [concrete] // CHECK:STDOUT: %.219: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.968 [concrete] // CHECK:STDOUT: %Op.specific_fn.0ab: = specific_function %Op.867, @Op.3(%CompleteClass.a06) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.190: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%CompleteClass.0fe) [concrete] // CHECK:STDOUT: %Op.type.310: type = fn_type @Op.3, @impl.49c(%CompleteClass.0fe) [concrete] // CHECK:STDOUT: %Op.200: %Op.type.310 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.c79: type = ptr_type %CompleteClass.0fe [concrete] // CHECK:STDOUT: %Destroy.facet.e96: %Destroy.type = facet_value %CompleteClass.0fe, (%Destroy.impl_witness.190) [concrete] // CHECK:STDOUT: %.614: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.e96 [concrete] // CHECK:STDOUT: %Op.specific_fn.a4e: = specific_function %Op.200, @Op.3(%CompleteClass.0fe) [concrete] @@ -705,7 +707,7 @@ class Class(U:! type) { // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -749,9 +751,9 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %CompleteClass.0fe = var %v.var_patt // CHECK:STDOUT: %F.ref: %F.type.b25 = name_ref F, imports.%Main.F [concrete = constants.%F.c41] -// CHECK:STDOUT: %.loc14_34.1: ref %CompleteClass.a06 = temporary_storage -// CHECK:STDOUT: %F.call: init %CompleteClass.a06 = call %F.ref() to %.loc14_34.1 -// CHECK:STDOUT: %.loc14_3.1: %CompleteClass.0fe = converted %F.call, [concrete = ] +// CHECK:STDOUT: %.loc14_34: ref %CompleteClass.a06 = temporary_storage +// CHECK:STDOUT: %F.call: init %CompleteClass.a06 = call %F.ref() to %.loc14_34 +// CHECK:STDOUT: %.loc14_3: %CompleteClass.0fe = converted %F.call, [concrete = ] // CHECK:STDOUT: assign %v.var, // CHECK:STDOUT: %.loc14_28: type = splice_block %CompleteClass [concrete = constants.%CompleteClass.0fe] { // CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, imports.%Main.CompleteClass [concrete = constants.%CompleteClass.generic] @@ -762,17 +764,17 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %CompleteClass.0fe = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc14_34: %.219 = impl_witness_access constants.%Destroy.impl_witness.f45, element0 [concrete = constants.%Op.867] -// CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %.loc14_34.1, %impl.elem0.loc14_34 +// CHECK:STDOUT: %bound_method.loc14_34.1: = bound_method %.loc14_34, %impl.elem0.loc14_34 // CHECK:STDOUT: %specific_fn.loc14_34: = specific_function %impl.elem0.loc14_34, @Op.3(constants.%CompleteClass.a06) [concrete = constants.%Op.specific_fn.0ab] -// CHECK:STDOUT: %bound_method.loc14_34.2: = bound_method %.loc14_34.1, %specific_fn.loc14_34 -// CHECK:STDOUT: %.loc14_34.2: %CompleteClass.a06 = bind_value %.loc14_34.1 -// CHECK:STDOUT: %no_op.loc14_34: init %empty_tuple.type = call %bound_method.loc14_34.2(%.loc14_34.2) +// CHECK:STDOUT: %bound_method.loc14_34.2: = bound_method %.loc14_34, %specific_fn.loc14_34 +// CHECK:STDOUT: %addr.loc14_34: %ptr.d29 = addr_of %.loc14_34 +// CHECK:STDOUT: %no_op.loc14_34: init %empty_tuple.type = call %bound_method.loc14_34.2(%addr.loc14_34) // CHECK:STDOUT: %impl.elem0.loc14_3: %.614 = impl_witness_access constants.%Destroy.impl_witness.190, element0 [concrete = constants.%Op.200] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %v.var, %impl.elem0.loc14_3 // CHECK:STDOUT: %specific_fn.loc14_3: = specific_function %impl.elem0.loc14_3, @Op.3(constants.%CompleteClass.0fe) [concrete = constants.%Op.specific_fn.a4e] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %v.var, %specific_fn.loc14_3 -// CHECK:STDOUT: %.loc14_3.2: %CompleteClass.0fe = bind_value %v.var -// CHECK:STDOUT: %no_op.loc14_3: init %empty_tuple.type = call %bound_method.loc14_3.2(%.loc14_3.2) +// CHECK:STDOUT: %addr.loc14_3: %ptr.c79 = addr_of %v.var +// CHECK:STDOUT: %no_op.loc14_3: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr.loc14_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index a1b21efe989a..a40fa0f95103 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -46,6 +46,8 @@ class Class(T:! type) { // CHECK:STDOUT: %MakeClass.specific_fn: = specific_function %MakeClass, @MakeClass(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %ptr.955: type = ptr_type %Class [symbolic] +// CHECK:STDOUT: %require_complete.2ae: = require_complete_type %ptr.955 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.d76: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] @@ -161,7 +163,7 @@ class Class(T:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc20_19.2: type = class_type @Class, @Class(%T) [symbolic = %Class.loc20_19.2 (constants.%Class)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc20_19.2 [symbolic = %require_complete (constants.%require_complete.4f8)] +// CHECK:STDOUT: %require_complete.loc20: = require_complete_type %Class.loc20_19.2 [symbolic = %require_complete.loc20 (constants.%require_complete.4f8)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc20_19.2 [symbolic = %pattern_type (constants.%pattern_type.3c1)] // CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T) [symbolic = %MakeSelf.type (constants.%MakeSelf.type)] // CHECK:STDOUT: %MakeSelf: @F.%MakeSelf.type (%MakeSelf.type) = struct_value () [symbolic = %MakeSelf (constants.%MakeSelf)] @@ -171,9 +173,11 @@ class Class(T:! type) { // CHECK:STDOUT: %MakeClass.specific_fn.loc21_19.2: = specific_function %MakeClass, @MakeClass(%T) [symbolic = %MakeClass.specific_fn.loc21_19.2 (constants.%MakeClass.specific_fn)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Class.loc20_19.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc20_19.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc21_5.6: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc21_5.6 (constants.%.d76)] -// CHECK:STDOUT: %impl.elem0.loc21_5.3: @F.%.loc21_5.6 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc21_5.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc21_5.4 (constants.%.d76)] +// CHECK:STDOUT: %impl.elem0.loc21_5.3: @F.%.loc21_5.4 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc21_5.3: = specific_impl_function %impl.elem0.loc21_5.3, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %Class.loc20_19.2 [symbolic = %ptr (constants.%ptr.955)] +// CHECK:STDOUT: %require_complete.loc21: = require_complete_type %ptr [symbolic = %require_complete.loc21 (constants.%require_complete.2ae)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -210,30 +214,30 @@ class Class(T:! type) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc21_12.2 [symbolic = %Class.loc20_19.2 (constants.%Class)] // CHECK:STDOUT: } // CHECK:STDOUT: %s: ref @F.%Class.loc20_19.2 (%Class) = bind_name s, %s.var -// CHECK:STDOUT: %impl.elem0.loc21_5.1: @F.%.loc21_5.6 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc21_5.1: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %.loc21_5.1, %impl.elem0.loc21_5.1 // CHECK:STDOUT: %specific_impl_fn.loc21_5.1: = specific_impl_function %impl.elem0.loc21_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %.loc21_5.1, %specific_impl_fn.loc21_5.1 -// CHECK:STDOUT: %.loc21_5.2: @F.%Class.loc20_19.2 (%Class) = bind_value %.loc21_5.1 -// CHECK:STDOUT: %.loc21_5.3: init %empty_tuple.type = call %bound_method.loc21_5.2(%.loc21_5.2) -// CHECK:STDOUT: %impl.elem0.loc21_5.2: @F.%.loc21_5.6 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %addr.loc21_5.1: @F.%ptr (%ptr.955) = addr_of %.loc21_5.1 +// CHECK:STDOUT: %.loc21_5.2: init %empty_tuple.type = call %bound_method.loc21_5.2(%addr.loc21_5.1) +// CHECK:STDOUT: %impl.elem0.loc21_5.2: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %s.var, %impl.elem0.loc21_5.2 // CHECK:STDOUT: %specific_impl_fn.loc21_5.2: = specific_impl_function %impl.elem0.loc21_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc21_5.4: = bound_method %s.var, %specific_impl_fn.loc21_5.2 -// CHECK:STDOUT: %.loc21_5.4: @F.%Class.loc20_19.2 (%Class) = bind_value %s.var -// CHECK:STDOUT: %.loc21_5.5: init %empty_tuple.type = call %bound_method.loc21_5.4(%.loc21_5.4) -// CHECK:STDOUT: %impl.elem0.loc20_5.1: @F.%.loc21_5.6 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %addr.loc21_5.2: @F.%ptr (%ptr.955) = addr_of %s.var +// CHECK:STDOUT: %.loc21_5.3: init %empty_tuple.type = call %bound_method.loc21_5.4(%addr.loc21_5.2) +// CHECK:STDOUT: %impl.elem0.loc20_5.1: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc20_5.1: = bound_method %.loc20_5.1, %impl.elem0.loc20_5.1 // CHECK:STDOUT: %specific_impl_fn.loc20_5.1: = specific_impl_function %impl.elem0.loc20_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc20_5.2: = bound_method %.loc20_5.1, %specific_impl_fn.loc20_5.1 -// CHECK:STDOUT: %.loc20_5.2: @F.%Class.loc20_19.2 (%Class) = bind_value %.loc20_5.1 -// CHECK:STDOUT: %.loc20_5.3: init %empty_tuple.type = call %bound_method.loc20_5.2(%.loc20_5.2) -// CHECK:STDOUT: %impl.elem0.loc20_5.2: @F.%.loc21_5.6 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] +// CHECK:STDOUT: %addr.loc20_5.1: @F.%ptr (%ptr.955) = addr_of %.loc20_5.1 +// CHECK:STDOUT: %.loc20_5.2: init %empty_tuple.type = call %bound_method.loc20_5.2(%addr.loc20_5.1) +// CHECK:STDOUT: %impl.elem0.loc20_5.2: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc20_5.3: = bound_method %c.var, %impl.elem0.loc20_5.2 // CHECK:STDOUT: %specific_impl_fn.loc20_5.2: = specific_impl_function %impl.elem0.loc20_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc20_5.4: = bound_method %c.var, %specific_impl_fn.loc20_5.2 -// CHECK:STDOUT: %.loc20_5.4: @F.%Class.loc20_19.2 (%Class) = bind_value %c.var -// CHECK:STDOUT: %.loc20_5.5: init %empty_tuple.type = call %bound_method.loc20_5.4(%.loc20_5.4) +// CHECK:STDOUT: %addr.loc20_5.2: @F.%ptr (%ptr.955) = addr_of %c.var +// CHECK:STDOUT: %.loc20_5.3: init %empty_tuple.type = call %bound_method.loc20_5.4(%addr.loc20_5.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index e97f85d6aad1..54af478692c4 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -224,12 +224,14 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.0f1: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.c62) [concrete] // CHECK:STDOUT: %Op.type.7f0: type = fn_type @Op.3, @impl.49c(%ptr.c62) [concrete] // CHECK:STDOUT: %Op.90d: %Op.type.7f0 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.c22: type = ptr_type %ptr.c62 [concrete] // CHECK:STDOUT: %Destroy.facet.f98: %Destroy.type = facet_value %ptr.c62, (%Destroy.impl_witness.0f1) [concrete] // CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.f98 [concrete] // CHECK:STDOUT: %Op.specific_fn.b24: = specific_function %Op.90d, @Op.3(%ptr.c62) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.20e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.6cf) [concrete] // CHECK:STDOUT: %Op.type.d2a: type = fn_type @Op.3, @impl.49c(%ptr.6cf) [concrete] // CHECK:STDOUT: %Op.3b0: %Op.type.d2a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.df0: type = ptr_type %ptr.6cf [concrete] // CHECK:STDOUT: %Destroy.facet.c42: %Destroy.type = facet_value %ptr.6cf, (%Destroy.impl_witness.20e) [concrete] // CHECK:STDOUT: %.581: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.c42 [concrete] // CHECK:STDOUT: %Op.specific_fn.3de: = specific_function %Op.3b0, @Op.3(%ptr.6cf) [concrete] @@ -242,12 +244,14 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.913: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Field) [concrete] // CHECK:STDOUT: %Op.type.47c: type = fn_type @Op.3, @impl.49c(%Field) [concrete] // CHECK:STDOUT: %Op.576: %Op.type.47c = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d8b: type = ptr_type %Field [concrete] // CHECK:STDOUT: %Destroy.facet.30c: %Destroy.type = facet_value %Field, (%Destroy.impl_witness.913) [concrete] // CHECK:STDOUT: %.e41: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.30c [concrete] // CHECK:STDOUT: %Op.specific_fn.29d: = specific_function %Op.576, @Op.3(%Field) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.5ee: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Empty) [concrete] // CHECK:STDOUT: %Op.type.b74: type = fn_type @Op.3, @impl.49c(%Empty) [concrete] // CHECK:STDOUT: %Op.6e4: %Op.type.b74 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.961: type = ptr_type %Empty [concrete] // CHECK:STDOUT: %Destroy.facet.96b: %Destroy.type = facet_value %Empty, (%Destroy.impl_witness.5ee) [concrete] // CHECK:STDOUT: %.98a: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.96b [concrete] // CHECK:STDOUT: %Op.specific_fn.1a5: = specific_function %Op.6e4, @Op.3(%Empty) [concrete] @@ -282,7 +286,7 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.42a = import_ref Main//a, loc14_21, unloaded // CHECK:STDOUT: %Main.import_ref.67a = import_ref Main//a, loc15_27, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -344,8 +348,8 @@ fn Run() { // CHECK:STDOUT: %a.var: ref %Empty = var %a.var_patt // CHECK:STDOUT: %.loc7_19.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_19.2: init %Empty = class_init (), %a.var [concrete = constants.%Empty.val] -// CHECK:STDOUT: %.loc7_3.1: init %Empty = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%Empty.val] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %Empty = converted %.loc7_19.1, %.loc7_19.2 [concrete = constants.%Empty.val] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, imports.%Main.Empty [concrete = constants.%Empty] // CHECK:STDOUT: %a: ref %Empty = bind_name a, %a.var // CHECK:STDOUT: name_binding_decl { @@ -364,8 +368,8 @@ fn Run() { // CHECK:STDOUT: %.loc9_25.3: ref %i32 = class_element_access %b.var, element0 // CHECK:STDOUT: %.loc9_25.4: init %i32 = initialize_from %.loc9_25.2 to %.loc9_25.3 [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc9_25.5: init %Field = class_init (%.loc9_25.4), %b.var [concrete = constants.%Field.val] -// CHECK:STDOUT: %.loc9_3.1: init %Field = converted %.loc9_25.1, %.loc9_25.5 [concrete = constants.%Field.val] -// CHECK:STDOUT: assign %b.var, %.loc9_3.1 +// CHECK:STDOUT: %.loc9_3: init %Field = converted %.loc9_25.1, %.loc9_25.5 [concrete = constants.%Field.val] +// CHECK:STDOUT: assign %b.var, %.loc9_3 // CHECK:STDOUT: %Field.ref: type = name_ref Field, imports.%Main.Field [concrete = constants.%Field] // CHECK:STDOUT: %b: ref %Field = bind_name b, %b.var // CHECK:STDOUT: %b.ref: ref %Field = name_ref b, %b @@ -386,8 +390,8 @@ fn Run() { // CHECK:STDOUT: %c.var: ref %ForwardDeclared.7b34f2.1 = var %c.var_patt // CHECK:STDOUT: %.loc12_29.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc12_29.2: init %ForwardDeclared.7b34f2.1 = class_init (), %c.var [concrete = constants.%ForwardDeclared.val] -// CHECK:STDOUT: %.loc12_3.1: init %ForwardDeclared.7b34f2.1 = converted %.loc12_29.1, %.loc12_29.2 [concrete = constants.%ForwardDeclared.val] -// CHECK:STDOUT: assign %c.var, %.loc12_3.1 +// CHECK:STDOUT: %.loc12_3: init %ForwardDeclared.7b34f2.1 = converted %.loc12_29.1, %.loc12_29.2 [concrete = constants.%ForwardDeclared.val] +// CHECK:STDOUT: assign %c.var, %.loc12_3 // CHECK:STDOUT: %ForwardDeclared.ref.loc12: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.7b34f2.1] // CHECK:STDOUT: %c: ref %ForwardDeclared.7b34f2.1 = bind_name c, %c.var // CHECK:STDOUT: %c.ref.loc13: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c @@ -406,9 +410,9 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %ptr.6cf = var %d.var_patt // CHECK:STDOUT: %c.ref.loc16: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c -// CHECK:STDOUT: %addr.loc16: %ptr.6cf = addr_of %c.ref.loc16 -// CHECK:STDOUT: assign %d.var, %addr.loc16 -// CHECK:STDOUT: %.loc16_25: type = splice_block %ptr.loc16 [concrete = constants.%ptr.6cf] { +// CHECK:STDOUT: %addr.loc16_29: %ptr.6cf = addr_of %c.ref.loc16 +// CHECK:STDOUT: assign %d.var, %addr.loc16_29 +// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16 [concrete = constants.%ptr.6cf] { // CHECK:STDOUT: %ForwardDeclared.ref.loc16: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.7b34f2.1] // CHECK:STDOUT: %ptr.loc16: type = ptr_type %ForwardDeclared.ref.loc16 [concrete = constants.%ptr.6cf] // CHECK:STDOUT: } @@ -418,7 +422,7 @@ fn Run() { // CHECK:STDOUT: %e.var_patt: %pattern_type.275 = var_pattern %e.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %ptr.c62 = var %e.var_patt -// CHECK:STDOUT: %.loc18_20: type = splice_block %ptr.loc18 [concrete = constants.%ptr.c62] { +// CHECK:STDOUT: %.loc18: type = splice_block %ptr.loc18 [concrete = constants.%ptr.c62] { // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, imports.%Main.Incomplete [concrete = constants.%Incomplete] // CHECK:STDOUT: %ptr.loc18: type = ptr_type %Incomplete.ref [concrete = constants.%ptr.c62] // CHECK:STDOUT: } @@ -427,32 +431,32 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %e.var, %impl.elem0.loc18 // CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Op.3(constants.%ptr.c62) [concrete = constants.%Op.specific_fn.b24] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %e.var, %specific_fn.loc18 -// CHECK:STDOUT: %.loc18_3: %ptr.c62 = bind_value %e.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3) +// CHECK:STDOUT: %addr.loc18: %ptr.c22 = addr_of %e.var +// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18) // CHECK:STDOUT: %impl.elem0.loc16: %.581 = impl_witness_access constants.%Destroy.impl_witness.20e, element0 [concrete = constants.%Op.3b0] // CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %d.var, %impl.elem0.loc16 // CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Op.3(constants.%ptr.6cf) [concrete = constants.%Op.specific_fn.3de] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %d.var, %specific_fn.loc16 -// CHECK:STDOUT: %.loc16_3: %ptr.6cf = bind_value %d.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.2(%.loc16_3) +// CHECK:STDOUT: %addr.loc16_3: %ptr.df0 = addr_of %d.var +// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.2(%addr.loc16_3) // CHECK:STDOUT: %impl.elem0.loc12: %.21e = impl_witness_access constants.%Destroy.impl_witness.ff6, element0 [concrete = constants.%Op.9e2] // CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %c.var, %impl.elem0.loc12 // CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Op.3(constants.%ForwardDeclared.7b34f2.1) [concrete = constants.%Op.specific_fn.09a] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %c.var, %specific_fn.loc12 -// CHECK:STDOUT: %.loc12_3.2: %ForwardDeclared.7b34f2.1 = bind_value %c.var -// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12_3.2(%.loc12_3.2) +// CHECK:STDOUT: %addr.loc12: %ptr.6cf = addr_of %c.var +// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12_3.2(%addr.loc12) // CHECK:STDOUT: %impl.elem0.loc9_3: %.e41 = impl_witness_access constants.%Destroy.impl_witness.913, element0 [concrete = constants.%Op.576] // CHECK:STDOUT: %bound_method.loc9_3.1: = bound_method %b.var, %impl.elem0.loc9_3 // CHECK:STDOUT: %specific_fn.loc9_3: = specific_function %impl.elem0.loc9_3, @Op.3(constants.%Field) [concrete = constants.%Op.specific_fn.29d] // CHECK:STDOUT: %bound_method.loc9_3.2: = bound_method %b.var, %specific_fn.loc9_3 -// CHECK:STDOUT: %.loc9_3.2: %Field = bind_value %b.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_3.2(%.loc9_3.2) +// CHECK:STDOUT: %addr.loc9: %ptr.d8b = addr_of %b.var +// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_3.2(%addr.loc9) // CHECK:STDOUT: %impl.elem0.loc7: %.98a = impl_witness_access constants.%Destroy.impl_witness.5ee, element0 [concrete = constants.%Op.6e4] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %a.var, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.3(constants.%Empty) [concrete = constants.%Op.specific_fn.1a5] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %a.var, %specific_fn.loc7 -// CHECK:STDOUT: %.loc7_3.2: %Empty = bind_value %a.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.961 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index 3cc8d518f77e..a3884fcb31f1 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -190,6 +190,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.23a: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Child) [concrete] // CHECK:STDOUT: %Op.type.ea2: type = fn_type @Op.3, @impl.49c(%Child) [concrete] // CHECK:STDOUT: %Op.c04: %Op.type.ea2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.dc0: type = ptr_type %Child [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Child, (%Destroy.impl_witness.23a) [concrete] // CHECK:STDOUT: %.337: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.c04, @Op.3(%Child) [concrete] @@ -219,7 +220,7 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @impl.c81 [concrete] // CHECK:STDOUT: %.720: %Base.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,8 +289,8 @@ fn Run() { // CHECK:STDOUT: %.loc7_47.8: init %Base = class_init (%.loc7_47.4, %.loc7_47.7), %.loc7_48.2 [concrete = constants.%Base.val] // CHECK:STDOUT: %.loc7_48.3: init %Base = converted %.loc7_47.1, %.loc7_47.8 [concrete = constants.%Base.val] // CHECK:STDOUT: %.loc7_48.4: init %Child = class_init (%.loc7_48.3), %a.var [concrete = constants.%Child.val] -// CHECK:STDOUT: %.loc7_3.1: init %Child = converted %.loc7_48.1, %.loc7_48.4 [concrete = constants.%Child.val] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %Child = converted %.loc7_48.1, %.loc7_48.4 [concrete = constants.%Child.val] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %Child.ref: type = name_ref Child, imports.%Main.Child [concrete = constants.%Child] // CHECK:STDOUT: %a: ref %Child = bind_name a, %a.var // CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a @@ -316,8 +317,8 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %a.var, %impl.elem0.loc7_3 // CHECK:STDOUT: %specific_fn.loc7_3: = specific_function %impl.elem0.loc7_3, @Op.3(constants.%Child) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %a.var, %specific_fn.loc7_3 -// CHECK:STDOUT: %.loc7_3.2: %Child = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.2) +// CHECK:STDOUT: %addr: %ptr.dc0 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index 2d52649546f3..06dd34d2df22 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -89,6 +89,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.2ce: = impl_witness imports.%Destroy.impl_witness_table, @impl(%ptr.257) [concrete] // CHECK:STDOUT: %Op.type.a45: type = fn_type @Op.2, @impl(%ptr.257) [concrete] // CHECK:STDOUT: %Op.109: %Op.type.a45 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d80: type = ptr_type %ptr.257 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.257, (%Destroy.impl_witness.2ce) [concrete] // CHECK:STDOUT: %.dff: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.109, @Op.2(%ptr.257) [concrete] @@ -105,7 +106,7 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.3a6 = import_ref Main//a, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.4e0 = import_ref Main//a, loc5_8, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -135,7 +136,7 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.d3d = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %ptr.257 = var %a.var_patt -// CHECK:STDOUT: %.loc7_15: type = splice_block %ptr [concrete = constants.%ptr.257] { +// CHECK:STDOUT: %.loc7: type = splice_block %ptr [concrete = constants.%ptr.257] { // CHECK:STDOUT: %Cycle.ref: type = name_ref Cycle, imports.%Main.Cycle [concrete = constants.%Cycle] // CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr.257] // CHECK:STDOUT: } @@ -144,8 +145,8 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %a.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%ptr.257) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %a.var, %specific_fn -// CHECK:STDOUT: %.loc7_3: %ptr.257 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3) +// CHECK:STDOUT: %addr: %ptr.d80 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index a3644bc19dc0..7561fb086d97 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -87,17 +87,17 @@ fn F(a: Outer*) { // CHECK:STDOUT: %Op.754: %Op.type.9bc = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.adc: %Destroy.type = facet_value %Inner, (%Destroy.impl_witness.768) [concrete] // CHECK:STDOUT: %.6f6: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.adc [concrete] +// CHECK:STDOUT: %pattern_type.27f: type = pattern_type %ptr.36a [concrete] // CHECK:STDOUT: %Op.specific_fn.72f: = specific_function %Op.754, @Op.2(%Inner) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.e12: = impl_witness imports.%Destroy.impl_witness_table, @impl(%Outer) [concrete] // CHECK:STDOUT: %Op.type.50c: type = fn_type @Op.2, @impl(%Outer) [concrete] // CHECK:STDOUT: %Op.8d4: %Op.type.50c = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.c71: %Destroy.type = facet_value %Outer, (%Destroy.impl_witness.e12) [concrete] // CHECK:STDOUT: %.2c9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.c71 [concrete] -// CHECK:STDOUT: %Op.specific_fn.2a1: = specific_function %Op.8d4, @Op.2(%Outer) [concrete] // CHECK:STDOUT: %pattern_type.95c: type = pattern_type %ptr.5df [concrete] +// CHECK:STDOUT: %Op.specific_fn.2a1: = specific_function %Op.8d4, @Op.2(%Outer) [concrete] // CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete] // CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.27f: type = pattern_type %ptr.36a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -107,7 +107,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -205,14 +205,14 @@ fn F(a: Outer*) { // CHECK:STDOUT: %bound_method.loc19_5.1: = bound_method %i.var, %impl.elem0.loc19 // CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Op.2(constants.%Inner) [concrete = constants.%Op.specific_fn.72f] // CHECK:STDOUT: %bound_method.loc19_5.2: = bound_method %i.var, %specific_fn.loc19 -// CHECK:STDOUT: %.loc19: %Inner = bind_value %i.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_5.2(%.loc19) +// CHECK:STDOUT: %addr.loc19: %ptr.36a = addr_of %i.var +// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_5.2(%addr.loc19) // CHECK:STDOUT: %impl.elem0.loc18: %.2c9 = impl_witness_access constants.%Destroy.impl_witness.e12, element0 [concrete = constants.%Op.8d4] // CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %o.var, %impl.elem0.loc18 // CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Op.2(constants.%Outer) [concrete = constants.%Op.specific_fn.2a1] // CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %o.var, %specific_fn.loc18 -// CHECK:STDOUT: %.loc18: %Outer = bind_value %o.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_5.2(%.loc18) +// CHECK:STDOUT: %addr.loc18: %ptr.5df = addr_of %o.var +// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_5.2(%addr.loc18) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -236,14 +236,14 @@ fn F(a: Outer*) { // CHECK:STDOUT: %bound_method.loc30_7.1: = bound_method %i.var, %impl.elem0.loc30 // CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Op.2(constants.%Inner) [concrete = constants.%Op.specific_fn.72f] // CHECK:STDOUT: %bound_method.loc30_7.2: = bound_method %i.var, %specific_fn.loc30 -// CHECK:STDOUT: %.loc30: %Inner = bind_value %i.var -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_7.2(%.loc30) +// CHECK:STDOUT: %addr.loc30: %ptr.36a = addr_of %i.var +// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_7.2(%addr.loc30) // CHECK:STDOUT: %impl.elem0.loc29: %.2c9 = impl_witness_access constants.%Destroy.impl_witness.e12, element0 [concrete = constants.%Op.8d4] // CHECK:STDOUT: %bound_method.loc29_7.1: = bound_method %o.var, %impl.elem0.loc29 // CHECK:STDOUT: %specific_fn.loc29: = specific_function %impl.elem0.loc29, @Op.2(constants.%Outer) [concrete = constants.%Op.specific_fn.2a1] // CHECK:STDOUT: %bound_method.loc29_7.2: = bound_method %o.var, %specific_fn.loc29 -// CHECK:STDOUT: %.loc29: %Outer = bind_value %o.var -// CHECK:STDOUT: %no_op.loc29: init %empty_tuple.type = call %bound_method.loc29_7.2(%.loc29) +// CHECK:STDOUT: %addr.loc29: %ptr.5df = addr_of %o.var +// CHECK:STDOUT: %no_op.loc29: init %empty_tuple.type = call %bound_method.loc29_7.2(%addr.loc29) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -267,14 +267,14 @@ fn F(a: Outer*) { // CHECK:STDOUT: %bound_method.loc37_5.1: = bound_method %i.var, %impl.elem0.loc37 // CHECK:STDOUT: %specific_fn.loc37: = specific_function %impl.elem0.loc37, @Op.2(constants.%Inner) [concrete = constants.%Op.specific_fn.72f] // CHECK:STDOUT: %bound_method.loc37_5.2: = bound_method %i.var, %specific_fn.loc37 -// CHECK:STDOUT: %.loc37: %Inner = bind_value %i.var -// CHECK:STDOUT: %no_op.loc37: init %empty_tuple.type = call %bound_method.loc37_5.2(%.loc37) +// CHECK:STDOUT: %addr.loc37: %ptr.36a = addr_of %i.var +// CHECK:STDOUT: %no_op.loc37: init %empty_tuple.type = call %bound_method.loc37_5.2(%addr.loc37) // CHECK:STDOUT: %impl.elem0.loc36: %.2c9 = impl_witness_access constants.%Destroy.impl_witness.e12, element0 [concrete = constants.%Op.8d4] // CHECK:STDOUT: %bound_method.loc36_5.1: = bound_method %o.var, %impl.elem0.loc36 // CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Op.2(constants.%Outer) [concrete = constants.%Op.specific_fn.2a1] // CHECK:STDOUT: %bound_method.loc36_5.2: = bound_method %o.var, %specific_fn.loc36 -// CHECK:STDOUT: %.loc36: %Outer = bind_value %o.var -// CHECK:STDOUT: %no_op.loc36: init %empty_tuple.type = call %bound_method.loc36_5.2(%.loc36) +// CHECK:STDOUT: %addr.loc36: %ptr.5df = addr_of %o.var +// CHECK:STDOUT: %no_op.loc36: init %empty_tuple.type = call %bound_method.loc36_5.2(%addr.loc36) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index fca248d598ad..99d757edda72 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -56,6 +56,7 @@ fn G(o: Outer) { // CHECK:STDOUT: %Destroy.impl_witness.768: = impl_witness imports.%Destroy.impl_witness_table, @impl(%Inner) [concrete] // CHECK:STDOUT: %Op.type.9bc: type = fn_type @Op.2, @impl(%Inner) [concrete] // CHECK:STDOUT: %Op.754: %Op.type.9bc = struct_value () [concrete] +// CHECK:STDOUT: %ptr.36a: type = ptr_type %Inner [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Inner, (%Destroy.impl_witness.768) [concrete] // CHECK:STDOUT: %.6f6: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.754, @Op.2(%Inner) [concrete] @@ -70,7 +71,7 @@ fn G(o: Outer) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -150,7 +151,7 @@ fn G(o: Outer) { // CHECK:STDOUT: %i.var_patt: %pattern_type.906 = var_pattern %i.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %i.var: ref %Inner = var %i.var_patt -// CHECK:STDOUT: %.loc26_11: type = splice_block %Inner.ref [concrete = constants.%Inner] { +// CHECK:STDOUT: %.loc26: type = splice_block %Inner.ref [concrete = constants.%Inner] { // CHECK:STDOUT: %o.ref: %Outer = name_ref o, %o // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: } @@ -159,8 +160,8 @@ fn G(o: Outer) { // CHECK:STDOUT: %bound_method.loc26_3.1: = bound_method %i.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%Inner) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc26_3.2: = bound_method %i.var, %specific_fn -// CHECK:STDOUT: %.loc26_3: %Inner = bind_value %i.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_3.2(%.loc26_3) +// CHECK:STDOUT: %addr: %ptr.36a = addr_of %i.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index 0fdd06ef24c3..9dfc0d127d89 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -46,6 +46,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %Destroy.impl_witness.a50: = impl_witness imports.%Destroy.impl_witness_table, @impl(%ptr.e71) [concrete] // CHECK:STDOUT: %Op.type.faa: type = fn_type @Op.2, @impl(%ptr.e71) [concrete] // CHECK:STDOUT: %Op.5a3: %Op.type.faa = struct_value () [concrete] +// CHECK:STDOUT: %ptr.0dd: type = ptr_type %ptr.e71 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.e71, (%Destroy.impl_witness.a50) [concrete] // CHECK:STDOUT: %.9cd: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5a3, @Op.2(%ptr.e71) [concrete] @@ -64,7 +65,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -144,7 +145,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %Self.var_patt: %pattern_type.796 = var_pattern %Self.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %Self.var: ref %ptr.e71 = var %Self.var_patt -// CHECK:STDOUT: %.loc17_21: type = splice_block %ptr.loc17 [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17 [concrete = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %ptr.loc17: type = ptr_type %Self.ref.loc17 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } @@ -166,14 +167,14 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %bound_method.loc18_5.1: = bound_method %p.var, %impl.elem0.loc18 // CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Op.2(constants.%ptr.e71) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_5.2: = bound_method %p.var, %specific_fn.loc18 -// CHECK:STDOUT: %.loc18_5: %ptr.e71 = bind_value %p.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_5.2(%.loc18_5) +// CHECK:STDOUT: %addr.loc18: %ptr.0dd = addr_of %p.var +// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_5.2(%addr.loc18) // CHECK:STDOUT: %impl.elem0.loc17: %.9cd = impl_witness_access constants.%Destroy.impl_witness.a50, element0 [concrete = constants.%Op.5a3] // CHECK:STDOUT: %bound_method.loc17_5.1: = bound_method %Self.var, %impl.elem0.loc17 // CHECK:STDOUT: %specific_fn.loc17: = specific_function %impl.elem0.loc17, @Op.2(constants.%ptr.e71) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc17_5.2: = bound_method %Self.var, %specific_fn.loc17 -// CHECK:STDOUT: %.loc17_5: %ptr.e71 = bind_value %Self.var -// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17_5.2(%.loc17_5) +// CHECK:STDOUT: %addr.loc17: %ptr.0dd = addr_of %Self.var +// CHECK:STDOUT: %no_op.loc17: init %empty_tuple.type = call %bound_method.loc17_5.2(%addr.loc17) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index ae6e3365cfba..a2ae0cebb953 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -133,24 +133,28 @@ class A { // CHECK:STDOUT: %Destroy.impl_witness.102: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%D) [concrete] // CHECK:STDOUT: %Op.type.7e3: type = fn_type @Op.3, @impl.49c(%D) [concrete] // CHECK:STDOUT: %Op.47c: %Op.type.7e3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.321: type = ptr_type %D [concrete] // CHECK:STDOUT: %Destroy.facet.18e: %Destroy.type = facet_value %D, (%Destroy.impl_witness.102) [concrete] // CHECK:STDOUT: %.8ce: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.18e [concrete] // CHECK:STDOUT: %Op.specific_fn.ceb: = specific_function %Op.47c, @Op.3(%D) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.c38: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.2eb: type = fn_type @Op.3, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.f77: %Op.type.2eb = struct_value () [concrete] +// CHECK:STDOUT: %ptr.388: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet.8bd: %Destroy.type = facet_value %C, (%Destroy.impl_witness.c38) [concrete] // CHECK:STDOUT: %.e53: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.8bd [concrete] // CHECK:STDOUT: %Op.specific_fn.c65: = specific_function %Op.f77, @Op.3(%C) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.7c6: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%B) [concrete] // CHECK:STDOUT: %Op.type.266: type = fn_type @Op.3, @impl.49c(%B) [concrete] // CHECK:STDOUT: %Op.4a4: %Op.type.266 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.01b: type = ptr_type %B [concrete] // CHECK:STDOUT: %Destroy.facet.422: %Destroy.type = facet_value %B, (%Destroy.impl_witness.7c6) [concrete] // CHECK:STDOUT: %.24f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.422 [concrete] // CHECK:STDOUT: %Op.specific_fn.70c: = specific_function %Op.4a4, @Op.3(%B) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.b6e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%A) [concrete] // CHECK:STDOUT: %Op.type.b96: type = fn_type @Op.3, @impl.49c(%A) [concrete] // CHECK:STDOUT: %Op.885: %Op.type.b96 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete] // CHECK:STDOUT: %Destroy.facet.4a1: %Destroy.type = facet_value %A, (%Destroy.impl_witness.b6e) [concrete] // CHECK:STDOUT: %.af1: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.4a1 [concrete] // CHECK:STDOUT: %Op.specific_fn.716: = specific_function %Op.885, @Op.3(%A) [concrete] @@ -169,7 +173,7 @@ class A { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -290,8 +294,8 @@ class A { // CHECK:STDOUT: %.loc33_25.3: ref %i32 = class_element_access %a.var, element0 // CHECK:STDOUT: %.loc33_25.4: init %i32 = initialize_from %.loc33_25.2 to %.loc33_25.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc33_25.5: init %A = class_init (%.loc33_25.4), %a.var [concrete = constants.%A.val] -// CHECK:STDOUT: %.loc33_7.1: init %A = converted %.loc33_25.1, %.loc33_25.5 [concrete = constants.%A.val] -// CHECK:STDOUT: assign %a.var, %.loc33_7.1 +// CHECK:STDOUT: %.loc33_7: init %A = converted %.loc33_25.1, %.loc33_25.5 [concrete = constants.%A.val] +// CHECK:STDOUT: assign %a.var, %.loc33_7 // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %a: ref %A = bind_name a, %a.var // CHECK:STDOUT: name_binding_decl { @@ -310,8 +314,8 @@ class A { // CHECK:STDOUT: %.loc34_25.3: ref %i32 = class_element_access %b.var, element0 // CHECK:STDOUT: %.loc34_25.4: init %i32 = initialize_from %.loc34_25.2 to %.loc34_25.3 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc34_25.5: init %B = class_init (%.loc34_25.4), %b.var [concrete = constants.%B.val] -// CHECK:STDOUT: %.loc34_7.1: init %B = converted %.loc34_25.1, %.loc34_25.5 [concrete = constants.%B.val] -// CHECK:STDOUT: assign %b.var, %.loc34_7.1 +// CHECK:STDOUT: %.loc34_7: init %B = converted %.loc34_25.1, %.loc34_25.5 [concrete = constants.%B.val] +// CHECK:STDOUT: assign %b.var, %.loc34_7 // CHECK:STDOUT: %B.ref: type = name_ref B, @A.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %b: ref %B = bind_name b, %b.var // CHECK:STDOUT: name_binding_decl { @@ -330,8 +334,8 @@ class A { // CHECK:STDOUT: %.loc35_25.3: ref %i32 = class_element_access %c.var, element0 // CHECK:STDOUT: %.loc35_25.4: init %i32 = initialize_from %.loc35_25.2 to %.loc35_25.3 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc35_25.5: init %C = class_init (%.loc35_25.4), %c.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc35_7.1: init %C = converted %.loc35_25.1, %.loc35_25.5 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %c.var, %.loc35_7.1 +// CHECK:STDOUT: %.loc35_7: init %C = converted %.loc35_25.1, %.loc35_25.5 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %c.var, %.loc35_7 // CHECK:STDOUT: %C.ref: type = name_ref C, @B.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: name_binding_decl { @@ -350,8 +354,8 @@ class A { // CHECK:STDOUT: %.loc36_25.3: ref %i32 = class_element_access %d.var, element0 // CHECK:STDOUT: %.loc36_25.4: init %i32 = initialize_from %.loc36_25.2 to %.loc36_25.3 [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc36_25.5: init %D = class_init (%.loc36_25.4), %d.var [concrete = constants.%D.val] -// CHECK:STDOUT: %.loc36_7.1: init %D = converted %.loc36_25.1, %.loc36_25.5 [concrete = constants.%D.val] -// CHECK:STDOUT: assign %d.var, %.loc36_7.1 +// CHECK:STDOUT: %.loc36_7: init %D = converted %.loc36_25.1, %.loc36_25.5 [concrete = constants.%D.val] +// CHECK:STDOUT: assign %d.var, %.loc36_7 // CHECK:STDOUT: %D.ref: type = name_ref D, @C.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %d: ref %D = bind_name d, %d.var // CHECK:STDOUT: %AF.ref: %AF.type = name_ref AF, @A.%AF.decl [concrete = constants.%AF] @@ -366,26 +370,26 @@ class A { // CHECK:STDOUT: %bound_method.loc36_7.1: = bound_method %d.var, %impl.elem0.loc36_7 // CHECK:STDOUT: %specific_fn.loc36_7: = specific_function %impl.elem0.loc36_7, @Op.3(constants.%D) [concrete = constants.%Op.specific_fn.ceb] // CHECK:STDOUT: %bound_method.loc36_7.2: = bound_method %d.var, %specific_fn.loc36_7 -// CHECK:STDOUT: %.loc36_7.2: %D = bind_value %d.var -// CHECK:STDOUT: %no_op.loc36: init %empty_tuple.type = call %bound_method.loc36_7.2(%.loc36_7.2) +// CHECK:STDOUT: %addr.loc36: %ptr.321 = addr_of %d.var +// CHECK:STDOUT: %no_op.loc36: init %empty_tuple.type = call %bound_method.loc36_7.2(%addr.loc36) // CHECK:STDOUT: %impl.elem0.loc35_7: %.e53 = impl_witness_access constants.%Destroy.impl_witness.c38, element0 [concrete = constants.%Op.f77] // CHECK:STDOUT: %bound_method.loc35_7.1: = bound_method %c.var, %impl.elem0.loc35_7 // CHECK:STDOUT: %specific_fn.loc35_7: = specific_function %impl.elem0.loc35_7, @Op.3(constants.%C) [concrete = constants.%Op.specific_fn.c65] // CHECK:STDOUT: %bound_method.loc35_7.2: = bound_method %c.var, %specific_fn.loc35_7 -// CHECK:STDOUT: %.loc35_7.2: %C = bind_value %c.var -// CHECK:STDOUT: %no_op.loc35: init %empty_tuple.type = call %bound_method.loc35_7.2(%.loc35_7.2) +// CHECK:STDOUT: %addr.loc35: %ptr.388 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc35: init %empty_tuple.type = call %bound_method.loc35_7.2(%addr.loc35) // CHECK:STDOUT: %impl.elem0.loc34_7: %.24f = impl_witness_access constants.%Destroy.impl_witness.7c6, element0 [concrete = constants.%Op.4a4] // CHECK:STDOUT: %bound_method.loc34_7.1: = bound_method %b.var, %impl.elem0.loc34_7 // CHECK:STDOUT: %specific_fn.loc34_7: = specific_function %impl.elem0.loc34_7, @Op.3(constants.%B) [concrete = constants.%Op.specific_fn.70c] // CHECK:STDOUT: %bound_method.loc34_7.2: = bound_method %b.var, %specific_fn.loc34_7 -// CHECK:STDOUT: %.loc34_7.2: %B = bind_value %b.var -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_7.2(%.loc34_7.2) +// CHECK:STDOUT: %addr.loc34: %ptr.01b = addr_of %b.var +// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_7.2(%addr.loc34) // CHECK:STDOUT: %impl.elem0.loc33_7: %.af1 = impl_witness_access constants.%Destroy.impl_witness.b6e, element0 [concrete = constants.%Op.885] // CHECK:STDOUT: %bound_method.loc33_7.1: = bound_method %a.var, %impl.elem0.loc33_7 // CHECK:STDOUT: %specific_fn.loc33_7: = specific_function %impl.elem0.loc33_7, @Op.3(constants.%A) [concrete = constants.%Op.specific_fn.716] // CHECK:STDOUT: %bound_method.loc33_7.2: = bound_method %a.var, %specific_fn.loc33_7 -// CHECK:STDOUT: %.loc33_7.2: %A = bind_value %a.var -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_7.2(%.loc33_7.2) +// CHECK:STDOUT: %addr.loc33: %ptr.6db = addr_of %a.var +// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_7.2(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index c31bc742a489..c7d876d81235 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -80,6 +80,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -98,7 +99,7 @@ fn Run() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -197,7 +198,7 @@ fn Run() { // CHECK:STDOUT: %F.ref.loc30: %F.type.b25 = name_ref F, file.%F.decl [concrete = constants.%F.c41] // CHECK:STDOUT: %F.call.loc30: init %i32 = call %F.ref.loc30() // CHECK:STDOUT: assign %a.var, %F.call.loc30 -// CHECK:STDOUT: %.loc30_10: type = splice_block %i32.loc30 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc30: type = splice_block %i32.loc30 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -211,7 +212,7 @@ fn Run() { // CHECK:STDOUT: %F.ref.loc31: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] // CHECK:STDOUT: %F.call.loc31: init %i32 = call %F.ref.loc31() // CHECK:STDOUT: assign %b.var, %F.call.loc31 -// CHECK:STDOUT: %.loc31_10: type = splice_block %i32.loc31 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc31: type = splice_block %i32.loc31 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -220,14 +221,14 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc31_3.1: = bound_method %b.var, %impl.elem0.loc31 // CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc31_3.2: = bound_method %b.var, %specific_fn.loc31 -// CHECK:STDOUT: %.loc31_3: %i32 = bind_value %b.var -// CHECK:STDOUT: %no_op.loc31: init %empty_tuple.type = call %bound_method.loc31_3.2(%.loc31_3) +// CHECK:STDOUT: %addr.loc31: %ptr.235 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc31: init %empty_tuple.type = call %bound_method.loc31_3.2(%addr.loc31) // CHECK:STDOUT: %impl.elem0.loc30: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc30_3.1: = bound_method %a.var, %impl.elem0.loc30 // CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc30_3.2: = bound_method %a.var, %specific_fn.loc30 -// CHECK:STDOUT: %.loc30_3: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_3.2(%.loc30_3) +// CHECK:STDOUT: %addr.loc30: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_3.2(%addr.loc30) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index 6e100009dbe7..59981dee09a3 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -475,6 +475,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %Destroy.impl_witness.ff9: = impl_witness imports.%Destroy.impl_witness_table, @impl(%Derived) [concrete] // CHECK:STDOUT: %Op.type.102: type = fn_type @Op.2, @impl(%Derived) [concrete] // CHECK:STDOUT: %Op.539: %Op.type.102 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Derived, (%Destroy.impl_witness.ff9) [concrete] // CHECK:STDOUT: %.3cb: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.539, @Op.2(%Derived) [concrete] @@ -496,7 +497,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst18 [no loc], unloaded // CHECK:STDOUT: %Modifiers.import_ref.2cc = import_ref Modifiers//default, loc5_29, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -575,16 +576,16 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc12_30.4: init %Base = class_init (%.loc12_30.3), %.loc12_31.2 [concrete = constants.%Base.val] // CHECK:STDOUT: %.loc12_31.3: init %Base = converted %.loc12_30.1, %.loc12_30.4 [concrete = constants.%Base.val] // CHECK:STDOUT: %.loc12_31.4: init %Derived = class_init (%.loc12_31.3), %d.var [concrete = constants.%Derived.val] -// CHECK:STDOUT: %.loc12_3.1: init %Derived = converted %.loc12_31.1, %.loc12_31.4 [concrete = constants.%Derived.val] -// CHECK:STDOUT: assign %d.var, %.loc12_3.1 +// CHECK:STDOUT: %.loc12_3: init %Derived = converted %.loc12_31.1, %.loc12_31.4 [concrete = constants.%Derived.val] +// CHECK:STDOUT: assign %d.var, %.loc12_3 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: ref %Derived = bind_name d, %d.var // CHECK:STDOUT: %impl.elem0: %.3cb = impl_witness_access constants.%Destroy.impl_witness.ff9, element0 [concrete = constants.%Op.539] // CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %d.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%Derived) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %d.var, %specific_fn -// CHECK:STDOUT: %.loc12_3.2: %Derived = bind_value %d.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc12_3.2(%.loc12_3.2) +// CHECK:STDOUT: %addr: %ptr.404 = addr_of %d.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc12_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -696,7 +697,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] // CHECK:STDOUT: %Base.vtable_ptr: ref %ptr.454 = vtable_ptr @Base.vtable [concrete] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] +// CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%Base.vtable_ptr) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -707,6 +708,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %Destroy.impl_witness.cec: = impl_witness imports.%Destroy.impl_witness_table, @impl(%Base) [concrete] // CHECK:STDOUT: %Op.type.47e: type = fn_type @Op.2, @impl(%Base) [concrete] // CHECK:STDOUT: %Op.033: %Op.type.47e = struct_value () [concrete] +// CHECK:STDOUT: %ptr.f03: type = ptr_type %Base [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Base, (%Destroy.impl_witness.cec) [concrete] // CHECK:STDOUT: %.3f1: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.033, @Op.2(%Base) [concrete] @@ -723,12 +725,12 @@ base class T1(T:! type) { // CHECK:STDOUT: import Modifiers//default // CHECK:STDOUT: } // CHECK:STDOUT: %Modifiers.Base: type = import_ref Modifiers//default, Base, loaded [concrete = constants.%Base] -// CHECK:STDOUT: %Modifiers.import_ref.05e: = import_ref Modifiers//default, loc6_1, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Modifiers.import_ref.05e: = import_ref Modifiers//default, loc6_1, loaded [concrete = constants.%complete_type.513] // CHECK:STDOUT: %Modifiers.import_ref.4e7: ref = import_ref Modifiers//default, loc6_1, loaded [concrete = constants.%Base.vtable_ptr] // CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst18 [no loc], unloaded // CHECK:STDOUT: %Modifiers.import_ref.2cc = import_ref Modifiers//default, loc5_29, unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -767,8 +769,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc7_28.2: ref %ptr.454 = class_element_access %v.var, element0 // CHECK:STDOUT: %.loc7_28.3: init %ptr.454 = initialize_from imports.%Modifiers.import_ref.4e7 to %.loc7_28.2 [concrete = constants.%Base.vtable_ptr] // CHECK:STDOUT: %.loc7_28.4: init %Base = class_init (%.loc7_28.3), %v.var [concrete = constants.%Base.val] -// CHECK:STDOUT: %.loc7_3.1: init %Base = converted %.loc7_28.1, %.loc7_28.4 [concrete = constants.%Base.val] -// CHECK:STDOUT: assign %v.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %Base = converted %.loc7_28.1, %.loc7_28.4 [concrete = constants.%Base.val] +// CHECK:STDOUT: assign %v.var, %.loc7_3 // CHECK:STDOUT: %.loc7_19: type = splice_block %Base.ref [concrete = constants.%Base] { // CHECK:STDOUT: %Modifiers.ref: = name_ref Modifiers, imports.%Modifiers [concrete = imports.%Modifiers] // CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%Modifiers.Base [concrete = constants.%Base] @@ -778,8 +780,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%Base) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_fn -// CHECK:STDOUT: %.loc7_3.2: %Base = bind_value %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.2) +// CHECK:STDOUT: %addr: %ptr.f03 = addr_of %v.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -928,18 +930,21 @@ base class T1(T:! type) { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet.494: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.494 [concrete] // CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.453: = impl_witness imports.%Destroy.impl_witness_table, @impl(%B2) [concrete] // CHECK:STDOUT: %Op.type.49c: type = fn_type @Op.2, @impl(%B2) [concrete] // CHECK:STDOUT: %Op.bb0: %Op.type.49c = struct_value () [concrete] +// CHECK:STDOUT: %ptr.afe: type = ptr_type %B2 [concrete] // CHECK:STDOUT: %Destroy.facet.0c6: %Destroy.type = facet_value %B2, (%Destroy.impl_witness.453) [concrete] // CHECK:STDOUT: %.65f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.0c6 [concrete] // CHECK:STDOUT: %Op.specific_fn.a6f: = specific_function %Op.bb0, @Op.2(%B2) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.67b: = impl_witness imports.%Destroy.impl_witness_table, @impl(%B1) [concrete] // CHECK:STDOUT: %Op.type.5ba: type = fn_type @Op.2, @impl(%B1) [concrete] // CHECK:STDOUT: %Op.a5c: %Op.type.5ba = struct_value () [concrete] +// CHECK:STDOUT: %ptr.890: type = ptr_type %B1 [concrete] // CHECK:STDOUT: %Destroy.facet.7f9: %Destroy.type = facet_value %B1, (%Destroy.impl_witness.67b) [concrete] // CHECK:STDOUT: %.3cf: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7f9 [concrete] // CHECK:STDOUT: %Op.specific_fn.075: = specific_function %Op.a5c, @Op.2(%B1) [concrete] @@ -952,7 +957,7 @@ base class T1(T:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1070,8 +1075,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc19_17.2: ref %ptr.454 = class_element_access %b1.var, element0 // CHECK:STDOUT: %.loc19_17.3: init %ptr.454 = initialize_from @B1.%vtable_ptr to %.loc19_17.2 [concrete = constants.%B1.vtable_ptr] // CHECK:STDOUT: %.loc19_17.4: init %B1 = class_init (%.loc19_17.3), %b1.var [concrete = constants.%B1.val.267] -// CHECK:STDOUT: %.loc19_3.1: init %B1 = converted %.loc19_17.1, %.loc19_17.4 [concrete = constants.%B1.val.267] -// CHECK:STDOUT: assign %b1.var, %.loc19_3.1 +// CHECK:STDOUT: %.loc19_3: init %B1 = converted %.loc19_17.1, %.loc19_17.4 [concrete = constants.%B1.val.267] +// CHECK:STDOUT: assign %b1.var, %.loc19_3 // CHECK:STDOUT: %B1.ref: type = name_ref B1, file.%B1.decl [concrete = constants.%B1] // CHECK:STDOUT: %b1: ref %B1 = bind_name b1, %b1.var // CHECK:STDOUT: name_binding_decl { @@ -1087,8 +1092,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc20_26.4: init %B1 = class_init (%.loc20_26.3), %.loc20_27.2 [concrete = constants.%B1.val.d2f] // CHECK:STDOUT: %.loc20_27.3: init %B1 = converted %.loc20_26.1, %.loc20_26.4 [concrete = constants.%B1.val.d2f] // CHECK:STDOUT: %.loc20_27.4: init %B2 = class_init (%.loc20_27.3), %b2.var [concrete = constants.%B2.val.e9e] -// CHECK:STDOUT: %.loc20_3.1: init %B2 = converted %.loc20_27.1, %.loc20_27.4 [concrete = constants.%B2.val.e9e] -// CHECK:STDOUT: assign %b2.var, %.loc20_3.1 +// CHECK:STDOUT: %.loc20_3: init %B2 = converted %.loc20_27.1, %.loc20_27.4 [concrete = constants.%B2.val.e9e] +// CHECK:STDOUT: assign %b2.var, %.loc20_3 // CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [concrete = constants.%B2] // CHECK:STDOUT: %b2: ref %B2 = bind_name b2, %b2.var // CHECK:STDOUT: name_binding_decl { @@ -1108,28 +1113,28 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc21_34.4: init %B2 = class_init (%.loc21_34.3), %.loc21_35.2 [concrete = constants.%B2.val.426] // CHECK:STDOUT: %.loc21_35.3: init %B2 = converted %.loc21_34.1, %.loc21_34.4 [concrete = constants.%B2.val.426] // CHECK:STDOUT: %.loc21_35.4: init %C = class_init (%.loc21_35.3), %c.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc21_3.1: init %C = converted %.loc21_35.1, %.loc21_35.4 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %c.var, %.loc21_3.1 +// CHECK:STDOUT: %.loc21_3: init %C = converted %.loc21_35.1, %.loc21_35.4 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %c.var, %.loc21_3 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %impl.elem0.loc21: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] // CHECK:STDOUT: %bound_method.loc21_3.1: = bound_method %c.var, %impl.elem0.loc21 // CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] // CHECK:STDOUT: %bound_method.loc21_3.2: = bound_method %c.var, %specific_fn.loc21 -// CHECK:STDOUT: %.loc21_3.2: %C = bind_value %c.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%.loc21_3.2) +// CHECK:STDOUT: %addr.loc21: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%addr.loc21) // CHECK:STDOUT: %impl.elem0.loc20: %.65f = impl_witness_access constants.%Destroy.impl_witness.453, element0 [concrete = constants.%Op.bb0] // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %b2.var, %impl.elem0.loc20 // CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Op.2(constants.%B2) [concrete = constants.%Op.specific_fn.a6f] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %b2.var, %specific_fn.loc20 -// CHECK:STDOUT: %.loc20_3.2: %B2 = bind_value %b2.var -// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3.2) +// CHECK:STDOUT: %addr.loc20: %ptr.afe = addr_of %b2.var +// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr.loc20) // CHECK:STDOUT: %impl.elem0.loc19: %.3cf = impl_witness_access constants.%Destroy.impl_witness.67b, element0 [concrete = constants.%Op.a5c] // CHECK:STDOUT: %bound_method.loc19_3.1: = bound_method %b1.var, %impl.elem0.loc19 // CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Op.2(constants.%B1) [concrete = constants.%Op.specific_fn.075] // CHECK:STDOUT: %bound_method.loc19_3.2: = bound_method %b1.var, %specific_fn.loc19 -// CHECK:STDOUT: %.loc19_3.2: %B1 = bind_value %b1.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3.2(%.loc19_3.2) +// CHECK:STDOUT: %addr.loc19: %ptr.890 = addr_of %b1.var +// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3.2(%addr.loc19) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1242,12 +1247,14 @@ base class T1(T:! type) { // CHECK:STDOUT: %Destroy.impl_witness.dfd: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Base) [concrete] // CHECK:STDOUT: %Op.type.193: type = fn_type @Op.3, @impl.49c(%Base) [concrete] // CHECK:STDOUT: %Op.345: %Op.type.193 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [concrete] // CHECK:STDOUT: %Destroy.facet.055: %Destroy.type = facet_value %Base, (%Destroy.impl_witness.dfd) [concrete] // CHECK:STDOUT: %.097: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.055 [concrete] // CHECK:STDOUT: %Op.specific_fn.083: = specific_function %Op.345, @Op.3(%Base) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet.5f7: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5f7 [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -1266,7 +1273,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1328,8 +1335,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %specific_fn.loc12_3.1: = specific_function %impl.elem0.loc12_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %int_3.loc12, %specific_fn.loc12_3.1 [concrete = constants.%bound_method.047] // CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %bound_method.loc12_3.2(%int_3.loc12) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc12_3.1: init %i32 = converted %int_3.loc12, %int.convert_checked.loc12 [concrete = constants.%int_3.822] -// CHECK:STDOUT: assign %i.var, %.loc12_3.1 +// CHECK:STDOUT: %.loc12_3: init %i32 = converted %int_3.loc12, %int.convert_checked.loc12 [concrete = constants.%int_3.822] +// CHECK:STDOUT: assign %i.var, %.loc12_3 // CHECK:STDOUT: %.loc12_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -1352,8 +1359,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc14_35.6: ref %i32 = class_element_access %b1.var, element1 // CHECK:STDOUT: %.loc14_35.7: init %i32 = initialize_from %.loc14_25 to %.loc14_35.6 // CHECK:STDOUT: %.loc14_35.8: init %Base = class_init (%.loc14_35.3, %.loc14_35.5, %.loc14_35.7), %b1.var -// CHECK:STDOUT: %.loc14_3.1: init %Base = converted %.loc14_35.1, %.loc14_35.8 -// CHECK:STDOUT: assign %b1.var, %.loc14_3.1 +// CHECK:STDOUT: %.loc14_3: init %Base = converted %.loc14_35.1, %.loc14_35.8 +// CHECK:STDOUT: assign %b1.var, %.loc14_3 // CHECK:STDOUT: %Base.ref.loc14: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %b1: ref %Base = bind_name b1, %b1.var // CHECK:STDOUT: name_binding_decl { @@ -1383,8 +1390,8 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc15_35.8: ref %i32 = class_element_access %b2.var, element1 // CHECK:STDOUT: %.loc15_35.9: init %i32 = initialize_from %.loc15_35.7 to %.loc15_35.8 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc15_35.10: init %Base = class_init (%.loc15_35.3, %.loc15_35.6, %.loc15_35.9), %b2.var [concrete = constants.%Base.val] -// CHECK:STDOUT: %.loc15_3.1: init %Base = converted %.loc15_35.1, %.loc15_35.10 [concrete = constants.%Base.val] -// CHECK:STDOUT: assign %b2.var, %.loc15_3.1 +// CHECK:STDOUT: %.loc15_3: init %Base = converted %.loc15_35.1, %.loc15_35.10 [concrete = constants.%Base.val] +// CHECK:STDOUT: assign %b2.var, %.loc15_3 // CHECK:STDOUT: %Base.ref.loc15: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %b2: ref %Base = bind_name b2, %b2.var // CHECK:STDOUT: %b1.ref: ref %Base = name_ref b1, %b1 @@ -1402,20 +1409,20 @@ base class T1(T:! type) { // CHECK:STDOUT: %bound_method.loc15_3.1: = bound_method %b2.var, %impl.elem0.loc15_3 // CHECK:STDOUT: %specific_fn.loc15_3: = specific_function %impl.elem0.loc15_3, @Op.3(constants.%Base) [concrete = constants.%Op.specific_fn.083] // CHECK:STDOUT: %bound_method.loc15_3.2: = bound_method %b2.var, %specific_fn.loc15_3 -// CHECK:STDOUT: %.loc15_3.2: %Base = bind_value %b2.var -// CHECK:STDOUT: %no_op.loc15: init %empty_tuple.type = call %bound_method.loc15_3.2(%.loc15_3.2) +// CHECK:STDOUT: %addr.loc15: %ptr.11f = addr_of %b2.var +// CHECK:STDOUT: %no_op.loc15: init %empty_tuple.type = call %bound_method.loc15_3.2(%addr.loc15) // CHECK:STDOUT: %impl.elem0.loc14: %.097 = impl_witness_access constants.%Destroy.impl_witness.dfd, element0 [concrete = constants.%Op.345] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %b1.var, %impl.elem0.loc14 // CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Op.3(constants.%Base) [concrete = constants.%Op.specific_fn.083] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %b1.var, %specific_fn.loc14 -// CHECK:STDOUT: %.loc14_3.2: %Base = bind_value %b1.var -// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_3.2(%.loc14_3.2) +// CHECK:STDOUT: %addr.loc14: %ptr.11f = addr_of %b1.var +// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr.loc14) // CHECK:STDOUT: %impl.elem0.loc12_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc12_3.3: = bound_method %i.var, %impl.elem0.loc12_3.2 // CHECK:STDOUT: %specific_fn.loc12_3.2: = specific_function %impl.elem0.loc12_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc12_3.4: = bound_method %i.var, %specific_fn.loc12_3.2 -// CHECK:STDOUT: %.loc12_3.2: %i32 = bind_value %i.var -// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12_3.4(%.loc12_3.2) +// CHECK:STDOUT: %addr.loc12: %ptr.235 = addr_of %i.var +// CHECK:STDOUT: %no_op.loc12: init %empty_tuple.type = call %bound_method.loc12_3.4(%addr.loc12) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index 89f42c3a39e7..c60ad28e0fe2 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -557,6 +557,7 @@ fn G() -> i32 { // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [concrete] +// CHECK:STDOUT: %ptr.301: type = ptr_type %array_type.002 [concrete] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %array_type.002 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] @@ -572,10 +573,10 @@ fn G() -> i32 { // CHECK:STDOUT: %Destroy.impl_witness.f2c: = impl_witness imports.%Destroy.impl_witness_table, @impl(%array_type.002) [concrete] // CHECK:STDOUT: %Op.type.85d: type = fn_type @Op.2, @impl(%array_type.002) [concrete] // CHECK:STDOUT: %Op.1f9: %Op.type.85d = struct_value () [concrete] -// CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %array_type.002, (%Destroy.impl_witness.f2c) [concrete] // CHECK:STDOUT: %.4c4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1f9, @Op.2(%array_type.002) [concrete] +// CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -587,7 +588,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -674,8 +675,8 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc9_34.2: init %C = class_init (), %.loc9_35.6 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc9_35.7: init %C = converted %.loc9_34.1, %.loc9_34.2 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc9_35.8: init %array_type.002 = array_init (%.loc9_35.3, %.loc9_35.5, %.loc9_35.7) to %a.var [concrete = constants.%array] -// CHECK:STDOUT: %.loc9_3.1: init %array_type.002 = converted %.loc9_35.1, %.loc9_35.8 [concrete = constants.%array] -// CHECK:STDOUT: assign %a.var, %.loc9_3.1 +// CHECK:STDOUT: %.loc9_3: init %array_type.002 = converted %.loc9_35.1, %.loc9_35.8 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc9_3 // CHECK:STDOUT: %.loc9_20: type = splice_block %array_type [concrete = constants.%array_type.002] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] @@ -691,8 +692,8 @@ fn G() -> i32 { // CHECK:STDOUT: %bound_method.loc9_3.1: = bound_method %a.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%array_type.002) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_3.2: = bound_method %a.var, %specific_fn -// CHECK:STDOUT: %.loc9_3.2: %array_type.002 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_3.2(%.loc9_3.2) +// CHECK:STDOUT: %addr: %ptr.301 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon index 8cccea6f020f..a58a398b83da 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -113,7 +113,7 @@ fn G() { // CHECK:STDOUT: %HoldsType.generic: %HoldsType.type = struct_value () [concrete] // CHECK:STDOUT: %HoldsType.cc9: type = class_type @HoldsType, @HoldsType(%T.6eb) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.ec6: type = pattern_type %HoldsType.cc9 [symbolic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %tuple.elem0: type = tuple_access %T.6eb, element0 [symbolic] @@ -140,12 +140,14 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet.494: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.494 [concrete] // CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.ccb: = impl_witness imports.%Destroy.impl_witness_table, @impl(%HoldsType.c09) [concrete] // CHECK:STDOUT: %Op.type.431: type = fn_type @Op.2, @impl(%HoldsType.c09) [concrete] // CHECK:STDOUT: %Op.f20: %Op.type.431 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.79a: type = ptr_type %HoldsType.c09 [concrete] // CHECK:STDOUT: %Destroy.facet.835: %Destroy.type = facet_value %HoldsType.c09, (%Destroy.impl_witness.ccb) [concrete] // CHECK:STDOUT: %.9ea: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.835 [concrete] // CHECK:STDOUT: %Op.specific_fn.58d: = specific_function %Op.f20, @Op.2(%HoldsType.c09) [concrete] @@ -158,7 +160,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -218,7 +220,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -228,7 +230,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -279,14 +281,14 @@ fn G() { // CHECK:STDOUT: %bound_method.loc13_30.1: = bound_method %.loc13_30.2, %impl.elem0.loc13_30 // CHECK:STDOUT: %specific_fn.loc13_30: = specific_function %impl.elem0.loc13_30, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] // CHECK:STDOUT: %bound_method.loc13_30.2: = bound_method %.loc13_30.2, %specific_fn.loc13_30 -// CHECK:STDOUT: %.loc13_30.7: %C = bind_value %.loc13_30.2 -// CHECK:STDOUT: %no_op.loc13_30: init %empty_tuple.type = call %bound_method.loc13_30.2(%.loc13_30.7) +// CHECK:STDOUT: %addr.loc13_30: %ptr.019 = addr_of %.loc13_30.2 +// CHECK:STDOUT: %no_op.loc13_30: init %empty_tuple.type = call %bound_method.loc13_30.2(%addr.loc13_30) // CHECK:STDOUT: %impl.elem0.loc13_6: %.9ea = impl_witness_access constants.%Destroy.impl_witness.ccb, element0 [concrete = constants.%Op.f20] // CHECK:STDOUT: %bound_method.loc13_6.1: = bound_method %.loc13_6.2, %impl.elem0.loc13_6 // CHECK:STDOUT: %specific_fn.loc13_6: = specific_function %impl.elem0.loc13_6, @Op.2(constants.%HoldsType.c09) [concrete = constants.%Op.specific_fn.58d] // CHECK:STDOUT: %bound_method.loc13_6.2: = bound_method %.loc13_6.2, %specific_fn.loc13_6 -// CHECK:STDOUT: %.loc13_6.5: %HoldsType.c09 = bind_value %.loc13_6.2 -// CHECK:STDOUT: %no_op.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6.2(%.loc13_6.5) +// CHECK:STDOUT: %addr.loc13_6: %ptr.79a = addr_of %.loc13_6.2 +// CHECK:STDOUT: %no_op.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6.2(%addr.loc13_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -318,8 +320,8 @@ fn G() { // CHECK:STDOUT: %pattern_type.loc8_37 => constants.%pattern_type.c48 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc8_21 => constants.%complete_type -// CHECK:STDOUT: %require_complete.loc8_38 => constants.%complete_type +// CHECK:STDOUT: %require_complete.loc8_21 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc8_38 => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- struct_access.carbon @@ -333,7 +335,7 @@ fn G() { // CHECK:STDOUT: %HoldsType.generic: %HoldsType.type = struct_value () [concrete] // CHECK:STDOUT: %HoldsType.843: type = class_type @HoldsType, @HoldsType(%T.08d) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.aa4: type = pattern_type %HoldsType.843 [symbolic] // CHECK:STDOUT: %.20a: type = struct_access %T.08d, element0 [symbolic] // CHECK:STDOUT: %pattern_type.9f0: type = pattern_type %.20a [symbolic] @@ -359,12 +361,14 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet.494: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.494 [concrete] // CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.55e: = impl_witness imports.%Destroy.impl_witness_table, @impl(%HoldsType.705) [concrete] // CHECK:STDOUT: %Op.type.8ea: type = fn_type @Op.2, @impl(%HoldsType.705) [concrete] // CHECK:STDOUT: %Op.180: %Op.type.8ea = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5d1: type = ptr_type %HoldsType.705 [concrete] // CHECK:STDOUT: %Destroy.facet.7e8: %Destroy.type = facet_value %HoldsType.705, (%Destroy.impl_witness.55e) [concrete] // CHECK:STDOUT: %.3b5: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7e8 [concrete] // CHECK:STDOUT: %Op.specific_fn.fde: = specific_function %Op.180, @Op.2(%HoldsType.705) [concrete] @@ -377,7 +381,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -430,7 +434,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -440,7 +444,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -491,14 +495,14 @@ fn G() { // CHECK:STDOUT: %bound_method.loc13_33.1: = bound_method %.loc13_33.2, %impl.elem0.loc13_33 // CHECK:STDOUT: %specific_fn.loc13_33: = specific_function %impl.elem0.loc13_33, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] // CHECK:STDOUT: %bound_method.loc13_33.2: = bound_method %.loc13_33.2, %specific_fn.loc13_33 -// CHECK:STDOUT: %.loc13_33.7: %C = bind_value %.loc13_33.2 -// CHECK:STDOUT: %no_op.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33.2(%.loc13_33.7) +// CHECK:STDOUT: %addr.loc13_33: %ptr.019 = addr_of %.loc13_33.2 +// CHECK:STDOUT: %no_op.loc13_33: init %empty_tuple.type = call %bound_method.loc13_33.2(%addr.loc13_33) // CHECK:STDOUT: %impl.elem0.loc13_6: %.3b5 = impl_witness_access constants.%Destroy.impl_witness.55e, element0 [concrete = constants.%Op.180] // CHECK:STDOUT: %bound_method.loc13_6.1: = bound_method %.loc13_6.2, %impl.elem0.loc13_6 // CHECK:STDOUT: %specific_fn.loc13_6: = specific_function %impl.elem0.loc13_6, @Op.2(constants.%HoldsType.705) [concrete = constants.%Op.specific_fn.fde] // CHECK:STDOUT: %bound_method.loc13_6.2: = bound_method %.loc13_6.2, %specific_fn.loc13_6 -// CHECK:STDOUT: %.loc13_6.5: %HoldsType.705 = bind_value %.loc13_6.2 -// CHECK:STDOUT: %no_op.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6.2(%.loc13_6.5) +// CHECK:STDOUT: %addr.loc13_6: %ptr.5d1 = addr_of %.loc13_6.2 +// CHECK:STDOUT: %no_op.loc13_6: init %empty_tuple.type = call %bound_method.loc13_6.2(%addr.loc13_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -530,8 +534,8 @@ fn G() { // CHECK:STDOUT: %pattern_type.loc8_39 => constants.%pattern_type.c48 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc8_23 => constants.%complete_type -// CHECK:STDOUT: %require_complete.loc8_40 => constants.%complete_type +// CHECK:STDOUT: %require_complete.loc8_23 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc8_40 => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_class_access.carbon @@ -549,7 +553,7 @@ fn G() { // CHECK:STDOUT: %HoldsType.f95cf2.1: type = class_type @HoldsType, @HoldsType(%T.0de) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %pattern_type.93719d.1: type = pattern_type %HoldsType.f95cf2.1 [symbolic] +// CHECK:STDOUT: %pattern_type.937: type = pattern_type %HoldsType.f95cf2.1 [symbolic] // CHECK:STDOUT: %.2fe: ref type = class_element_access %T.0de, element0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -566,6 +570,7 @@ fn G() { // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @impl(%T.8b3) [symbolic] // CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.deb: type = ptr_type %HoldsType.f95cf2.2 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %HoldsType.f95cf2.2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.088: %Destroy.type = facet_value %HoldsType.f95cf2.2, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.da6: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.088 [symbolic] @@ -574,6 +579,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.fef: = impl_witness imports.%Destroy.impl_witness_table, @impl(%Class) [concrete] // CHECK:STDOUT: %Op.type.7de: type = fn_type @Op.2, @impl(%Class) [concrete] // CHECK:STDOUT: %Op.d64: %Op.type.7de = struct_value () [concrete] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] // CHECK:STDOUT: %Destroy.facet.817: %Destroy.type = facet_value %Class, (%Destroy.impl_witness.fef) [concrete] // CHECK:STDOUT: %.b9f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.817 [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d64, @Op.2(%Class) [concrete] @@ -586,7 +592,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -609,8 +615,8 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.761 = symbolic_binding_pattern T, 0 [concrete] -// CHECK:STDOUT: %x.patt: @F.%pattern_type (%pattern_type.93719d.1) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @F.%pattern_type (%pattern_type.93719d.1) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %x.patt: @F.%pattern_type (%pattern_type.937) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @F.%pattern_type (%pattern_type.937) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %a.patt: = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: = value_param_pattern %a.patt, call_param1 [concrete] // CHECK:STDOUT: } { @@ -674,7 +680,7 @@ fn G() { // CHECK:STDOUT: generic fn @F(%T.loc21_6.1: %Class) { // CHECK:STDOUT: %T.loc21_6.2: %Class = bind_symbolic_name T, 0 [symbolic = %T.loc21_6.2 (constants.%T.0de)] // CHECK:STDOUT: %HoldsType.loc21_31.2: type = class_type @HoldsType, @HoldsType(%T.loc21_6.2) [symbolic = %HoldsType.loc21_31.2 (constants.%HoldsType.f95cf2.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %HoldsType.loc21_31.2 [symbolic = %pattern_type (constants.%pattern_type.93719d.1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %HoldsType.loc21_31.2 [symbolic = %pattern_type (constants.%pattern_type.937)] // CHECK:STDOUT: %.loc21_38.3: ref type = class_element_access %T.loc21_6.2, element0 [symbolic = %.loc21_38.3 (constants.%.2fe)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -717,14 +723,14 @@ fn G() { // CHECK:STDOUT: %bound_method.loc27_6.1: = bound_method %.loc27_6.2, %impl.elem0.loc27 // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.loc27, @Op.1(constants.%Destroy.facet.088) [symbolic = constants.%specific_impl_fn] // CHECK:STDOUT: %bound_method.loc27_6.2: = bound_method %.loc27_6.2, %specific_impl_fn -// CHECK:STDOUT: %.loc27_6.5: %HoldsType.f95cf2.2 = bind_value %.loc27_6.2 -// CHECK:STDOUT: %.loc27_6.6: init %empty_tuple.type = call %bound_method.loc27_6.2(%.loc27_6.5) +// CHECK:STDOUT: %addr.loc27: %ptr.deb = addr_of %.loc27_6.2 +// CHECK:STDOUT: %.loc27_6.5: init %empty_tuple.type = call %bound_method.loc27_6.2(%addr.loc27) // CHECK:STDOUT: %impl.elem0.loc26: %.b9f = impl_witness_access constants.%Destroy.impl_witness.fef, element0 [concrete = constants.%Op.d64] // CHECK:STDOUT: %bound_method.loc26_26.1: = bound_method %.loc26_26.2, %impl.elem0.loc26 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc26, @Op.2(constants.%Class) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc26_26.2: = bound_method %.loc26_26.2, %specific_fn -// CHECK:STDOUT: %.loc26_26.7: %Class = bind_value %.loc26_26.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_26.2(%.loc26_26.7) +// CHECK:STDOUT: %addr.loc26: %ptr.e71 = addr_of %.loc26_26.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_26.2(%addr.loc26) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -737,7 +743,7 @@ fn G() { // CHECK:STDOUT: specific @F(constants.%T.0de) { // CHECK:STDOUT: %T.loc21_6.2 => constants.%T.0de // CHECK:STDOUT: %HoldsType.loc21_31.2 => constants.%HoldsType.f95cf2.1 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.93719d.1 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.937 // CHECK:STDOUT: %.loc21_38.3 => constants.%.2fe // CHECK:STDOUT: } // CHECK:STDOUT: @@ -760,6 +766,7 @@ fn G() { // CHECK:STDOUT: %HoldsType: type = class_type @HoldsType, @HoldsType(%T.eb6) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %ptr.ea3: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %pattern_type.142: type = pattern_type %HoldsType [symbolic] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -816,7 +823,7 @@ fn G() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -940,8 +947,8 @@ fn G() { // CHECK:STDOUT: %bound_method.loc24_25.1: = bound_method %.loc24_25.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.3(constants.%array_type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc24_25.2: = bound_method %.loc24_25.2, %specific_fn -// CHECK:STDOUT: %.loc24_25.6: %array_type = bind_value %.loc24_25.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc24_25.2(%.loc24_25.6) +// CHECK:STDOUT: %addr: %ptr.ea3 = addr_of %.loc24_25.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc24_25.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/eval/aggregates.carbon b/toolchain/check/testdata/eval/aggregates.carbon index 1d7e847cdee8..705edf276bcb 100644 --- a/toolchain/check/testdata/eval/aggregates.carbon +++ b/toolchain/check/testdata/eval/aggregates.carbon @@ -458,6 +458,7 @@ fn G(N:! i32) { // CHECK:STDOUT: %const: type = const_type %T [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.4f2: type = tuple_type (%ptr.79f, %const) [symbolic] +// CHECK:STDOUT: %ptr.6cd: type = ptr_type %tuple.type.4f2 [symbolic] // CHECK:STDOUT: %require_complete.155: = require_complete_type %tuple.type.4f2 [symbolic] // CHECK:STDOUT: %pattern_type.973: type = pattern_type %tuple.type.4f2 [symbolic] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] @@ -465,28 +466,30 @@ fn G(N:! i32) { // CHECK:STDOUT: %pattern_type.95a: type = pattern_type %struct_type.a [symbolic] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete] // CHECK:STDOUT: %array_type.ec2: type = array_type %int_5, %T [symbolic] +// CHECK:STDOUT: %ptr.1a0: type = ptr_type %array_type.ec2 [symbolic] // CHECK:STDOUT: %require_complete.fe1: = require_complete_type %array_type.ec2 [symbolic] // CHECK:STDOUT: %pattern_type.035: type = pattern_type %array_type.ec2 [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.b09: = require_complete_type %ptr.1a0 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.b45: = lookup_impl_witness %array_type.ec2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.0d3: %Destroy.type = facet_value %array_type.ec2, (%Destroy.lookup_impl_witness.b45) [symbolic] // CHECK:STDOUT: %.03f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.0d3 [symbolic] // CHECK:STDOUT: %impl.elem0.1ce: %.03f = impl_witness_access %Destroy.lookup_impl_witness.b45, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.236: = specific_impl_function %impl.elem0.1ce, @Op.1(%Destroy.facet.0d3) [symbolic] +// CHECK:STDOUT: %ptr.48a: type = ptr_type %struct_type.a [symbolic] +// CHECK:STDOUT: %require_complete.86d: = require_complete_type %ptr.48a [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.b34: = lookup_impl_witness %struct_type.a, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.2c9: %Destroy.type = facet_value %struct_type.a, (%Destroy.lookup_impl_witness.b34) [symbolic] // CHECK:STDOUT: %.b85: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2c9 [symbolic] // CHECK:STDOUT: %impl.elem0.dc9: %.b85 = impl_witness_access %Destroy.lookup_impl_witness.b34, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.2a6: = specific_impl_function %impl.elem0.dc9, @Op.1(%Destroy.facet.2c9) [symbolic] +// CHECK:STDOUT: %require_complete.66e: = require_complete_type %ptr.6cd [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.a8a: = lookup_impl_witness %tuple.type.4f2, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.7be: %Destroy.type = facet_value %tuple.type.4f2, (%Destroy.lookup_impl_witness.a8a) [symbolic] // CHECK:STDOUT: %.f5c: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7be [symbolic] // CHECK:STDOUT: %impl.elem0.87c: %.f5c = impl_witness_access %Destroy.lookup_impl_witness.a8a, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.4b8: = specific_impl_function %impl.elem0.87c, @Op.1(%Destroy.facet.7be) [symbolic] -// CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] -// CHECK:STDOUT: %require_complete.7cc: = require_complete_type %const [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %N.51e: %i32 = bind_symbolic_name N, 0 [symbolic] @@ -505,8 +508,10 @@ fn G(N:! i32) { // CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Convert.specific_fn [symbolic] // CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] // CHECK:STDOUT: %array_type.c7c: type = array_type %int.convert_checked, %i32 [symbolic] +// CHECK:STDOUT: %ptr.0ad: type = ptr_type %array_type.c7c [symbolic] // CHECK:STDOUT: %require_complete.7cb: = require_complete_type %array_type.c7c [symbolic] // CHECK:STDOUT: %pattern_type.ccc: type = pattern_type %array_type.c7c [symbolic] +// CHECK:STDOUT: %require_complete.7d5: = require_complete_type %ptr.0ad [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness.4fa: = lookup_impl_witness %array_type.c7c, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.ad4: %Destroy.type = facet_value %array_type.c7c, (%Destroy.lookup_impl_witness.4fa) [symbolic] // CHECK:STDOUT: %.a57: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.ad4 [symbolic] @@ -532,26 +537,29 @@ fn G(N:! i32) { // CHECK:STDOUT: %require_complete.loc7_16: = require_complete_type %struct_type.a.loc7_16.2 [symbolic = %require_complete.loc7_16 (constants.%require_complete.28a)] // CHECK:STDOUT: %pattern_type.loc7: type = pattern_type %struct_type.a.loc7_16.2 [symbolic = %pattern_type.loc7 (constants.%pattern_type.95a)] // CHECK:STDOUT: %array_type.loc8_20.2: type = array_type constants.%int_5, %T.loc4_6.2 [symbolic = %array_type.loc8_20.2 (constants.%array_type.ec2)] -// CHECK:STDOUT: %require_complete.loc8: = require_complete_type %array_type.loc8_20.2 [symbolic = %require_complete.loc8 (constants.%require_complete.fe1)] +// CHECK:STDOUT: %require_complete.loc8_20: = require_complete_type %array_type.loc8_20.2 [symbolic = %require_complete.loc8_20 (constants.%require_complete.fe1)] // CHECK:STDOUT: %pattern_type.loc8: type = pattern_type %array_type.loc8_20.2 [symbolic = %pattern_type.loc8 (constants.%pattern_type.035)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.loc8: = lookup_impl_witness %array_type.loc8_20.2, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc8 (constants.%Destroy.lookup_impl_witness.b45)] // CHECK:STDOUT: %Destroy.facet.loc8: %Destroy.type = facet_value %array_type.loc8_20.2, (%Destroy.lookup_impl_witness.loc8) [symbolic = %Destroy.facet.loc8 (constants.%Destroy.facet.0d3)] -// CHECK:STDOUT: %.loc8_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc8 [symbolic = %.loc8_3.3 (constants.%.03f)] -// CHECK:STDOUT: %impl.elem0.loc8_3.2: @F.%.loc8_3.3 (%.03f) = impl_witness_access %Destroy.lookup_impl_witness.loc8, element0 [symbolic = %impl.elem0.loc8_3.2 (constants.%impl.elem0.1ce)] +// CHECK:STDOUT: %.loc8_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc8 [symbolic = %.loc8_3.2 (constants.%.03f)] +// CHECK:STDOUT: %impl.elem0.loc8_3.2: @F.%.loc8_3.2 (%.03f) = impl_witness_access %Destroy.lookup_impl_witness.loc8, element0 [symbolic = %impl.elem0.loc8_3.2 (constants.%impl.elem0.1ce)] // CHECK:STDOUT: %specific_impl_fn.loc8_3.2: = specific_impl_function %impl.elem0.loc8_3.2, @Op.1(%Destroy.facet.loc8) [symbolic = %specific_impl_fn.loc8_3.2 (constants.%specific_impl_fn.236)] +// CHECK:STDOUT: %ptr.loc8: type = ptr_type %array_type.loc8_20.2 [symbolic = %ptr.loc8 (constants.%ptr.1a0)] +// CHECK:STDOUT: %require_complete.loc8_3: = require_complete_type %ptr.loc8 [symbolic = %require_complete.loc8_3 (constants.%require_complete.b09)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.loc7: = lookup_impl_witness %struct_type.a.loc7_16.2, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc7 (constants.%Destroy.lookup_impl_witness.b34)] // CHECK:STDOUT: %Destroy.facet.loc7: %Destroy.type = facet_value %struct_type.a.loc7_16.2, (%Destroy.lookup_impl_witness.loc7) [symbolic = %Destroy.facet.loc7 (constants.%Destroy.facet.2c9)] -// CHECK:STDOUT: %.loc7_3.5: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc7 [symbolic = %.loc7_3.5 (constants.%.b85)] -// CHECK:STDOUT: %impl.elem0.loc7_3.2: @F.%.loc7_3.5 (%.b85) = impl_witness_access %Destroy.lookup_impl_witness.loc7, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0.dc9)] +// CHECK:STDOUT: %.loc7_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc7 [symbolic = %.loc7_3.2 (constants.%.b85)] +// CHECK:STDOUT: %impl.elem0.loc7_3.2: @F.%.loc7_3.2 (%.b85) = impl_witness_access %Destroy.lookup_impl_witness.loc7, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0.dc9)] // CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Op.1(%Destroy.facet.loc7) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn.2a6)] -// CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %T.loc4_6.2 [symbolic = %require_complete.loc7_3 (constants.%require_complete.4ae)] +// CHECK:STDOUT: %ptr.loc7: type = ptr_type %struct_type.a.loc7_16.2 [symbolic = %ptr.loc7 (constants.%ptr.48a)] +// CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %ptr.loc7 [symbolic = %require_complete.loc7_3 (constants.%require_complete.86d)] // CHECK:STDOUT: %Destroy.lookup_impl_witness.loc6: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness.loc6 (constants.%Destroy.lookup_impl_witness.a8a)] // CHECK:STDOUT: %Destroy.facet.loc6: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness.loc6) [symbolic = %Destroy.facet.loc6 (constants.%Destroy.facet.7be)] -// CHECK:STDOUT: %.loc6_3.5: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc6 [symbolic = %.loc6_3.5 (constants.%.f5c)] -// CHECK:STDOUT: %impl.elem0.loc6_3.2: @F.%.loc6_3.5 (%.f5c) = impl_witness_access %Destroy.lookup_impl_witness.loc6, element0 [symbolic = %impl.elem0.loc6_3.2 (constants.%impl.elem0.87c)] +// CHECK:STDOUT: %.loc6_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet.loc6 [symbolic = %.loc6_3.2 (constants.%.f5c)] +// CHECK:STDOUT: %impl.elem0.loc6_3.2: @F.%.loc6_3.2 (%.f5c) = impl_witness_access %Destroy.lookup_impl_witness.loc6, element0 [symbolic = %impl.elem0.loc6_3.2 (constants.%impl.elem0.87c)] // CHECK:STDOUT: %specific_impl_fn.loc6_3.2: = specific_impl_function %impl.elem0.loc6_3.2, @Op.1(%Destroy.facet.loc6) [symbolic = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn.4b8)] -// CHECK:STDOUT: %require_complete.loc6_3.1: = require_complete_type %ptr.loc6_12.2 [symbolic = %require_complete.loc6_3.1 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %require_complete.loc6_3.2: = require_complete_type %const.loc6_15.2 [symbolic = %require_complete.loc6_3.2 (constants.%require_complete.7cc)] +// CHECK:STDOUT: %ptr.loc6_3: type = ptr_type %tuple.type [symbolic = %ptr.loc6_3 (constants.%ptr.6cd)] +// CHECK:STDOUT: %require_complete.loc6_3: = require_complete_type %ptr.loc6_3 [symbolic = %require_complete.loc6_3 (constants.%require_complete.66e)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -590,32 +598,24 @@ fn G(N:! i32) { // CHECK:STDOUT: %array_type.loc8_20.1: type = array_type %int_5, %T.ref.loc8 [symbolic = %array_type.loc8_20.2 (constants.%array_type.ec2)] // CHECK:STDOUT: } // CHECK:STDOUT: %w: ref @F.%array_type.loc8_20.2 (%array_type.ec2) = bind_name w, %w.var -// CHECK:STDOUT: %impl.elem0.loc8_3.1: @F.%.loc8_3.3 (%.03f) = impl_witness_access constants.%Destroy.lookup_impl_witness.b45, element0 [symbolic = %impl.elem0.loc8_3.2 (constants.%impl.elem0.1ce)] +// CHECK:STDOUT: %impl.elem0.loc8_3.1: @F.%.loc8_3.2 (%.03f) = impl_witness_access constants.%Destroy.lookup_impl_witness.b45, element0 [symbolic = %impl.elem0.loc8_3.2 (constants.%impl.elem0.1ce)] // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %w.var, %impl.elem0.loc8_3.1 // CHECK:STDOUT: %specific_impl_fn.loc8_3.1: = specific_impl_function %impl.elem0.loc8_3.1, @Op.1(constants.%Destroy.facet.0d3) [symbolic = %specific_impl_fn.loc8_3.2 (constants.%specific_impl_fn.236)] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %w.var, %specific_impl_fn.loc8_3.1 -// CHECK:STDOUT: %.loc8_3.1: @F.%array_type.loc8_20.2 (%array_type.ec2) = bind_value %w.var -// CHECK:STDOUT: %.loc8_3.2: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.1) -// CHECK:STDOUT: %impl.elem0.loc7_3.1: @F.%.loc7_3.5 (%.b85) = impl_witness_access constants.%Destroy.lookup_impl_witness.b34, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0.dc9)] +// CHECK:STDOUT: %addr.loc8: @F.%ptr.loc8 (%ptr.1a0) = addr_of %w.var +// CHECK:STDOUT: %.loc8_3.1: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) +// CHECK:STDOUT: %impl.elem0.loc7_3.1: @F.%.loc7_3.2 (%.b85) = impl_witness_access constants.%Destroy.lookup_impl_witness.b34, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0.dc9)] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0.loc7_3.1 // CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Op.1(constants.%Destroy.facet.2c9) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn.2a6)] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_impl_fn.loc7_3.1 -// CHECK:STDOUT: %.loc7_3.1: ref @F.%T.loc4_6.2 (%T) = struct_access %v.var, element0 -// CHECK:STDOUT: %.loc7_3.2: @F.%T.loc4_6.2 (%T) = bind_value %.loc7_3.1 -// CHECK:STDOUT: %struct: @F.%struct_type.a.loc7_16.2 (%struct_type.a) = struct_value (%.loc7_3.2) -// CHECK:STDOUT: %.loc7_3.3: @F.%struct_type.a.loc7_16.2 (%struct_type.a) = converted %v.var, %struct -// CHECK:STDOUT: %.loc7_3.4: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.3) -// CHECK:STDOUT: %impl.elem0.loc6_3.1: @F.%.loc6_3.5 (%.f5c) = impl_witness_access constants.%Destroy.lookup_impl_witness.a8a, element0 [symbolic = %impl.elem0.loc6_3.2 (constants.%impl.elem0.87c)] +// CHECK:STDOUT: %addr.loc7: @F.%ptr.loc7 (%ptr.48a) = addr_of %v.var +// CHECK:STDOUT: %.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) +// CHECK:STDOUT: %impl.elem0.loc6_3.1: @F.%.loc6_3.2 (%.f5c) = impl_witness_access constants.%Destroy.lookup_impl_witness.a8a, element0 [symbolic = %impl.elem0.loc6_3.2 (constants.%impl.elem0.87c)] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %u.var, %impl.elem0.loc6_3.1 // CHECK:STDOUT: %specific_impl_fn.loc6_3.1: = specific_impl_function %impl.elem0.loc6_3.1, @Op.1(constants.%Destroy.facet.7be) [symbolic = %specific_impl_fn.loc6_3.2 (constants.%specific_impl_fn.4b8)] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %u.var, %specific_impl_fn.loc6_3.1 -// CHECK:STDOUT: %tuple.elem0: ref @F.%ptr.loc6_12.2 (%ptr.79f) = tuple_access %u.var, element0 -// CHECK:STDOUT: %.loc6_3.1: @F.%ptr.loc6_12.2 (%ptr.79f) = bind_value %tuple.elem0 -// CHECK:STDOUT: %tuple.elem1: ref @F.%const.loc6_15.2 (%const) = tuple_access %u.var, element1 -// CHECK:STDOUT: %.loc6_3.2: @F.%const.loc6_15.2 (%const) = bind_value %tuple.elem1 -// CHECK:STDOUT: %tuple: @F.%tuple.type (%tuple.type.4f2) = tuple_value (%.loc6_3.1, %.loc6_3.2) -// CHECK:STDOUT: %.loc6_3.3: @F.%tuple.type (%tuple.type.4f2) = converted %u.var, %tuple -// CHECK:STDOUT: %.loc6_3.4: init %empty_tuple.type = call %bound_method.loc6_3.2(%.loc6_3.3) +// CHECK:STDOUT: %addr.loc6: @F.%ptr.loc6_3 (%ptr.6cd) = addr_of %u.var +// CHECK:STDOUT: %.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -628,13 +628,15 @@ fn G(N:! i32) { // CHECK:STDOUT: %bound_method.loc14_21.3: = bound_method %N.loc12_6.2, constants.%Convert.specific_fn [symbolic = %bound_method.loc14_21.3 (constants.%bound_method)] // CHECK:STDOUT: %int.convert_checked.loc14_21.2: init Core.IntLiteral = call %bound_method.loc14_21.3(%N.loc12_6.2) [symbolic = %int.convert_checked.loc14_21.2 (constants.%int.convert_checked)] // CHECK:STDOUT: %array_type.loc14_22.2: type = array_type %int.convert_checked.loc14_21.2, constants.%i32 [symbolic = %array_type.loc14_22.2 (constants.%array_type.c7c)] -// CHECK:STDOUT: %require_complete: = require_complete_type %array_type.loc14_22.2 [symbolic = %require_complete (constants.%require_complete.7cb)] +// CHECK:STDOUT: %require_complete.loc14_22: = require_complete_type %array_type.loc14_22.2 [symbolic = %require_complete.loc14_22 (constants.%require_complete.7cb)] // CHECK:STDOUT: %pattern_type: type = pattern_type %array_type.loc14_22.2 [symbolic = %pattern_type (constants.%pattern_type.ccc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %array_type.loc14_22.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.4fa)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %array_type.loc14_22.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.ad4)] -// CHECK:STDOUT: %.loc14_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc14_3.3 (constants.%.a57)] -// CHECK:STDOUT: %impl.elem0.loc14_3.2: @G.%.loc14_3.3 (%.a57) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_3.2 (constants.%impl.elem0.f15)] +// CHECK:STDOUT: %.loc14_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc14_3.2 (constants.%.a57)] +// CHECK:STDOUT: %impl.elem0.loc14_3.2: @G.%.loc14_3.2 (%.a57) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_3.2 (constants.%impl.elem0.f15)] // CHECK:STDOUT: %specific_impl_fn.loc14_3.2: = specific_impl_function %impl.elem0.loc14_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.bae)] +// CHECK:STDOUT: %ptr: type = ptr_type %array_type.loc14_22.2 [symbolic = %ptr (constants.%ptr.0ad)] +// CHECK:STDOUT: %require_complete.loc14_3: = require_complete_type %ptr [symbolic = %require_complete.loc14_3 (constants.%require_complete.7d5)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -657,12 +659,12 @@ fn G(N:! i32) { // CHECK:STDOUT: %array_type.loc14_22.1: type = array_type %.loc14_21.2, %i32.loc14 [symbolic = %array_type.loc14_22.2 (constants.%array_type.c7c)] // CHECK:STDOUT: } // CHECK:STDOUT: %k: ref @G.%array_type.loc14_22.2 (%array_type.c7c) = bind_name k, %k.var -// CHECK:STDOUT: %impl.elem0.loc14_3.1: @G.%.loc14_3.3 (%.a57) = impl_witness_access constants.%Destroy.lookup_impl_witness.4fa, element0 [symbolic = %impl.elem0.loc14_3.2 (constants.%impl.elem0.f15)] +// CHECK:STDOUT: %impl.elem0.loc14_3.1: @G.%.loc14_3.2 (%.a57) = impl_witness_access constants.%Destroy.lookup_impl_witness.4fa, element0 [symbolic = %impl.elem0.loc14_3.2 (constants.%impl.elem0.f15)] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %k.var, %impl.elem0.loc14_3.1 // CHECK:STDOUT: %specific_impl_fn.loc14_3.1: = specific_impl_function %impl.elem0.loc14_3.1, @Op.1(constants.%Destroy.facet.ad4) [symbolic = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.bae)] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %k.var, %specific_impl_fn.loc14_3.1 -// CHECK:STDOUT: %.loc14_3.1: @G.%array_type.loc14_22.2 (%array_type.c7c) = bind_value %k.var -// CHECK:STDOUT: %.loc14_3.2: init %empty_tuple.type = call %bound_method.loc14_3.2(%.loc14_3.1) +// CHECK:STDOUT: %addr: @G.%ptr (%ptr.0ad) = addr_of %k.var +// CHECK:STDOUT: %.loc14_3.1: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon index 8ca010174d24..53542cff3ab6 100644 --- a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon +++ b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon @@ -65,7 +65,7 @@ fn F() { // CHECK:STDOUT: %assoc0.a29: %B.assoc_type = assoc_entity element0, @B.%BB.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Empty.impl_witness: = impl_witness file.%Empty.impl_witness_table [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] // CHECK:STDOUT: %AA.type.c29: type = fn_type @AA.2 [concrete] @@ -119,6 +119,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.4, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.4(%C) [concrete] @@ -137,7 +138,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] // CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @impl.865 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -263,7 +264,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -378,8 +379,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc45_6.1: = bound_method %.loc45_6.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.4(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc45_6.2: = bound_method %.loc45_6.2, %specific_fn -// CHECK:STDOUT: %.loc45_6.5: %C = bind_value %.loc45_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc45_6.2(%.loc45_6.5) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc45_6.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc45_6.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -407,7 +408,7 @@ fn F() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c48 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.impl_witness // CHECK:STDOUT: %A.facet.loc34 => constants.%A.facet.66c // CHECK:STDOUT: %.loc34_4.2 => constants.%.7ab diff --git a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon index 0aab6401f236..07bf23dafdff 100644 --- a/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_type_to_generic_facet_value.carbon @@ -361,7 +361,7 @@ fn G() { // CHECK:STDOUT: %assoc0.296: %Generic.assoc_type.0fd = assoc_entity element0, @Generic.%F.decl [symbolic] // CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete] // CHECK:STDOUT: %Generic.type.769: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete] // CHECK:STDOUT: %Self.f84: %Generic.type.769 = bind_symbolic_name Self, 1 [symbolic] @@ -380,7 +380,7 @@ fn G() { // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete] // CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [concrete] -// CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %GenericParam.val: %GenericParam = struct_value () [concrete] @@ -394,6 +394,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.abd: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%GenericParam) [concrete] // CHECK:STDOUT: %Op.type.ae1: type = fn_type @Op.2, @impl.49c(%GenericParam) [concrete] // CHECK:STDOUT: %Op.0cc: %Op.type.ae1 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.f73: type = ptr_type %GenericParam [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %GenericParam, (%Destroy.impl_witness.abd) [concrete] // CHECK:STDOUT: %.4c3: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.0cc, @Op.2(%GenericParam) [concrete] @@ -406,7 +407,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -488,7 +489,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class @GenericParam { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -497,7 +498,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class @ImplsGeneric { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -521,7 +522,7 @@ fn G() { // CHECK:STDOUT: %pattern_type.loc15_48: type = pattern_type %T.loc15_22.2 [symbolic = %pattern_type.loc15_48 (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_22.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_22.2 [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @CallGenericMethod.%T.loc15_22.2 (%T)) { // CHECK:STDOUT: !entry: @@ -548,8 +549,8 @@ fn G() { // CHECK:STDOUT: %bound_method.loc18_36.1: = bound_method %.loc18_36.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%GenericParam) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_36.2: = bound_method %.loc18_36.2, %specific_fn -// CHECK:STDOUT: %.loc18_36.5: %GenericParam = bind_value %.loc18_36.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_36.2(%.loc18_36.5) +// CHECK:STDOUT: %addr: %ptr.f73 = addr_of %.loc18_36.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_36.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -593,6 +594,6 @@ fn G() { // CHECK:STDOUT: %pattern_type.loc15_48 => constants.%pattern_type.589 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon index 6792d39ce8aa..c4337f38581d 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_facet_value_value.carbon @@ -38,7 +38,7 @@ fn F() { // CHECK:STDOUT: %require_complete.234: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness file.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -54,6 +54,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.b14: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.2, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Goat, (%Destroy.impl_witness.b14) [concrete] // CHECK:STDOUT: %.095: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.55a, @Op.2(%Goat) [concrete] @@ -66,7 +67,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -120,7 +121,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: class @Goat { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -161,8 +162,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc23_15.1: = bound_method %.loc23_15.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%Goat) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc23_15.2: = bound_method %.loc23_15.2, %specific_fn -// CHECK:STDOUT: %.loc23_15.5: %Goat = bind_value %.loc23_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc23_15.2(%.loc23_15.5) +// CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc23_15.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc23_15.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -178,6 +179,6 @@ fn F() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ab7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon index 5c0762150efd..640476aa50ea 100644 --- a/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_class_value_to_generic_facet_value_value.carbon @@ -159,12 +159,14 @@ fn B() { // CHECK:STDOUT: %Destroy.impl_witness.abd: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%GenericParam) [concrete] // CHECK:STDOUT: %Op.type.ae1: type = fn_type @Op.2, @impl.49c(%GenericParam) [concrete] // CHECK:STDOUT: %Op.0cc: %Op.type.ae1 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.f73: type = ptr_type %GenericParam [concrete] // CHECK:STDOUT: %Destroy.facet.8f4: %Destroy.type = facet_value %GenericParam, (%Destroy.impl_witness.abd) [concrete] // CHECK:STDOUT: %.4c3: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.8f4 [concrete] // CHECK:STDOUT: %Op.specific_fn.934: = specific_function %Op.0cc, @Op.2(%GenericParam) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.32c: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ImplsGeneric) [concrete] // CHECK:STDOUT: %Op.type.e98: type = fn_type @Op.2, @impl.49c(%ImplsGeneric) [concrete] // CHECK:STDOUT: %Op.51a: %Op.type.e98 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.011: type = ptr_type %ImplsGeneric [concrete] // CHECK:STDOUT: %Destroy.facet.ec7: %Destroy.type = facet_value %ImplsGeneric, (%Destroy.impl_witness.32c) [concrete] // CHECK:STDOUT: %.de2: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.ec7 [concrete] // CHECK:STDOUT: %Op.specific_fn.7b0: = specific_function %Op.51a, @Op.2(%ImplsGeneric) [concrete] @@ -179,7 +181,7 @@ fn B() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -356,14 +358,14 @@ fn B() { // CHECK:STDOUT: %bound_method.loc20_42.1: = bound_method %.loc20_42.2, %impl.elem0.loc20_42 // CHECK:STDOUT: %specific_fn.loc20_42: = specific_function %impl.elem0.loc20_42, @Op.2(constants.%GenericParam) [concrete = constants.%Op.specific_fn.934] // CHECK:STDOUT: %bound_method.loc20_42.2: = bound_method %.loc20_42.2, %specific_fn.loc20_42 -// CHECK:STDOUT: %.loc20_42.5: %GenericParam = bind_value %.loc20_42.2 -// CHECK:STDOUT: %no_op.loc20_42: init %empty_tuple.type = call %bound_method.loc20_42.2(%.loc20_42.5) +// CHECK:STDOUT: %addr.loc20_42: %ptr.f73 = addr_of %.loc20_42.2 +// CHECK:STDOUT: %no_op.loc20_42: init %empty_tuple.type = call %bound_method.loc20_42.2(%addr.loc20_42) // CHECK:STDOUT: %impl.elem0.loc20_22: %.de2 = impl_witness_access constants.%Destroy.impl_witness.32c, element0 [concrete = constants.%Op.51a] // CHECK:STDOUT: %bound_method.loc20_22.1: = bound_method %.loc20_22.2, %impl.elem0.loc20_22 // CHECK:STDOUT: %specific_fn.loc20_22: = specific_function %impl.elem0.loc20_22, @Op.2(constants.%ImplsGeneric) [concrete = constants.%Op.specific_fn.7b0] // CHECK:STDOUT: %bound_method.loc20_22.2: = bound_method %.loc20_22.2, %specific_fn.loc20_22 -// CHECK:STDOUT: %.loc20_22.5: %ImplsGeneric = bind_value %.loc20_22.2 -// CHECK:STDOUT: %no_op.loc20_22: init %empty_tuple.type = call %bound_method.loc20_22.2(%.loc20_22.5) +// CHECK:STDOUT: %addr.loc20_22: %ptr.011 = addr_of %.loc20_22.2 +// CHECK:STDOUT: %no_op.loc20_22: init %empty_tuple.type = call %bound_method.loc20_22.2(%addr.loc20_22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -477,6 +479,7 @@ fn B() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.2(%C) [concrete] @@ -489,7 +492,7 @@ fn B() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -622,8 +625,8 @@ fn B() { // CHECK:STDOUT: %bound_method.loc12_6.1: = bound_method %.loc12_6.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc12_6.2: = bound_method %.loc12_6.2, %specific_fn -// CHECK:STDOUT: %.loc12_6.5: %C = bind_value %.loc12_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc12_6.2(%.loc12_6.5) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc12_6.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc12_6.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -694,7 +697,7 @@ fn B() { // CHECK:STDOUT: %Self.770: %I.type.f76 = bind_symbolic_name Self, 2 [symbolic] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %I.type.bea: type = facet_type <@I, @I(%T.8b3, %empty_tuple.type)> [symbolic] // CHECK:STDOUT: %Self.ec5: %I.type.bea = bind_symbolic_name Self, 2 [symbolic] @@ -718,6 +721,7 @@ fn B() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.2(%C) [concrete] @@ -730,7 +734,7 @@ fn B() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -822,7 +826,7 @@ fn B() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -856,8 +860,8 @@ fn B() { // CHECK:STDOUT: %bound_method.loc19_6.1: = bound_method %.loc19_6.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc19_6.2: = bound_method %.loc19_6.2, %specific_fn -// CHECK:STDOUT: %.loc19_6.5: %C = bind_value %.loc19_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_6.2(%.loc19_6.5) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc19_6.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_6.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -906,7 +910,7 @@ fn B() { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.c6b: type = class_type @C, @C(%V, %W) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %C.463: type = class_type @C, @C(%T.8b3, %empty_tuple.type) [symbolic] // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table, @impl.a1a(%T.8b3) [symbolic] @@ -928,6 +932,7 @@ fn B() { // CHECK:STDOUT: %Destroy.impl_witness.efa: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C.c74) [concrete] // CHECK:STDOUT: %Op.type.53e: type = fn_type @Op.2, @impl.49c(%C.c74) [concrete] // CHECK:STDOUT: %Op.2b8: %Op.type.53e = struct_value () [concrete] +// CHECK:STDOUT: %ptr.128: type = ptr_type %C.c74 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.c74, (%Destroy.impl_witness.efa) [concrete] // CHECK:STDOUT: %.77a: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2b8, @Op.2(%C.c74) [concrete] @@ -940,7 +945,7 @@ fn B() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1021,7 +1026,7 @@ fn B() { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -1061,8 +1066,8 @@ fn B() { // CHECK:STDOUT: %bound_method.loc19_6.1: = bound_method %.loc19_6.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C.c74) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc19_6.2: = bound_method %.loc19_6.2, %specific_fn -// CHECK:STDOUT: %.loc19_6.5: %C.c74 = bind_value %.loc19_6.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_6.2(%.loc19_6.5) +// CHECK:STDOUT: %addr: %ptr.128 = addr_of %.loc19_6.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_6.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon b/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon index da41cacd6906..16b959edaef8 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_as_type_knows_original_type.carbon @@ -217,7 +217,7 @@ fn F() { // CHECK:STDOUT: %Eat.73e: %Eat.type.1b3 = struct_value () [concrete] // CHECK:STDOUT: %Eats.facet: %Eats.type = facet_value %Goat, (%Eats.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Animal.facet: %Animal.type = facet_value %Goat, (%Animal.impl_witness) [concrete] @@ -232,6 +232,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.b14: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.2, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Goat, (%Destroy.impl_witness.b14) [concrete] // CHECK:STDOUT: %.095: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.55a, @Op.2(%Goat) [concrete] @@ -244,7 +245,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -310,7 +311,7 @@ fn F() { // CHECK:STDOUT: %Eats.impl_witness_table = impl_witness_table (@impl.626.%Eat.decl), @impl.626 [concrete] // CHECK:STDOUT: %Eats.impl_witness: = impl_witness %Eats.impl_witness_table [concrete = constants.%Eats.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -397,20 +398,20 @@ fn F() { // CHECK:STDOUT: %bound_method.loc27_6.1: = bound_method %.loc27_6.2, %impl.elem0.loc27_6 // CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27_6, @Op.2(constants.%Goat) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc27_6.2: = bound_method %.loc27_6.2, %specific_fn.loc27 -// CHECK:STDOUT: %.loc27_6.5: %Goat = bind_value %.loc27_6.2 -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27_6.2(%.loc27_6.5) +// CHECK:STDOUT: %addr.loc27: %ptr.940 = addr_of %.loc27_6.2 +// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27_6.2(%addr.loc27) // CHECK:STDOUT: %impl.elem0.loc26: %.095 = impl_witness_access constants.%Destroy.impl_witness.b14, element0 [concrete = constants.%Op.55a] // CHECK:STDOUT: %bound_method.loc26_6.1: = bound_method %.loc26_6.2, %impl.elem0.loc26 // CHECK:STDOUT: %specific_fn.loc26: = specific_function %impl.elem0.loc26, @Op.2(constants.%Goat) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc26_6.2: = bound_method %.loc26_6.2, %specific_fn.loc26 -// CHECK:STDOUT: %.loc26_6.5: %Goat = bind_value %.loc26_6.2 -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_6.2(%.loc26_6.5) +// CHECK:STDOUT: %addr.loc26: %ptr.940 = addr_of %.loc26_6.2 +// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_6.2(%addr.loc26) // CHECK:STDOUT: %impl.elem0.loc22: %.095 = impl_witness_access constants.%Destroy.impl_witness.b14, element0 [concrete = constants.%Op.55a] // CHECK:STDOUT: %bound_method.loc22_28.1: = bound_method %.loc22_28.2, %impl.elem0.loc22 // CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Op.2(constants.%Goat) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc22_28.2: = bound_method %.loc22_28.2, %specific_fn.loc22 -// CHECK:STDOUT: %.loc22_28.5: %Goat = bind_value %.loc22_28.2 -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_28.2(%.loc22_28.5) +// CHECK:STDOUT: %addr.loc22: %ptr.940 = addr_of %.loc22_28.2 +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_28.2(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon index 32f33b49e557..9f69753903d8 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_generic_facet_value_value.carbon @@ -109,12 +109,14 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.fd6: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Grass) [concrete] // CHECK:STDOUT: %Op.type.7fb: type = fn_type @Op.2, @impl.49c(%Grass) [concrete] // CHECK:STDOUT: %Op.d66: %Op.type.7fb = struct_value () [concrete] +// CHECK:STDOUT: %ptr.2bd: type = ptr_type %Grass [concrete] // CHECK:STDOUT: %Destroy.facet.049: %Destroy.type = facet_value %Grass, (%Destroy.impl_witness.fd6) [concrete] // CHECK:STDOUT: %.cd1: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.049 [concrete] // CHECK:STDOUT: %Op.specific_fn.9e2: = specific_function %Op.d66, @Op.2(%Grass) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.b14: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.2, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] // CHECK:STDOUT: %Destroy.facet.cfd: %Destroy.type = facet_value %Goat, (%Destroy.impl_witness.b14) [concrete] // CHECK:STDOUT: %.095: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.cfd [concrete] // CHECK:STDOUT: %Op.specific_fn.d9f: = specific_function %Op.55a, @Op.2(%Goat) [concrete] @@ -134,7 +136,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -421,14 +423,14 @@ fn F() { // CHECK:STDOUT: %bound_method.loc35_29.1: = bound_method %.loc35_29.2, %impl.elem0.loc35_29 // CHECK:STDOUT: %specific_fn.loc35_29: = specific_function %impl.elem0.loc35_29, @Op.2(constants.%Grass) [concrete = constants.%Op.specific_fn.9e2] // CHECK:STDOUT: %bound_method.loc35_29.2: = bound_method %.loc35_29.2, %specific_fn.loc35_29 -// CHECK:STDOUT: %.loc35_29.5: %Grass = bind_value %.loc35_29.2 -// CHECK:STDOUT: %no_op.loc35_29: init %empty_tuple.type = call %bound_method.loc35_29.2(%.loc35_29.5) +// CHECK:STDOUT: %addr.loc35_29: %ptr.2bd = addr_of %.loc35_29.2 +// CHECK:STDOUT: %no_op.loc35_29: init %empty_tuple.type = call %bound_method.loc35_29.2(%addr.loc35_29) // CHECK:STDOUT: %impl.elem0.loc35_17: %.095 = impl_witness_access constants.%Destroy.impl_witness.b14, element0 [concrete = constants.%Op.55a] // CHECK:STDOUT: %bound_method.loc35_17.1: = bound_method %.loc35_17.2, %impl.elem0.loc35_17 // CHECK:STDOUT: %specific_fn.loc35_17: = specific_function %impl.elem0.loc35_17, @Op.2(constants.%Goat) [concrete = constants.%Op.specific_fn.d9f] // CHECK:STDOUT: %bound_method.loc35_17.2: = bound_method %.loc35_17.2, %specific_fn.loc35_17 -// CHECK:STDOUT: %.loc35_17.5: %Goat = bind_value %.loc35_17.2 -// CHECK:STDOUT: %no_op.loc35_17: init %empty_tuple.type = call %bound_method.loc35_17.2(%.loc35_17.5) +// CHECK:STDOUT: %addr.loc35_17: %ptr.940 = addr_of %.loc35_17.2 +// CHECK:STDOUT: %no_op.loc35_17: init %empty_tuple.type = call %bound_method.loc35_17.2(%addr.loc35_17) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon index 6053595e9c49..cb000f071e13 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_value_to_itself.carbon @@ -43,7 +43,7 @@ fn F() { // CHECK:STDOUT: %FeedAnimal.specific_fn.ec8: = specific_function %FeedAnimal, @FeedAnimal(%T.fd4) [symbolic] // CHECK:STDOUT: %Goat: type = class_type @Goat [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Animal.impl_witness: = impl_witness file.%Animal.impl_witness_table [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -59,6 +59,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.b14: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.type.e7a: type = fn_type @Op.2, @impl.49c(%Goat) [concrete] // CHECK:STDOUT: %Op.55a: %Op.type.e7a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.940: type = ptr_type %Goat [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Goat, (%Destroy.impl_witness.b14) [concrete] // CHECK:STDOUT: %.095: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.55a, @Op.2(%Goat) [concrete] @@ -72,7 +73,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -142,7 +143,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: class @Goat { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -204,8 +205,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc25_17.1: = bound_method %.loc25_17.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%Goat) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc25_17.2: = bound_method %.loc25_17.2, %specific_fn -// CHECK:STDOUT: %.loc25_17.5: %Goat = bind_value %.loc25_17.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc25_17.2(%.loc25_17.5) +// CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc25_17.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc25_17.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -230,7 +231,7 @@ fn F() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ab7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: %FeedAnimal.specific_fn.loc19_37.2 => constants.%FeedAnimal.specific_fn.82e // CHECK:STDOUT: } // CHECK:STDOUT: @@ -240,6 +241,6 @@ fn F() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ab7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon index 51976b5b1f66..6a88e6fb1c17 100644 --- a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon +++ b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon @@ -52,7 +52,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %HoldsType.generic: %HoldsType.type = struct_value () [concrete] // CHECK:STDOUT: %HoldsType.cc9: type = class_type @HoldsType, @HoldsType(%T.6eb) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %RuntimeConvertFrom: type = class_type @RuntimeConvertFrom [concrete] // CHECK:STDOUT: %RuntimeConvertTo: type = class_type @RuntimeConvertTo [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] @@ -91,12 +91,14 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %Destroy.impl_witness.3c9: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%RuntimeConvertTo) [concrete] // CHECK:STDOUT: %Op.type.139: type = fn_type @Op.2, @impl.49c(%RuntimeConvertTo) [concrete] // CHECK:STDOUT: %Op.d2d: %Op.type.139 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.339: type = ptr_type %RuntimeConvertTo [concrete] // CHECK:STDOUT: %Destroy.facet.31d: %Destroy.type = facet_value %RuntimeConvertTo, (%Destroy.impl_witness.3c9) [concrete] // CHECK:STDOUT: %.79d: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.31d [concrete] // CHECK:STDOUT: %Op.specific_fn.373: = specific_function %Op.d2d, @Op.2(%RuntimeConvertTo) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.fab: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%RuntimeConvertFrom) [concrete] // CHECK:STDOUT: %Op.type.147: type = fn_type @Op.2, @impl.49c(%RuntimeConvertFrom) [concrete] // CHECK:STDOUT: %Op.3f3: %Op.type.147 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.415: type = ptr_type %RuntimeConvertFrom [concrete] // CHECK:STDOUT: %Destroy.facet.71e: %Destroy.type = facet_value %RuntimeConvertFrom, (%Destroy.impl_witness.fab) [concrete] // CHECK:STDOUT: %.a98: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.71e [concrete] // CHECK:STDOUT: %Op.specific_fn.5db: = specific_function %Op.3f3, @Op.2(%RuntimeConvertFrom) [concrete] @@ -111,7 +113,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -215,7 +217,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -225,7 +227,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: // CHECK:STDOUT: class @RuntimeConvertFrom { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -234,7 +236,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: // CHECK:STDOUT: class @RuntimeConvertTo { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -296,14 +298,14 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %bound_method.loc41_19.2: = bound_method %.loc41_19.1, %impl.elem0.loc41_19.2 // CHECK:STDOUT: %specific_fn.loc41: = specific_function %impl.elem0.loc41_19.2, @Op.2(constants.%RuntimeConvertTo) [concrete = constants.%Op.specific_fn.373] // CHECK:STDOUT: %bound_method.loc41_19.3: = bound_method %.loc41_19.1, %specific_fn.loc41 -// CHECK:STDOUT: %.loc41_19.5: %RuntimeConvertTo = bind_value %.loc41_19.1 -// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_19.3(%.loc41_19.5) +// CHECK:STDOUT: %addr.loc41: %ptr.339 = addr_of %.loc41_19.1 +// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_19.3(%addr.loc41) // CHECK:STDOUT: %impl.elem0.loc30: %.a98 = impl_witness_access constants.%Destroy.impl_witness.fab, element0 [concrete = constants.%Op.3f3] // CHECK:STDOUT: %bound_method.loc30_36.1: = bound_method %.loc30_36.2, %impl.elem0.loc30 // CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Op.2(constants.%RuntimeConvertFrom) [concrete = constants.%Op.specific_fn.5db] // CHECK:STDOUT: %bound_method.loc30_36.2: = bound_method %.loc30_36.2, %specific_fn.loc30 -// CHECK:STDOUT: %.loc30_36.5: %RuntimeConvertFrom = bind_value %.loc30_36.2 -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_36.2(%.loc30_36.5) +// CHECK:STDOUT: %addr.loc30: %ptr.415 = addr_of %.loc30_36.2 +// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_36.2(%addr.loc30) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index 409bea7f8c04..f7fd49285993 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -807,6 +807,7 @@ fn Read() { // CHECK:STDOUT: %Destroy.impl_witness.eb8: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%IntRange.365) [concrete] // CHECK:STDOUT: %Op.type.2d1: type = fn_type @Op.97, @impl.49c(%IntRange.365) [concrete] // CHECK:STDOUT: %Op.fa8: %Op.type.2d1 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.049: type = ptr_type %IntRange.365 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %IntRange.365, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.cb4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn.df8: = specific_function %Op.fa8, @Op.97(%IntRange.365) [concrete] @@ -851,7 +852,7 @@ fn Read() { // CHECK:STDOUT: %Main.import_ref.f1e294.4: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.f1e294.5: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.014 = import_ref Main//lib, inst519 [indirect], unloaded -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -932,7 +933,7 @@ fn Read() { // CHECK:STDOUT: %x.var: ref %IntRange.365 = var %x.var_patt // CHECK:STDOUT: %Range.ref: %Range.type = name_ref Range, imports.%Main.Range [concrete = constants.%Range] // CHECK:STDOUT: %y.ref: Core.IntLiteral = name_ref y, %y [symbolic = constants.%y] -// CHECK:STDOUT: %.loc6_3.1: ref %IntRange.365 = splice_block %x.var {} +// CHECK:STDOUT: %.loc6_3: ref %IntRange.365 = splice_block %x.var {} // CHECK:STDOUT: %impl.elem0.loc6_31: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] // CHECK:STDOUT: %bound_method.loc6_31.1: = bound_method %y.ref, %impl.elem0.loc6_31 [symbolic = constants.%Convert.bound] // CHECK:STDOUT: %specific_fn.loc6_31: = specific_function %impl.elem0.loc6_31, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] @@ -940,7 +941,7 @@ fn Read() { // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc6_31.2(%y.ref) [symbolic = constants.%int.convert_checked.58b] // CHECK:STDOUT: %.loc6_31.1: %i32 = value_of_initializer %int.convert_checked [symbolic = constants.%int.convert_checked.58b] // CHECK:STDOUT: %.loc6_31.2: %i32 = converted %y.ref, %.loc6_31.1 [symbolic = constants.%int.convert_checked.58b] -// CHECK:STDOUT: %Range.call: init %IntRange.365 = call %Range.ref(%.loc6_31.2) to %.loc6_3.1 +// CHECK:STDOUT: %Range.call: init %IntRange.365 = call %Range.ref(%.loc6_31.2) to %.loc6_3 // CHECK:STDOUT: assign %x.var, %Range.call // CHECK:STDOUT: %.loc6_21: type = splice_block %IntRange [concrete = constants.%IntRange.365] { // CHECK:STDOUT: %IntRange.ref: %IntRange.type = name_ref IntRange, imports.%Main.IntRange [concrete = constants.%IntRange.generic] @@ -949,17 +950,17 @@ fn Read() { // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %IntRange.365 = bind_name x, %x.var // CHECK:STDOUT: %impl.elem0.loc6_3.1: %.cb4 = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.fa8] -// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3.1, %impl.elem0.loc6_3.1 +// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %impl.elem0.loc6_3.1 // CHECK:STDOUT: %specific_fn.loc6_3.1: = specific_function %impl.elem0.loc6_3.1, @Op.97(constants.%IntRange.365) [concrete = constants.%Op.specific_fn.df8] -// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %.loc6_3.1, %specific_fn.loc6_3.1 -// CHECK:STDOUT: %.loc6_3.2: %IntRange.365 = bind_value %.loc6_3.1 -// CHECK:STDOUT: %no_op.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.2(%.loc6_3.2) +// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %.loc6_3, %specific_fn.loc6_3.1 +// CHECK:STDOUT: %addr.loc6_3.1: %ptr.049 = addr_of %.loc6_3 +// CHECK:STDOUT: %no_op.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.1) // CHECK:STDOUT: %impl.elem0.loc6_3.2: %.cb4 = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.fa8] // CHECK:STDOUT: %bound_method.loc6_3.3: = bound_method %x.var, %impl.elem0.loc6_3.2 // CHECK:STDOUT: %specific_fn.loc6_3.2: = specific_function %impl.elem0.loc6_3.2, @Op.97(constants.%IntRange.365) [concrete = constants.%Op.specific_fn.df8] // CHECK:STDOUT: %bound_method.loc6_3.4: = bound_method %x.var, %specific_fn.loc6_3.2 -// CHECK:STDOUT: %.loc6_3.3: %IntRange.365 = bind_value %x.var -// CHECK:STDOUT: %no_op.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.4(%.loc6_3.3) +// CHECK:STDOUT: %addr.loc6_3.2: %ptr.049 = addr_of %x.var +// CHECK:STDOUT: %no_op.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.4(%addr.loc6_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/basic.carbon b/toolchain/check/testdata/for/basic.carbon index 12d6e248e161..599f6c2b88c1 100644 --- a/toolchain/check/testdata/for/basic.carbon +++ b/toolchain/check/testdata/for/basic.carbon @@ -105,12 +105,14 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.003: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Optional.f9a) [concrete] // CHECK:STDOUT: %Op.type.7e4: type = fn_type @Op.2, @impl.49c(%Optional.f9a) [concrete] // CHECK:STDOUT: %Op.466: %Op.type.7e4 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.511: type = ptr_type %Optional.f9a [concrete] // CHECK:STDOUT: %Destroy.facet.a27: %Destroy.type = facet_value %Optional.f9a, (%Destroy.impl_witness.003) [concrete] // CHECK:STDOUT: %.3c9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.a27 [concrete] // CHECK:STDOUT: %Op.specific_fn.733: = specific_function %Op.466, @Op.2(%Optional.f9a) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.49d: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%TrivialRange) [concrete] // CHECK:STDOUT: %Op.type.8d6: type = fn_type @Op.2, @impl.49c(%TrivialRange) [concrete] // CHECK:STDOUT: %Op.90d: %Op.type.8d6 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.41d: type = ptr_type %TrivialRange [concrete] // CHECK:STDOUT: %Destroy.facet.2e4: %Destroy.type = facet_value %TrivialRange, (%Destroy.impl_witness.49d) [concrete] // CHECK:STDOUT: %.448: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2e4 [concrete] // CHECK:STDOUT: %Op.specific_fn.b69: = specific_function %Op.90d, @Op.2(%TrivialRange) [concrete] @@ -119,7 +121,7 @@ fn Run() { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.cd6: @Optional.%HasValue.type (%HasValue.type.a15) = import_ref Core//prelude/parts/iterate, inst98 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.73f)] // CHECK:STDOUT: %Core.import_ref.4fd: @Optional.%Get.type (%Get.type.e03) = import_ref Core//prelude/parts/iterate, inst99 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.971)] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -145,12 +147,12 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: %ptr.843 = addr_of %var +// CHECK:STDOUT: %addr.loc18_35.1: %ptr.843 = addr_of %var // CHECK:STDOUT: %impl.elem3: %.708 = impl_witness_access constants.%Iterate.impl_witness, element3 [concrete = constants.%Next.029] // CHECK:STDOUT: %bound_method.loc18_35.2: = bound_method %.loc18_20.1, %impl.elem3 // CHECK:STDOUT: %.loc18_35.1: ref %Optional.f9a = temporary_storage // CHECK:STDOUT: %.loc18_20.3: %TrivialRange = bind_value %.loc18_20.1 -// CHECK:STDOUT: %Next.call: init %Optional.f9a = call %bound_method.loc18_35.2(%.loc18_20.3, %addr) to %.loc18_35.1 +// CHECK:STDOUT: %Next.call: init %Optional.f9a = call %bound_method.loc18_35.2(%.loc18_20.3, %addr.loc18_35.1) to %.loc18_35.1 // CHECK:STDOUT: %.loc18_35.2: ref %Optional.f9a = temporary %.loc18_35.1, %Next.call // CHECK:STDOUT: %.loc18_35.3: %HasValue.type.b7a = specific_constant imports.%Core.import_ref.cd6, @Optional(constants.%empty_tuple.type) [concrete = constants.%HasValue.ada] // CHECK:STDOUT: %HasValue.ref: %HasValue.type.b7a = name_ref HasValue, %.loc18_35.3 [concrete = constants.%HasValue.ada] @@ -177,8 +179,8 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18_35.9: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc18_35.10: ref %empty_tuple.type = temporary %.loc18_35.9, %Get.call -// CHECK:STDOUT: %tuple.loc18_35.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc18_35.11: %empty_tuple.type = converted %Get.call, %tuple.loc18_35.1 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc18_35.11: %empty_tuple.type = converted %Get.call, %tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %_: %empty_tuple.type = bind_name _, %.loc18_35.11 // CHECK:STDOUT: %Body.ref: %Body.type = name_ref Body, file.%Body.decl [concrete = constants.%Body] // CHECK:STDOUT: %Body.call: init %empty_tuple.type = call %Body.ref() @@ -191,28 +193,26 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc18_35.5: = bound_method %.loc18_35.9, %impl.elem0.loc18_35.1 // CHECK:STDOUT: %specific_fn.loc18_35.1: = specific_function %impl.elem0.loc18_35.1, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc18_35.6: = bound_method %.loc18_35.9, %specific_fn.loc18_35.1 -// CHECK:STDOUT: %tuple.loc18_35.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc18_35.12: %empty_tuple.type = converted %.loc18_35.9, %tuple.loc18_35.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc18_35.1: init %empty_tuple.type = call %bound_method.loc18_35.6(%.loc18_35.12) +// CHECK:STDOUT: %addr.loc18_35.2: %ptr.843 = addr_of %.loc18_35.9 +// CHECK:STDOUT: %no_op.loc18_35.1: init %empty_tuple.type = call %bound_method.loc18_35.6(%addr.loc18_35.2) // CHECK:STDOUT: %impl.elem0.loc18_35.2: %.3c9 = impl_witness_access constants.%Destroy.impl_witness.003, element0 [concrete = constants.%Op.466] // CHECK:STDOUT: %bound_method.loc18_35.7: = bound_method %.loc18_35.1, %impl.elem0.loc18_35.2 // CHECK:STDOUT: %specific_fn.loc18_35.2: = specific_function %impl.elem0.loc18_35.2, @Op.2(constants.%Optional.f9a) [concrete = constants.%Op.specific_fn.733] // CHECK:STDOUT: %bound_method.loc18_35.8: = bound_method %.loc18_35.1, %specific_fn.loc18_35.2 -// CHECK:STDOUT: %.loc18_35.13: %Optional.f9a = bind_value %.loc18_35.1 -// CHECK:STDOUT: %no_op.loc18_35.2: init %empty_tuple.type = call %bound_method.loc18_35.8(%.loc18_35.13) +// CHECK:STDOUT: %addr.loc18_35.3: %ptr.511 = addr_of %.loc18_35.1 +// CHECK:STDOUT: %no_op.loc18_35.2: init %empty_tuple.type = call %bound_method.loc18_35.8(%addr.loc18_35.3) // CHECK:STDOUT: %impl.elem0.loc18_35.3: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc18_35.9: = bound_method %var, %impl.elem0.loc18_35.3 // CHECK:STDOUT: %specific_fn.loc18_35.3: = specific_function %impl.elem0.loc18_35.3, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc18_35.10: = bound_method %var, %specific_fn.loc18_35.3 -// CHECK:STDOUT: %tuple.loc18_35.3: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc18_35.14: %empty_tuple.type = converted %var, %tuple.loc18_35.3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc18_35.3: init %empty_tuple.type = call %bound_method.loc18_35.10(%.loc18_35.14) +// CHECK:STDOUT: %addr.loc18_35.4: %ptr.843 = addr_of %var +// CHECK:STDOUT: %no_op.loc18_35.3: init %empty_tuple.type = call %bound_method.loc18_35.10(%addr.loc18_35.4) // CHECK:STDOUT: %impl.elem0.loc18_18: %.448 = impl_witness_access constants.%Destroy.impl_witness.49d, element0 [concrete = constants.%Op.90d] // CHECK:STDOUT: %bound_method.loc18_18.1: = bound_method %.loc18_18.2, %impl.elem0.loc18_18 // CHECK:STDOUT: %specific_fn.loc18_18: = specific_function %impl.elem0.loc18_18, @Op.2(constants.%TrivialRange) [concrete = constants.%Op.specific_fn.b69] // CHECK:STDOUT: %bound_method.loc18_18.2: = bound_method %.loc18_18.2, %specific_fn.loc18_18 -// CHECK:STDOUT: %.loc18_18.5: %TrivialRange = bind_value %.loc18_18.2 -// CHECK:STDOUT: %no_op.loc18_18: init %empty_tuple.type = call %bound_method.loc18_18.2(%.loc18_18.5) +// CHECK:STDOUT: %addr.loc18_18: %ptr.41d = addr_of %.loc18_18.2 +// CHECK:STDOUT: %no_op.loc18_18: init %empty_tuple.type = call %bound_method.loc18_18.2(%addr.loc18_18) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/pattern.carbon b/toolchain/check/testdata/for/pattern.carbon index ecc6f69322e1..51d2afbdfd97 100644 --- a/toolchain/check/testdata/for/pattern.carbon +++ b/toolchain/check/testdata/for/pattern.carbon @@ -172,12 +172,14 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet.494: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.494 [concrete] // CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.b11: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Optional.cf0) [concrete] // CHECK:STDOUT: %Op.type.867: type = fn_type @Op.2, @impl.49c(%Optional.cf0) [concrete] // CHECK:STDOUT: %Op.3e8: %Op.type.867 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8e6: type = ptr_type %Optional.cf0 [concrete] // CHECK:STDOUT: %Destroy.facet.530: %Destroy.type = facet_value %Optional.cf0, (%Destroy.impl_witness.b11) [concrete] // CHECK:STDOUT: %.1f9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.530 [concrete] // CHECK:STDOUT: %Op.specific_fn.273: = specific_function %Op.3e8, @Op.2(%Optional.cf0) [concrete] @@ -187,10 +189,10 @@ fn Run() { // CHECK:STDOUT: %Destroy.facet.e2f: %Destroy.type = facet_value %empty_struct_type, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.9da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.e2f [concrete] // CHECK:STDOUT: %Op.specific_fn.652: = specific_function %Op.d5a, @Op.2(%empty_struct_type) [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.506: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%EmptyRange.cc8) [concrete] // CHECK:STDOUT: %Op.type.88d: type = fn_type @Op.2, @impl.49c(%EmptyRange.cc8) [concrete] // CHECK:STDOUT: %Op.929: %Op.type.88d = struct_value () [concrete] +// CHECK:STDOUT: %ptr.35d: type = ptr_type %EmptyRange.cc8 [concrete] // CHECK:STDOUT: %Destroy.facet.750: %Destroy.type = facet_value %EmptyRange.cc8, (%Destroy.impl_witness.506) [concrete] // CHECK:STDOUT: %.053: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.750 [concrete] // CHECK:STDOUT: %Op.specific_fn.a14: = specific_function %Op.929, @Op.2(%EmptyRange.cc8) [concrete] @@ -206,7 +208,7 @@ fn Run() { // CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @impl.86e [concrete] // CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] // CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -235,14 +237,14 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %addr.loc12_36.1: %ptr.c28 = addr_of %var // CHECK:STDOUT: %impl.elem3: %.5d5 = impl_witness_access constants.%Iterate.impl_witness.52a, element3 [concrete = constants.%Next.899] // CHECK:STDOUT: %bound_method.loc12_36.3: = bound_method %.loc12_35.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc12_36.2: = specific_function %impl.elem3, @Next.1(constants.%C) [concrete = constants.%Next.specific_fn] // CHECK:STDOUT: %bound_method.loc12_36.4: = bound_method %.loc12_35.2, %specific_fn.loc12_36.2 // CHECK:STDOUT: %.loc12_36.1: ref %Optional.cf0 = temporary_storage // CHECK:STDOUT: %.loc12_35.4: %EmptyRange.cc8 = bind_value %.loc12_35.2 -// CHECK:STDOUT: %Next.call: init %Optional.cf0 = call %bound_method.loc12_36.4(%.loc12_35.4, %addr) to %.loc12_36.1 +// CHECK:STDOUT: %Next.call: init %Optional.cf0 = call %bound_method.loc12_36.4(%.loc12_35.4, %addr.loc12_36.1) to %.loc12_36.1 // CHECK:STDOUT: %.loc12_36.2: ref %Optional.cf0 = temporary %.loc12_36.1, %Next.call // CHECK:STDOUT: %.loc12_36.3: %HasValue.type.71d = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%C) [concrete = constants.%HasValue.513] // CHECK:STDOUT: %HasValue.ref: %HasValue.type.71d = name_ref HasValue, %.loc12_36.3 [concrete = constants.%HasValue.513] @@ -278,27 +280,26 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc12_36.7: = bound_method %.loc12_36.8, %impl.elem0.loc12_36.1 // CHECK:STDOUT: %specific_fn.loc12_36.3: = specific_function %impl.elem0.loc12_36.1, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] // CHECK:STDOUT: %bound_method.loc12_36.8: = bound_method %.loc12_36.8, %specific_fn.loc12_36.3 -// CHECK:STDOUT: %.loc12_36.12: %C = bind_value %.loc12_36.8 -// CHECK:STDOUT: %no_op.loc12_36.1: init %empty_tuple.type = call %bound_method.loc12_36.8(%.loc12_36.12) +// CHECK:STDOUT: %addr.loc12_36.2: %ptr.019 = addr_of %.loc12_36.8 +// CHECK:STDOUT: %no_op.loc12_36.1: init %empty_tuple.type = call %bound_method.loc12_36.8(%addr.loc12_36.2) // CHECK:STDOUT: %impl.elem0.loc12_36.2: %.1f9 = impl_witness_access constants.%Destroy.impl_witness.b11, element0 [concrete = constants.%Op.3e8] // CHECK:STDOUT: %bound_method.loc12_36.9: = bound_method %.loc12_36.1, %impl.elem0.loc12_36.2 // CHECK:STDOUT: %specific_fn.loc12_36.4: = specific_function %impl.elem0.loc12_36.2, @Op.2(constants.%Optional.cf0) [concrete = constants.%Op.specific_fn.273] // CHECK:STDOUT: %bound_method.loc12_36.10: = bound_method %.loc12_36.1, %specific_fn.loc12_36.4 -// CHECK:STDOUT: %.loc12_36.13: %Optional.cf0 = bind_value %.loc12_36.1 -// CHECK:STDOUT: %no_op.loc12_36.2: init %empty_tuple.type = call %bound_method.loc12_36.10(%.loc12_36.13) +// CHECK:STDOUT: %addr.loc12_36.3: %ptr.8e6 = addr_of %.loc12_36.1 +// CHECK:STDOUT: %no_op.loc12_36.2: init %empty_tuple.type = call %bound_method.loc12_36.10(%addr.loc12_36.3) // CHECK:STDOUT: %impl.elem0.loc12_36.3: %.9da = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.d5a] // CHECK:STDOUT: %bound_method.loc12_36.11: = bound_method %var, %impl.elem0.loc12_36.3 // CHECK:STDOUT: %specific_fn.loc12_36.5: = specific_function %impl.elem0.loc12_36.3, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn.652] // CHECK:STDOUT: %bound_method.loc12_36.12: = bound_method %var, %specific_fn.loc12_36.5 -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc12_36.14: %empty_struct_type = converted %var, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op.loc12_36.3: init %empty_tuple.type = call %bound_method.loc12_36.12(%.loc12_36.14) +// CHECK:STDOUT: %addr.loc12_36.4: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %no_op.loc12_36.3: init %empty_tuple.type = call %bound_method.loc12_36.12(%addr.loc12_36.4) // CHECK:STDOUT: %impl.elem0.loc12_35: %.053 = impl_witness_access constants.%Destroy.impl_witness.506, element0 [concrete = constants.%Op.929] // CHECK:STDOUT: %bound_method.loc12_35.1: = bound_method %.loc12_35.1, %impl.elem0.loc12_35 // CHECK:STDOUT: %specific_fn.loc12_35: = specific_function %impl.elem0.loc12_35, @Op.2(constants.%EmptyRange.cc8) [concrete = constants.%Op.specific_fn.a14] // CHECK:STDOUT: %bound_method.loc12_35.2: = bound_method %.loc12_35.1, %specific_fn.loc12_35 -// CHECK:STDOUT: %.loc12_35.5: %EmptyRange.cc8 = bind_value %.loc12_35.1 -// CHECK:STDOUT: %no_op.loc12_35: init %empty_tuple.type = call %bound_method.loc12_35.2(%.loc12_35.5) +// CHECK:STDOUT: %addr.loc12_35: %ptr.35d = addr_of %.loc12_35.1 +// CHECK:STDOUT: %no_op.loc12_35: init %empty_tuple.type = call %bound_method.loc12_35.2(%addr.loc12_35) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -363,6 +364,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.b11: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Optional.cf0) [concrete] // CHECK:STDOUT: %Op.type.867: type = fn_type @Op.2, @impl.49c(%Optional.cf0) [concrete] // CHECK:STDOUT: %Op.3e8: %Op.type.867 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8e6: type = ptr_type %Optional.cf0 [concrete] // CHECK:STDOUT: %Destroy.facet.530: %Destroy.type = facet_value %Optional.cf0, (%Destroy.impl_witness.b11) [concrete] // CHECK:STDOUT: %.1f9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.530 [concrete] // CHECK:STDOUT: %Op.specific_fn.273: = specific_function %Op.3e8, @Op.2(%Optional.cf0) [concrete] @@ -372,10 +374,10 @@ fn Run() { // CHECK:STDOUT: %Destroy.facet.e2f: %Destroy.type = facet_value %empty_struct_type, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.9da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.e2f [concrete] // CHECK:STDOUT: %Op.specific_fn.652: = specific_function %Op.d5a, @Op.2(%empty_struct_type) [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.506: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%EmptyRange.cc8) [concrete] // CHECK:STDOUT: %Op.type.88d: type = fn_type @Op.2, @impl.49c(%EmptyRange.cc8) [concrete] // CHECK:STDOUT: %Op.929: %Op.type.88d = struct_value () [concrete] +// CHECK:STDOUT: %ptr.35d: type = ptr_type %EmptyRange.cc8 [concrete] // CHECK:STDOUT: %Destroy.facet.750: %Destroy.type = facet_value %EmptyRange.cc8, (%Destroy.impl_witness.506) [concrete] // CHECK:STDOUT: %.053: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.750 [concrete] // CHECK:STDOUT: %Op.specific_fn.a14: = specific_function %Op.929, @Op.2(%EmptyRange.cc8) [concrete] @@ -391,7 +393,7 @@ fn Run() { // CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @impl.86e [concrete] // CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] // CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -421,14 +423,14 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr.loc12: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %addr.loc12_40.1: %ptr.c28 = addr_of %var // CHECK:STDOUT: %impl.elem3: %.5d5 = impl_witness_access constants.%Iterate.impl_witness.52a, element3 [concrete = constants.%Next.899] // CHECK:STDOUT: %bound_method.loc12_40.3: = bound_method %.loc12_39.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc12_40.2: = specific_function %impl.elem3, @Next.1(constants.%C) [concrete = constants.%Next.specific_fn] // CHECK:STDOUT: %bound_method.loc12_40.4: = bound_method %.loc12_39.2, %specific_fn.loc12_40.2 // CHECK:STDOUT: %.loc12_40.1: ref %Optional.cf0 = temporary_storage // CHECK:STDOUT: %.loc12_39.4: %EmptyRange.cc8 = bind_value %.loc12_39.2 -// CHECK:STDOUT: %Next.call: init %Optional.cf0 = call %bound_method.loc12_40.4(%.loc12_39.4, %addr.loc12) to %.loc12_40.1 +// CHECK:STDOUT: %Next.call: init %Optional.cf0 = call %bound_method.loc12_40.4(%.loc12_39.4, %addr.loc12_40.1) to %.loc12_40.1 // CHECK:STDOUT: %.loc12_40.2: ref %Optional.cf0 = temporary %.loc12_40.1, %Next.call // CHECK:STDOUT: %.loc12_40.3: %HasValue.type.71d = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%C) [concrete = constants.%HasValue.513] // CHECK:STDOUT: %HasValue.ref: %HasValue.type.71d = name_ref HasValue, %.loc12_40.3 [concrete = constants.%HasValue.513] @@ -448,9 +450,9 @@ fn Run() { // CHECK:STDOUT: %Get.bound: = bound_method %.loc12_40.2, %Get.ref // CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%C) [concrete = constants.%Get.specific_fn] // CHECK:STDOUT: %bound_method.loc12_40.6: = bound_method %.loc12_40.2, %Get.specific_fn -// CHECK:STDOUT: %.loc12_8.1: ref %C = splice_block %c.var {} +// CHECK:STDOUT: %.loc12_8: ref %C = splice_block %c.var {} // CHECK:STDOUT: %.loc12_40.8: %Optional.cf0 = bind_value %.loc12_40.2 -// CHECK:STDOUT: %Get.call: init %C = call %bound_method.loc12_40.6(%.loc12_40.8) to %.loc12_8.1 +// CHECK:STDOUT: %Get.call: init %C = call %bound_method.loc12_40.6(%.loc12_40.8) to %.loc12_8 // CHECK:STDOUT: assign %c.var, %Get.call // CHECK:STDOUT: %C.ref.loc12_15: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var @@ -462,36 +464,35 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !for.done: // CHECK:STDOUT: %impl.elem0.loc12_8.1: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] -// CHECK:STDOUT: %bound_method.loc12_8.1: = bound_method %.loc12_8.1, %impl.elem0.loc12_8.1 +// CHECK:STDOUT: %bound_method.loc12_8.1: = bound_method %.loc12_8, %impl.elem0.loc12_8.1 // CHECK:STDOUT: %specific_fn.loc12_8.1: = specific_function %impl.elem0.loc12_8.1, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc12_8.2: = bound_method %.loc12_8.1, %specific_fn.loc12_8.1 -// CHECK:STDOUT: %.loc12_8.2: %C = bind_value %.loc12_8.1 -// CHECK:STDOUT: %no_op.loc12_8.1: init %empty_tuple.type = call %bound_method.loc12_8.2(%.loc12_8.2) +// CHECK:STDOUT: %bound_method.loc12_8.2: = bound_method %.loc12_8, %specific_fn.loc12_8.1 +// CHECK:STDOUT: %addr.loc12_8.1: %ptr.019 = addr_of %.loc12_8 +// CHECK:STDOUT: %no_op.loc12_8.1: init %empty_tuple.type = call %bound_method.loc12_8.2(%addr.loc12_8.1) // CHECK:STDOUT: %impl.elem0.loc12_8.2: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] // CHECK:STDOUT: %bound_method.loc12_8.3: = bound_method %c.var, %impl.elem0.loc12_8.2 // CHECK:STDOUT: %specific_fn.loc12_8.2: = specific_function %impl.elem0.loc12_8.2, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] // CHECK:STDOUT: %bound_method.loc12_8.4: = bound_method %c.var, %specific_fn.loc12_8.2 -// CHECK:STDOUT: %.loc12_8.3: %C = bind_value %c.var -// CHECK:STDOUT: %no_op.loc12_8.2: init %empty_tuple.type = call %bound_method.loc12_8.4(%.loc12_8.3) +// CHECK:STDOUT: %addr.loc12_8.2: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc12_8.2: init %empty_tuple.type = call %bound_method.loc12_8.4(%addr.loc12_8.2) // CHECK:STDOUT: %impl.elem0.loc12_40.1: %.1f9 = impl_witness_access constants.%Destroy.impl_witness.b11, element0 [concrete = constants.%Op.3e8] // CHECK:STDOUT: %bound_method.loc12_40.7: = bound_method %.loc12_40.1, %impl.elem0.loc12_40.1 // CHECK:STDOUT: %specific_fn.loc12_40.3: = specific_function %impl.elem0.loc12_40.1, @Op.2(constants.%Optional.cf0) [concrete = constants.%Op.specific_fn.273] // CHECK:STDOUT: %bound_method.loc12_40.8: = bound_method %.loc12_40.1, %specific_fn.loc12_40.3 -// CHECK:STDOUT: %.loc12_40.9: %Optional.cf0 = bind_value %.loc12_40.1 -// CHECK:STDOUT: %no_op.loc12_40.1: init %empty_tuple.type = call %bound_method.loc12_40.8(%.loc12_40.9) +// CHECK:STDOUT: %addr.loc12_40.2: %ptr.8e6 = addr_of %.loc12_40.1 +// CHECK:STDOUT: %no_op.loc12_40.1: init %empty_tuple.type = call %bound_method.loc12_40.8(%addr.loc12_40.2) // CHECK:STDOUT: %impl.elem0.loc12_40.2: %.9da = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.d5a] // CHECK:STDOUT: %bound_method.loc12_40.9: = bound_method %var, %impl.elem0.loc12_40.2 // CHECK:STDOUT: %specific_fn.loc12_40.4: = specific_function %impl.elem0.loc12_40.2, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn.652] // CHECK:STDOUT: %bound_method.loc12_40.10: = bound_method %var, %specific_fn.loc12_40.4 -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc12_40.10: %empty_struct_type = converted %var, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op.loc12_40.2: init %empty_tuple.type = call %bound_method.loc12_40.10(%.loc12_40.10) +// CHECK:STDOUT: %addr.loc12_40.3: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %no_op.loc12_40.2: init %empty_tuple.type = call %bound_method.loc12_40.10(%addr.loc12_40.3) // CHECK:STDOUT: %impl.elem0.loc12_39: %.053 = impl_witness_access constants.%Destroy.impl_witness.506, element0 [concrete = constants.%Op.929] // CHECK:STDOUT: %bound_method.loc12_39.1: = bound_method %.loc12_39.1, %impl.elem0.loc12_39 // CHECK:STDOUT: %specific_fn.loc12_39: = specific_function %impl.elem0.loc12_39, @Op.2(constants.%EmptyRange.cc8) [concrete = constants.%Op.specific_fn.a14] // CHECK:STDOUT: %bound_method.loc12_39.2: = bound_method %.loc12_39.1, %specific_fn.loc12_39 -// CHECK:STDOUT: %.loc12_39.5: %EmptyRange.cc8 = bind_value %.loc12_39.1 -// CHECK:STDOUT: %no_op.loc12_39: init %empty_tuple.type = call %bound_method.loc12_39.2(%.loc12_39.5) +// CHECK:STDOUT: %addr.loc12_39: %ptr.35d = addr_of %.loc12_39.1 +// CHECK:STDOUT: %no_op.loc12_39: init %empty_tuple.type = call %bound_method.loc12_39.2(%addr.loc12_39) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -544,6 +545,7 @@ fn Run() { // CHECK:STDOUT: %HasValue.4f9: %HasValue.type.414 = struct_value () [concrete] // CHECK:STDOUT: %Get.type.ebd: type = fn_type @Get, @Optional(%tuple.type.784) [concrete] // CHECK:STDOUT: %Get.d99: %Get.type.ebd = struct_value () [concrete] +// CHECK:STDOUT: %ptr.b85: type = ptr_type %tuple.type.784 [concrete] // CHECK:STDOUT: %HasValue.specific_fn: = specific_function %HasValue.4f9, @HasValue(%tuple.type.784) [concrete] // CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.d99, @Get(%tuple.type.784) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -559,6 +561,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.4bb: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Optional.79e) [concrete] // CHECK:STDOUT: %Op.type.e76: type = fn_type @Op.2, @impl.49c(%Optional.79e) [concrete] // CHECK:STDOUT: %Op.d99: %Op.type.e76 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.07d: type = ptr_type %Optional.79e [concrete] // CHECK:STDOUT: %Destroy.facet.a9b: %Destroy.type = facet_value %Optional.79e, (%Destroy.impl_witness.4bb) [concrete] // CHECK:STDOUT: %.447: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.a9b [concrete] // CHECK:STDOUT: %Op.specific_fn.e8f: = specific_function %Op.d99, @Op.2(%Optional.79e) [concrete] @@ -568,10 +571,10 @@ fn Run() { // CHECK:STDOUT: %Destroy.facet.e2f: %Destroy.type = facet_value %empty_struct_type, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.9da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.e2f [concrete] // CHECK:STDOUT: %Op.specific_fn.652: = specific_function %Op.d5a, @Op.2(%empty_struct_type) [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.3df: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%EmptyRange.2f3) [concrete] // CHECK:STDOUT: %Op.type.055: type = fn_type @Op.2, @impl.49c(%EmptyRange.2f3) [concrete] // CHECK:STDOUT: %Op.74c: %Op.type.055 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5cf: type = ptr_type %EmptyRange.2f3 [concrete] // CHECK:STDOUT: %Destroy.facet.f26: %Destroy.type = facet_value %EmptyRange.2f3, (%Destroy.impl_witness.3df) [concrete] // CHECK:STDOUT: %.222: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.f26 [concrete] // CHECK:STDOUT: %Op.specific_fn.cd5: = specific_function %Op.74c, @Op.2(%EmptyRange.2f3) [concrete] @@ -587,7 +590,7 @@ fn Run() { // CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @impl.86e [concrete] // CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] // CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -625,14 +628,14 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %addr.loc10_61.1: %ptr.c28 = addr_of %var // CHECK:STDOUT: %impl.elem3: %.6aa = impl_witness_access constants.%Iterate.impl_witness.6db, element3 [concrete = constants.%Next.e60] // CHECK:STDOUT: %bound_method.loc10_61.3: = bound_method %.loc10_60.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc10_61.2: = specific_function %impl.elem3, @Next.1(constants.%tuple.type.784) [concrete = constants.%Next.specific_fn] // CHECK:STDOUT: %bound_method.loc10_61.4: = bound_method %.loc10_60.2, %specific_fn.loc10_61.2 // CHECK:STDOUT: %.loc10_61.1: ref %Optional.79e = temporary_storage // CHECK:STDOUT: %.loc10_60.4: %EmptyRange.2f3 = bind_value %.loc10_60.2 -// CHECK:STDOUT: %Next.call: init %Optional.79e = call %bound_method.loc10_61.4(%.loc10_60.4, %addr) to %.loc10_61.1 +// CHECK:STDOUT: %Next.call: init %Optional.79e = call %bound_method.loc10_61.4(%.loc10_60.4, %addr.loc10_61.1) to %.loc10_61.1 // CHECK:STDOUT: %.loc10_61.2: ref %Optional.79e = temporary %.loc10_61.1, %Next.call // CHECK:STDOUT: %.loc10_61.3: %HasValue.type.414 = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%tuple.type.784) [concrete = constants.%HasValue.4f9] // CHECK:STDOUT: %HasValue.ref: %HasValue.type.414 = name_ref HasValue, %.loc10_61.3 [concrete = constants.%HasValue.4f9] @@ -655,21 +658,21 @@ fn Run() { // CHECK:STDOUT: %.loc10_61.9: %Optional.79e = bind_value %.loc10_61.2 // CHECK:STDOUT: %Get.call: init %tuple.type.784 = call %bound_method.loc10_61.6(%.loc10_61.9) to %.loc10_61.8 // CHECK:STDOUT: %.loc10_61.10: ref %tuple.type.784 = temporary %.loc10_61.8, %Get.call -// CHECK:STDOUT: %tuple.elem0.loc10_61.1: ref bool = tuple_access %.loc10_61.10, element0 -// CHECK:STDOUT: %tuple.elem1.loc10_61.1: ref bool = tuple_access %.loc10_61.10, element1 +// CHECK:STDOUT: %tuple.elem0: ref bool = tuple_access %.loc10_61.10, element0 +// CHECK:STDOUT: %tuple.elem1: ref bool = tuple_access %.loc10_61.10, element1 // CHECK:STDOUT: %.loc10_12.1: type = splice_block %.loc10_12.3 [concrete = bool] { // CHECK:STDOUT: %bool.make_type.loc10_12: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc10_12.2: type = value_of_initializer %bool.make_type.loc10_12 [concrete = bool] // CHECK:STDOUT: %.loc10_12.3: type = converted %bool.make_type.loc10_12, %.loc10_12.2 [concrete = bool] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc10_61.11: bool = bind_value %tuple.elem0.loc10_61.1 +// CHECK:STDOUT: %.loc10_61.11: bool = bind_value %tuple.elem0 // CHECK:STDOUT: %a: bool = bind_name a, %.loc10_61.11 // CHECK:STDOUT: %.loc10_21.1: type = splice_block %.loc10_21.3 [concrete = bool] { // CHECK:STDOUT: %bool.make_type.loc10_21: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc10_21.2: type = value_of_initializer %bool.make_type.loc10_21 [concrete = bool] // CHECK:STDOUT: %.loc10_21.3: type = converted %bool.make_type.loc10_21, %.loc10_21.2 [concrete = bool] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc10_61.12: bool = bind_value %tuple.elem1.loc10_61.1 +// CHECK:STDOUT: %.loc10_61.12: bool = bind_value %tuple.elem1 // CHECK:STDOUT: %b: bool = bind_name b, %.loc10_61.12 // CHECK:STDOUT: %Body.ref: %Body.type = name_ref Body, file.%Body.decl [concrete = constants.%Body] // CHECK:STDOUT: %a.ref: bool = name_ref a, %a @@ -682,32 +685,26 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc10_61.7: = bound_method %.loc10_61.8, %impl.elem0.loc10_61.1 // CHECK:STDOUT: %specific_fn.loc10_61.3: = specific_function %impl.elem0.loc10_61.1, @Op.2(constants.%tuple.type.784) [concrete = constants.%Op.specific_fn.10e] // CHECK:STDOUT: %bound_method.loc10_61.8: = bound_method %.loc10_61.8, %specific_fn.loc10_61.3 -// CHECK:STDOUT: %tuple.elem0.loc10_61.2: ref bool = tuple_access %.loc10_61.8, element0 -// CHECK:STDOUT: %.loc10_61.13: bool = bind_value %tuple.elem0.loc10_61.2 -// CHECK:STDOUT: %tuple.elem1.loc10_61.2: ref bool = tuple_access %.loc10_61.8, element1 -// CHECK:STDOUT: %.loc10_61.14: bool = bind_value %tuple.elem1.loc10_61.2 -// CHECK:STDOUT: %tuple: %tuple.type.784 = tuple_value (%.loc10_61.13, %.loc10_61.14) -// CHECK:STDOUT: %.loc10_61.15: %tuple.type.784 = converted %.loc10_61.8, %tuple -// CHECK:STDOUT: %no_op.loc10_61.1: init %empty_tuple.type = call %bound_method.loc10_61.8(%.loc10_61.15) +// CHECK:STDOUT: %addr.loc10_61.2: %ptr.b85 = addr_of %.loc10_61.8 +// CHECK:STDOUT: %no_op.loc10_61.1: init %empty_tuple.type = call %bound_method.loc10_61.8(%addr.loc10_61.2) // CHECK:STDOUT: %impl.elem0.loc10_61.2: %.447 = impl_witness_access constants.%Destroy.impl_witness.4bb, element0 [concrete = constants.%Op.d99] // CHECK:STDOUT: %bound_method.loc10_61.9: = bound_method %.loc10_61.1, %impl.elem0.loc10_61.2 // CHECK:STDOUT: %specific_fn.loc10_61.4: = specific_function %impl.elem0.loc10_61.2, @Op.2(constants.%Optional.79e) [concrete = constants.%Op.specific_fn.e8f] // CHECK:STDOUT: %bound_method.loc10_61.10: = bound_method %.loc10_61.1, %specific_fn.loc10_61.4 -// CHECK:STDOUT: %.loc10_61.16: %Optional.79e = bind_value %.loc10_61.1 -// CHECK:STDOUT: %no_op.loc10_61.2: init %empty_tuple.type = call %bound_method.loc10_61.10(%.loc10_61.16) +// CHECK:STDOUT: %addr.loc10_61.3: %ptr.07d = addr_of %.loc10_61.1 +// CHECK:STDOUT: %no_op.loc10_61.2: init %empty_tuple.type = call %bound_method.loc10_61.10(%addr.loc10_61.3) // CHECK:STDOUT: %impl.elem0.loc10_61.3: %.9da = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.d5a] // CHECK:STDOUT: %bound_method.loc10_61.11: = bound_method %var, %impl.elem0.loc10_61.3 // CHECK:STDOUT: %specific_fn.loc10_61.5: = specific_function %impl.elem0.loc10_61.3, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn.652] // CHECK:STDOUT: %bound_method.loc10_61.12: = bound_method %var, %specific_fn.loc10_61.5 -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc10_61.17: %empty_struct_type = converted %var, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op.loc10_61.3: init %empty_tuple.type = call %bound_method.loc10_61.12(%.loc10_61.17) +// CHECK:STDOUT: %addr.loc10_61.4: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %no_op.loc10_61.3: init %empty_tuple.type = call %bound_method.loc10_61.12(%addr.loc10_61.4) // CHECK:STDOUT: %impl.elem0.loc10_60: %.222 = impl_witness_access constants.%Destroy.impl_witness.3df, element0 [concrete = constants.%Op.74c] // CHECK:STDOUT: %bound_method.loc10_60.1: = bound_method %.loc10_60.1, %impl.elem0.loc10_60 // CHECK:STDOUT: %specific_fn.loc10_60: = specific_function %impl.elem0.loc10_60, @Op.2(constants.%EmptyRange.2f3) [concrete = constants.%Op.specific_fn.cd5] // CHECK:STDOUT: %bound_method.loc10_60.2: = bound_method %.loc10_60.1, %specific_fn.loc10_60 -// CHECK:STDOUT: %.loc10_60.5: %EmptyRange.2f3 = bind_value %.loc10_60.1 -// CHECK:STDOUT: %no_op.loc10_60: init %empty_tuple.type = call %bound_method.loc10_60.2(%.loc10_60.5) +// CHECK:STDOUT: %addr.loc10_60: %ptr.5cf = addr_of %.loc10_60.1 +// CHECK:STDOUT: %no_op.loc10_60: init %empty_tuple.type = call %bound_method.loc10_60.2(%addr.loc10_60) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -768,12 +765,14 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.7aa: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%tuple.type.56b) [concrete] // CHECK:STDOUT: %Op.type.12e: type = fn_type @Op.2, @impl.49c(%tuple.type.56b) [concrete] // CHECK:STDOUT: %Op.34b: %Op.type.12e = struct_value () [concrete] +// CHECK:STDOUT: %ptr.9f0: type = ptr_type %tuple.type.56b [concrete] // CHECK:STDOUT: %Destroy.facet.5ce: %Destroy.type = facet_value %tuple.type.56b, (%Destroy.impl_witness.7aa) [concrete] // CHECK:STDOUT: %.874: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5ce [concrete] // CHECK:STDOUT: %Op.specific_fn.50d: = specific_function %Op.34b, @Op.2(%tuple.type.56b) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.d9c: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Optional.657) [concrete] // CHECK:STDOUT: %Op.type.e9f: type = fn_type @Op.2, @impl.49c(%Optional.657) [concrete] // CHECK:STDOUT: %Op.5c4: %Op.type.e9f = struct_value () [concrete] +// CHECK:STDOUT: %ptr.036: type = ptr_type %Optional.657 [concrete] // CHECK:STDOUT: %Destroy.facet.8a2: %Destroy.type = facet_value %Optional.657, (%Destroy.impl_witness.d9c) [concrete] // CHECK:STDOUT: %.0d9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.8a2 [concrete] // CHECK:STDOUT: %Op.specific_fn.068: = specific_function %Op.5c4, @Op.2(%Optional.657) [concrete] @@ -783,10 +782,10 @@ fn Run() { // CHECK:STDOUT: %Destroy.facet.e2f: %Destroy.type = facet_value %empty_struct_type, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.9da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.e2f [concrete] // CHECK:STDOUT: %Op.specific_fn.652: = specific_function %Op.d5a, @Op.2(%empty_struct_type) [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.7c5: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%EmptyRange.90a) [concrete] // CHECK:STDOUT: %Op.type.8c3: type = fn_type @Op.2, @impl.49c(%EmptyRange.90a) [concrete] // CHECK:STDOUT: %Op.85b: %Op.type.8c3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.f9b: type = ptr_type %EmptyRange.90a [concrete] // CHECK:STDOUT: %Destroy.facet.06e: %Destroy.type = facet_value %EmptyRange.90a, (%Destroy.impl_witness.7c5) [concrete] // CHECK:STDOUT: %.2da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.06e [concrete] // CHECK:STDOUT: %Op.specific_fn.bc1: = specific_function %Op.85b, @Op.2(%EmptyRange.90a) [concrete] @@ -802,7 +801,7 @@ fn Run() { // CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.6ce, %Main.import_ref.999, %Main.import_ref.57b, %Main.import_ref.170), @impl.86e [concrete] // CHECK:STDOUT: %Main.import_ref.7f9: @Optional.%HasValue.type (%HasValue.type.f81) = import_ref Main//empty_range, inst136 [indirect], loaded [symbolic = @Optional.%HasValue (constants.%HasValue.6fd)] // CHECK:STDOUT: %Main.import_ref.d10: @Optional.%Get.type (%Get.type.b8f) = import_ref Main//empty_range, inst137 [indirect], loaded [symbolic = @Optional.%Get (constants.%Get.9c8)] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -836,14 +835,14 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %addr.loc12_49.1: %ptr.c28 = addr_of %var // CHECK:STDOUT: %impl.elem3: %.8d0 = impl_witness_access constants.%Iterate.impl_witness.627, element3 [concrete = constants.%Next.852] // CHECK:STDOUT: %bound_method.loc12_49.3: = bound_method %.loc12_48.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc12_49.2: = specific_function %impl.elem3, @Next.1(constants.%tuple.type.56b) [concrete = constants.%Next.specific_fn] // CHECK:STDOUT: %bound_method.loc12_49.4: = bound_method %.loc12_48.2, %specific_fn.loc12_49.2 // CHECK:STDOUT: %.loc12_49.1: ref %Optional.657 = temporary_storage // CHECK:STDOUT: %.loc12_48.4: %EmptyRange.90a = bind_value %.loc12_48.2 -// CHECK:STDOUT: %Next.call: init %Optional.657 = call %bound_method.loc12_49.4(%.loc12_48.4, %addr) to %.loc12_49.1 +// CHECK:STDOUT: %Next.call: init %Optional.657 = call %bound_method.loc12_49.4(%.loc12_48.4, %addr.loc12_49.1) to %.loc12_49.1 // CHECK:STDOUT: %.loc12_49.2: ref %Optional.657 = temporary %.loc12_49.1, %Next.call // CHECK:STDOUT: %.loc12_49.3: %HasValue.type.2f1 = specific_constant imports.%Main.import_ref.7f9, @Optional(constants.%tuple.type.56b) [concrete = constants.%HasValue.bef] // CHECK:STDOUT: %HasValue.ref: %HasValue.type.2f1 = name_ref HasValue, %.loc12_49.3 [concrete = constants.%HasValue.bef] @@ -866,13 +865,13 @@ fn Run() { // CHECK:STDOUT: %.loc12_49.9: %Optional.657 = bind_value %.loc12_49.2 // CHECK:STDOUT: %Get.call: init %tuple.type.56b = call %bound_method.loc12_49.6(%.loc12_49.9) to %.loc12_49.8 // CHECK:STDOUT: %.loc12_49.10: ref %tuple.type.56b = temporary %.loc12_49.8, %Get.call -// CHECK:STDOUT: %tuple.elem0.loc12_49.1: ref %C = tuple_access %.loc12_49.10, element0 -// CHECK:STDOUT: %tuple.elem1.loc12_49.1: ref %C = tuple_access %.loc12_49.10, element1 +// CHECK:STDOUT: %tuple.elem0: ref %C = tuple_access %.loc12_49.10, element0 +// CHECK:STDOUT: %tuple.elem1: ref %C = tuple_access %.loc12_49.10, element1 // CHECK:STDOUT: %C.ref.loc12_12: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc12_49.11: %C = bind_value %tuple.elem0.loc12_49.1 +// CHECK:STDOUT: %.loc12_49.11: %C = bind_value %tuple.elem0 // CHECK:STDOUT: %a: %C = bind_name a, %.loc12_49.11 // CHECK:STDOUT: %C.ref.loc12_18: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %.loc12_49.12: %C = bind_value %tuple.elem1.loc12_49.1 +// CHECK:STDOUT: %.loc12_49.12: %C = bind_value %tuple.elem1 // CHECK:STDOUT: %b: %C = bind_name b, %.loc12_49.12 // CHECK:STDOUT: %Body.ref: %Body.type = name_ref Body, file.%Body.decl [concrete = constants.%Body] // CHECK:STDOUT: %a.ref: %C = name_ref a, %a @@ -885,32 +884,26 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc12_49.7: = bound_method %.loc12_49.8, %impl.elem0.loc12_49.1 // CHECK:STDOUT: %specific_fn.loc12_49.3: = specific_function %impl.elem0.loc12_49.1, @Op.2(constants.%tuple.type.56b) [concrete = constants.%Op.specific_fn.50d] // CHECK:STDOUT: %bound_method.loc12_49.8: = bound_method %.loc12_49.8, %specific_fn.loc12_49.3 -// CHECK:STDOUT: %tuple.elem0.loc12_49.2: ref %C = tuple_access %.loc12_49.8, element0 -// CHECK:STDOUT: %.loc12_49.13: %C = bind_value %tuple.elem0.loc12_49.2 -// CHECK:STDOUT: %tuple.elem1.loc12_49.2: ref %C = tuple_access %.loc12_49.8, element1 -// CHECK:STDOUT: %.loc12_49.14: %C = bind_value %tuple.elem1.loc12_49.2 -// CHECK:STDOUT: %tuple: %tuple.type.56b = tuple_value (%.loc12_49.13, %.loc12_49.14) -// CHECK:STDOUT: %.loc12_49.15: %tuple.type.56b = converted %.loc12_49.8, %tuple -// CHECK:STDOUT: %no_op.loc12_49.1: init %empty_tuple.type = call %bound_method.loc12_49.8(%.loc12_49.15) +// CHECK:STDOUT: %addr.loc12_49.2: %ptr.9f0 = addr_of %.loc12_49.8 +// CHECK:STDOUT: %no_op.loc12_49.1: init %empty_tuple.type = call %bound_method.loc12_49.8(%addr.loc12_49.2) // CHECK:STDOUT: %impl.elem0.loc12_49.2: %.0d9 = impl_witness_access constants.%Destroy.impl_witness.d9c, element0 [concrete = constants.%Op.5c4] // CHECK:STDOUT: %bound_method.loc12_49.9: = bound_method %.loc12_49.1, %impl.elem0.loc12_49.2 // CHECK:STDOUT: %specific_fn.loc12_49.4: = specific_function %impl.elem0.loc12_49.2, @Op.2(constants.%Optional.657) [concrete = constants.%Op.specific_fn.068] // CHECK:STDOUT: %bound_method.loc12_49.10: = bound_method %.loc12_49.1, %specific_fn.loc12_49.4 -// CHECK:STDOUT: %.loc12_49.16: %Optional.657 = bind_value %.loc12_49.1 -// CHECK:STDOUT: %no_op.loc12_49.2: init %empty_tuple.type = call %bound_method.loc12_49.10(%.loc12_49.16) +// CHECK:STDOUT: %addr.loc12_49.3: %ptr.036 = addr_of %.loc12_49.1 +// CHECK:STDOUT: %no_op.loc12_49.2: init %empty_tuple.type = call %bound_method.loc12_49.10(%addr.loc12_49.3) // CHECK:STDOUT: %impl.elem0.loc12_49.3: %.9da = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.d5a] // CHECK:STDOUT: %bound_method.loc12_49.11: = bound_method %var, %impl.elem0.loc12_49.3 // CHECK:STDOUT: %specific_fn.loc12_49.5: = specific_function %impl.elem0.loc12_49.3, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn.652] // CHECK:STDOUT: %bound_method.loc12_49.12: = bound_method %var, %specific_fn.loc12_49.5 -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc12_49.17: %empty_struct_type = converted %var, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op.loc12_49.3: init %empty_tuple.type = call %bound_method.loc12_49.12(%.loc12_49.17) +// CHECK:STDOUT: %addr.loc12_49.4: %ptr.c28 = addr_of %var +// CHECK:STDOUT: %no_op.loc12_49.3: init %empty_tuple.type = call %bound_method.loc12_49.12(%addr.loc12_49.4) // CHECK:STDOUT: %impl.elem0.loc12_48: %.2da = impl_witness_access constants.%Destroy.impl_witness.7c5, element0 [concrete = constants.%Op.85b] // CHECK:STDOUT: %bound_method.loc12_48.1: = bound_method %.loc12_48.1, %impl.elem0.loc12_48 // CHECK:STDOUT: %specific_fn.loc12_48: = specific_function %impl.elem0.loc12_48, @Op.2(constants.%EmptyRange.90a) [concrete = constants.%Op.specific_fn.bc1] // CHECK:STDOUT: %bound_method.loc12_48.2: = bound_method %.loc12_48.1, %specific_fn.loc12_48 -// CHECK:STDOUT: %.loc12_48.5: %EmptyRange.90a = bind_value %.loc12_48.1 -// CHECK:STDOUT: %no_op.loc12_48: init %empty_tuple.type = call %bound_method.loc12_48.2(%.loc12_48.5) +// CHECK:STDOUT: %addr.loc12_48: %ptr.f9b = addr_of %.loc12_48.1 +// CHECK:STDOUT: %no_op.loc12_48: init %empty_tuple.type = call %bound_method.loc12_48.2(%addr.loc12_48) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/alias.carbon b/toolchain/check/testdata/function/call/alias.carbon index 642158b51c6e..bbc90084ea97 100644 --- a/toolchain/check/testdata/function/call/alias.carbon +++ b/toolchain/check/testdata/function/call/alias.carbon @@ -38,6 +38,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -50,7 +51,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -103,9 +104,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %b.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %b.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc20_3: %empty_tuple.type = converted %b.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %b.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/fail_not_callable.carbon b/toolchain/check/testdata/function/call/fail_not_callable.carbon index 32d3053a9caa..fc991e83af57 100644 --- a/toolchain/check/testdata/function/call/fail_not_callable.carbon +++ b/toolchain/check/testdata/function/call/fail_not_callable.carbon @@ -39,6 +39,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.2(%i32) [concrete] @@ -53,7 +54,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -75,7 +76,7 @@ fn Run() { // CHECK:STDOUT: %x.var: ref %i32 = var %x.var_patt // CHECK:STDOUT: %str: String = string_literal "hello" [concrete = constants.%str] // CHECK:STDOUT: assign %x.var, -// CHECK:STDOUT: %.loc19_10: type = splice_block %i32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc19: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -84,8 +85,8 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc19_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc19_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %.loc19_3: %i32 = bind_value %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_3.2(%.loc19_3) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon index 3c91de1ab018..43cd371d0014 100644 --- a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon +++ b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon @@ -53,6 +53,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -71,7 +72,7 @@ fn Run() { // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -111,7 +112,7 @@ fn Run() { // CHECK:STDOUT: %x.var: ref %i32 = var %x.var_patt // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %Foo.call: init f64 = call %Foo.ref() -// CHECK:STDOUT: %.loc25_3.1: %i32 = converted %Foo.call, [concrete = ] +// CHECK:STDOUT: %.loc25_3: %i32 = converted %Foo.call, [concrete = ] // CHECK:STDOUT: assign %x.var, // CHECK:STDOUT: %.loc25_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -122,8 +123,8 @@ fn Run() { // CHECK:STDOUT: %bound_method.loc25_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc25_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %.loc25_3.2: %i32 = bind_value %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc25_3.2(%.loc25_3.2) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc25_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index a47b0f91ac35..4b3e76ac76fc 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -58,6 +58,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -76,7 +77,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -140,8 +141,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %b.var, %impl.elem0.loc20_3 // CHECK:STDOUT: %specific_fn.loc20_3: = specific_function %impl.elem0.loc20_3, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %b.var, %specific_fn.loc20_3 -// CHECK:STDOUT: %.loc20_3: %i32 = bind_value %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %b.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/more_param_ir.carbon b/toolchain/check/testdata/function/call/more_param_ir.carbon index 2e404940b1fc..5f82d6bbadee 100644 --- a/toolchain/check/testdata/function/call/more_param_ir.carbon +++ b/toolchain/check/testdata/function/call/more_param_ir.carbon @@ -68,6 +68,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.088: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%tuple.type.a1c) [concrete] // CHECK:STDOUT: %Op.type.438: type = fn_type @Op.3, @impl.49c(%tuple.type.a1c) [concrete] // CHECK:STDOUT: %Op.c8e: %Op.type.438 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.0b7: type = ptr_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.a1c, (%Destroy.impl_witness.088) [concrete] // CHECK:STDOUT: %.6a9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.c8e, @Op.3(%tuple.type.a1c) [concrete] @@ -86,7 +87,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -140,8 +141,8 @@ fn Main() { // CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %bound_method.loc18_22.2(%int_1) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_22.2: init %i32 = converted %int_1, %int.convert_checked.loc18 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc18_22.3: init %tuple.type.a1c = tuple_init (%.loc18_22.2) to %x.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc18_3.1: init %tuple.type.a1c = converted %.loc18_22.1, %.loc18_22.3 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %x.var, %.loc18_3.1 +// CHECK:STDOUT: %.loc18_3: init %tuple.type.a1c = converted %.loc18_22.1, %.loc18_22.3 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %x.var, %.loc18_3 // CHECK:STDOUT: %.loc18_15.1: type = splice_block %.loc18_15.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -152,9 +153,9 @@ fn Main() { // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo] // CHECK:STDOUT: %x.ref: ref %tuple.type.a1c = name_ref x, %x // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %tuple.elem0.loc20: ref %i32 = tuple_access %x.ref, element0 +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %x.ref, element0 // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] -// CHECK:STDOUT: %.loc20_8: %i32 = bind_value %tuple.elem0.loc20 +// CHECK:STDOUT: %.loc20_8: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc20_12.1: = bound_method %int_6, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ce9] // CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] @@ -167,11 +168,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %x.var, %impl.elem0.loc18_3 // CHECK:STDOUT: %specific_fn.loc18_3: = specific_function %impl.elem0.loc18_3, @Op.3(constants.%tuple.type.a1c) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %x.var, %specific_fn.loc18_3 -// CHECK:STDOUT: %tuple.elem0.loc18: ref %i32 = tuple_access %x.var, element0 -// CHECK:STDOUT: %.loc18_3.2: %i32 = bind_value %tuple.elem0.loc18 -// CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%.loc18_3.2) -// CHECK:STDOUT: %.loc18_3.3: %tuple.type.a1c = converted %x.var, %tuple -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.3) +// CHECK:STDOUT: %addr: %ptr.0b7 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/return_implicit.carbon b/toolchain/check/testdata/function/call/return_implicit.carbon index 3426ba4d0c99..b4573a402c8b 100644 --- a/toolchain/check/testdata/function/call/return_implicit.carbon +++ b/toolchain/check/testdata/function/call/return_implicit.carbon @@ -36,10 +36,10 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -49,7 +49,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -88,9 +88,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc19_3.1: = bound_method %b.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc19_3.2: = bound_method %b.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc19_3: %empty_tuple.type = converted %b.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_3.2(%.loc19_3) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %b.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc19_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon index 319d359490b5..59289beda598 100644 --- a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon @@ -208,7 +208,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %ReturnDUnused: %ReturnDUnused.type = struct_value () [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %ReturnDUsed.type: type = fn_type @ReturnDUsed [concrete] // CHECK:STDOUT: %ReturnDUsed: %ReturnDUsed.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -219,6 +219,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %Destroy.impl_witness.45e: = impl_witness imports.%Destroy.impl_witness_table, @impl(%D) [concrete] // CHECK:STDOUT: %Op.type.548: type = fn_type @Op.2, @impl(%D) [concrete] // CHECK:STDOUT: %Op.2d4: %Op.type.548 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %D, (%Destroy.impl_witness.45e) [concrete] // CHECK:STDOUT: %.64e: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.2d4, @Op.2(%D) [concrete] @@ -237,10 +238,10 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//incomplete_return, loc37_10, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//incomplete_return, loc37_10, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//incomplete_return, inst20 [no loc], unloaded // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,14 +289,14 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %bound_method.loc34_15.1: = bound_method %.loc34_15.1, %impl.elem0.loc34 // CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc34_15.2: = bound_method %.loc34_15.1, %specific_fn.loc34 -// CHECK:STDOUT: %.loc34_15.3: %D = bind_value %.loc34_15.1 -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_15.2(%.loc34_15.3) +// CHECK:STDOUT: %addr.loc34: %ptr.19c = addr_of %.loc34_15.1 +// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_15.2(%addr.loc34) // CHECK:STDOUT: %impl.elem0.loc33: %.64e = impl_witness_access constants.%Destroy.impl_witness.45e, element0 [concrete = constants.%Op.2d4] // CHECK:STDOUT: %bound_method.loc33_17.1: = bound_method %.loc33_17.1, %impl.elem0.loc33 // CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Op.2(constants.%D) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc33_17.2: = bound_method %.loc33_17.1, %specific_fn.loc33 -// CHECK:STDOUT: %.loc33_17.3: %D = bind_value %.loc33_17.1 -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_17.2(%.loc33_17.3) +// CHECK:STDOUT: %addr.loc33: %ptr.19c = addr_of %.loc33_17.1 +// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_17.2(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/fail_local_decl.carbon b/toolchain/check/testdata/function/definition/fail_local_decl.carbon index 59084ef695f4..28e3e4c4ab31 100644 --- a/toolchain/check/testdata/function/definition/fail_local_decl.carbon +++ b/toolchain/check/testdata/function/definition/fail_local_decl.carbon @@ -110,10 +110,10 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.eb8: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %Op.type.069: type = fn_type @Op.2, @impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %Op.d5a: %Op.type.069 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_struct_type, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.9da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d5a, @Op.2(%empty_struct_type) [concrete] -// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -123,7 +123,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -162,16 +162,14 @@ fn F() { // CHECK:STDOUT: %bound_method.loc14_13.1: = bound_method %w.var, %impl.elem0.loc14 // CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc14_13.2: = bound_method %w.var, %specific_fn.loc14 -// CHECK:STDOUT: %empty_struct.loc14: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc14_13: %empty_struct_type = converted %w.var, %empty_struct.loc14 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_13.2(%.loc14_13) +// CHECK:STDOUT: %addr.loc14: %ptr.c28 = addr_of %w.var +// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_13.2(%addr.loc14) // CHECK:STDOUT: %impl.elem0.loc9: %.9da = impl_witness_access constants.%Destroy.impl_witness.eb8, element0 [concrete = constants.%Op.d5a] // CHECK:STDOUT: %bound_method.loc9_11.1: = bound_method %v.var, %impl.elem0.loc9 // CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_11.2: = bound_method %v.var, %specific_fn.loc9 -// CHECK:STDOUT: %empty_struct.loc9: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc9_11: %empty_struct_type = converted %v.var, %empty_struct.loc9 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_11.2(%.loc9_11) +// CHECK:STDOUT: %addr.loc9: %ptr.c28 = addr_of %v.var +// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_11.2(%addr.loc9) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/resolve_used.carbon b/toolchain/check/testdata/function/generic/resolve_used.carbon index 5c6f4e18ed2a..c9062bf23ecc 100644 --- a/toolchain/check/testdata/function/generic/resolve_used.carbon +++ b/toolchain/check/testdata/function/generic/resolve_used.carbon @@ -58,6 +58,8 @@ fn CallNegative() { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.3, @impl.49c(%T) [symbolic] // CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.784: type = ptr_type %Int.49d0e6.1 [symbolic] +// CHECK:STDOUT: %require_complete.0f5: = require_complete_type %ptr.784 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Int.49d0e6.1, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.13d: %Destroy.type = facet_value %Int.49d0e6.1, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.bbc: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.13d [symbolic] @@ -73,6 +75,8 @@ fn CallNegative() { // CHECK:STDOUT: %Destroy.impl_witness.404: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i0) [concrete] // CHECK:STDOUT: %Op.type.1c2: type = fn_type @Op.3, @impl.49c(%i0) [concrete] // CHECK:STDOUT: %Op.912: %Op.type.1c2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.3f1: type = ptr_type %i0 [concrete] +// CHECK:STDOUT: %complete_type.588: = complete_type_witness %ptr.3f1 [concrete] // CHECK:STDOUT: %Destroy.facet.973: %Destroy.type = facet_value %i0, (%Destroy.impl_witness.404) [concrete] // CHECK:STDOUT: %.9ab: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.973 [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.912, @Op.3(%i0) [concrete] @@ -89,7 +93,7 @@ fn CallNegative() { // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -120,13 +124,15 @@ fn CallNegative() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Int.loc12_20.2: type = class_type @Int, @Int(%N.loc4_19.2) [symbolic = %Int.loc12_20.2 (constants.%Int.49d0e6.1)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Int.loc12_20.2 [symbolic = %require_complete (constants.%require_complete.b4f426.1)] +// CHECK:STDOUT: %require_complete.loc12_20: = require_complete_type %Int.loc12_20.2 [symbolic = %require_complete.loc12_20 (constants.%require_complete.b4f426.1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Int.loc12_20.2 [symbolic = %pattern_type (constants.%pattern_type.8963eb.1)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Int.loc12_20.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Int.loc12_20.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.13d)] -// CHECK:STDOUT: %.loc12_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc12_3.3 (constants.%.bbc)] -// CHECK:STDOUT: %impl.elem0.loc12_3.2: @ErrorIfNIsZero.%.loc12_3.3 (%.bbc) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_3.2 (constants.%impl.elem0.fe8)] +// CHECK:STDOUT: %.loc12_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc12_3.2 (constants.%.bbc)] +// CHECK:STDOUT: %impl.elem0.loc12_3.2: @ErrorIfNIsZero.%.loc12_3.2 (%.bbc) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_3.2 (constants.%impl.elem0.fe8)] // CHECK:STDOUT: %specific_impl_fn.loc12_3.2: = specific_impl_function %impl.elem0.loc12_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc12_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %Int.loc12_20.2 [symbolic = %ptr (constants.%ptr.784)] +// CHECK:STDOUT: %require_complete.loc12_3: = require_complete_type %ptr [symbolic = %require_complete.loc12_3 (constants.%require_complete.0f5)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -142,12 +148,12 @@ fn CallNegative() { // CHECK:STDOUT: %Int.loc12_20.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc12_20.2 (constants.%Int.49d0e6.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref @ErrorIfNIsZero.%Int.loc12_20.2 (%Int.49d0e6.1) = bind_name v, %v.var -// CHECK:STDOUT: %impl.elem0.loc12_3.1: @ErrorIfNIsZero.%.loc12_3.3 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_3.2 (constants.%impl.elem0.fe8)] +// CHECK:STDOUT: %impl.elem0.loc12_3.1: @ErrorIfNIsZero.%.loc12_3.2 (%.bbc) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_3.2 (constants.%impl.elem0.fe8)] // CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %v.var, %impl.elem0.loc12_3.1 // CHECK:STDOUT: %specific_impl_fn.loc12_3.1: = specific_impl_function %impl.elem0.loc12_3.1, @Op.1(constants.%Destroy.facet.13d) [symbolic = %specific_impl_fn.loc12_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %v.var, %specific_impl_fn.loc12_3.1 -// CHECK:STDOUT: %.loc12_3.1: @ErrorIfNIsZero.%Int.loc12_20.2 (%Int.49d0e6.1) = bind_value %v.var -// CHECK:STDOUT: %.loc12_3.2: init %empty_tuple.type = call %bound_method.loc12_3.2(%.loc12_3.1) +// CHECK:STDOUT: %addr: @ErrorIfNIsZero.%ptr (%ptr.784) = addr_of %v.var +// CHECK:STDOUT: %.loc12_3.1: init %empty_tuple.type = call %bound_method.loc12_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -170,12 +176,14 @@ fn CallNegative() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Int.loc12_20.2 => constants.%i0 -// CHECK:STDOUT: %require_complete => constants.%complete_type.d94 +// CHECK:STDOUT: %require_complete.loc12_20 => constants.%complete_type.d94 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.47b // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.404 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.973 -// CHECK:STDOUT: %.loc12_3.3 => constants.%.9ab +// CHECK:STDOUT: %.loc12_3.2 => constants.%.9ab // CHECK:STDOUT: %impl.elem0.loc12_3.2 => constants.%Op.912 // CHECK:STDOUT: %specific_impl_fn.loc12_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %ptr => constants.%ptr.3f1 +// CHECK:STDOUT: %require_complete.loc12_3 => constants.%complete_type.588 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index ef813f5af807..0361277c4abc 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -76,23 +76,25 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet.494: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.494 [concrete] // CHECK:STDOUT: %Op.specific_fn.6eb: = specific_function %Op.5d7, @Op.2(%C) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl.49c(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] -// CHECK:STDOUT: %complete_type.782: = complete_type_witness %empty_tuple.type [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.926: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.926 [concrete] // CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.2, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet.5f7: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5f7 [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.2(%i32) [concrete] +// CHECK:STDOUT: %complete_type.782: = complete_type_witness %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -104,7 +106,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -240,36 +242,35 @@ fn G() { // CHECK:STDOUT: %.loc24_21: %Make.type.708 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [concrete = constants.%Make.e4b] // CHECK:STDOUT: %Make.ref.loc24: %Make.type.708 = name_ref Make, %.loc24_21 [concrete = constants.%Make.e4b] // CHECK:STDOUT: %Make.specific_fn.loc24: = specific_function %Make.ref.loc24, @Make(constants.%C) [concrete = constants.%Make.specific_fn.834] -// CHECK:STDOUT: %.loc24_3.1: ref %C = splice_block %c.var {} -// CHECK:STDOUT: %Make.call.loc24: init %C = call %Make.specific_fn.loc24() to %.loc24_3.1 +// CHECK:STDOUT: %.loc24_3: ref %C = splice_block %c.var {} +// CHECK:STDOUT: %Make.call.loc24: init %C = call %Make.specific_fn.loc24() to %.loc24_3 // CHECK:STDOUT: assign %c.var, %Make.call.loc24 // CHECK:STDOUT: %C.ref.loc24_10: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %impl.elem0.loc24_3.1: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] -// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24_3.1, %impl.elem0.loc24_3.1 +// CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %.loc24_3, %impl.elem0.loc24_3.1 // CHECK:STDOUT: %specific_fn.loc24_3.1: = specific_function %impl.elem0.loc24_3.1, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] -// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %.loc24_3.1, %specific_fn.loc24_3.1 -// CHECK:STDOUT: %.loc24_3.2: %C = bind_value %.loc24_3.1 -// CHECK:STDOUT: %no_op.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24_3.2) +// CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %.loc24_3, %specific_fn.loc24_3.1 +// CHECK:STDOUT: %addr.loc24_3.1: %ptr.019 = addr_of %.loc24_3 +// CHECK:STDOUT: %no_op.loc24_3.1: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3.1) // CHECK:STDOUT: %impl.elem0.loc24_3.2: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] // CHECK:STDOUT: %bound_method.loc24_3.3: = bound_method %c.var, %impl.elem0.loc24_3.2 // CHECK:STDOUT: %specific_fn.loc24_3.2: = specific_function %impl.elem0.loc24_3.2, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn.6eb] // CHECK:STDOUT: %bound_method.loc24_3.4: = bound_method %c.var, %specific_fn.loc24_3.2 -// CHECK:STDOUT: %.loc24_3.3: %C = bind_value %c.var -// CHECK:STDOUT: %no_op.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.4(%.loc24_3.3) +// CHECK:STDOUT: %addr.loc24_3.2: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc24_3.2: init %empty_tuple.type = call %bound_method.loc24_3.4(%addr.loc24_3.2) // CHECK:STDOUT: %impl.elem0.loc23: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %b.var, %impl.elem0.loc23 // CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %b.var, %specific_fn.loc23 -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc23_3: %empty_tuple.type = converted %b.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3) +// CHECK:STDOUT: %addr.loc23: %ptr.843 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23) // CHECK:STDOUT: %impl.elem0.loc22: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %a.var, %impl.elem0.loc22 // CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Op.2(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %a.var, %specific_fn.loc22 -// CHECK:STDOUT: %.loc22_3: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3) +// CHECK:STDOUT: %addr.loc22: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/type_param.carbon b/toolchain/check/testdata/function/generic/type_param.carbon index a1066a2bcffc..1116f293c15e 100644 --- a/toolchain/check/testdata/function/generic/type_param.carbon +++ b/toolchain/check/testdata/function/generic/type_param.carbon @@ -25,15 +25,17 @@ fn F(T:! type) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr [symbolic] -// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr [symbolic] +// CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] +// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %ptr, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr, (%Destroy.lookup_impl_witness) [symbolic] +// CHECK:STDOUT: %ptr.a13: type = ptr_type %ptr.79f [symbolic] +// CHECK:STDOUT: %require_complete.132: = require_complete_type %ptr.a13 [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %ptr.79f, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.79f, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.ea9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] // CHECK:STDOUT: %impl.elem0: %.ea9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Op.1(%Destroy.facet) [symbolic] @@ -65,16 +67,18 @@ fn F(T:! type) { // CHECK:STDOUT: %T.loc15_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ptr.loc16_11.2: type = ptr_type %T.loc15_6.2 [symbolic = %ptr.loc16_11.2 (constants.%ptr)] -// CHECK:STDOUT: %require_complete.loc16: = require_complete_type %ptr.loc16_11.2 [symbolic = %require_complete.loc16 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %ptr.loc16_11.2: type = ptr_type %T.loc15_6.2 [symbolic = %ptr.loc16_11.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %require_complete.loc16_11: = require_complete_type %ptr.loc16_11.2 [symbolic = %require_complete.loc16_11 (constants.%require_complete.6e5)] // CHECK:STDOUT: %pattern_type.loc16: type = pattern_type %ptr.loc16_11.2 [symbolic = %pattern_type.loc16 (constants.%pattern_type.afe)] // CHECK:STDOUT: %require_complete.loc17: = require_complete_type %T.loc15_6.2 [symbolic = %require_complete.loc17 (constants.%require_complete.4ae)] // CHECK:STDOUT: %pattern_type.loc17: type = pattern_type %T.loc15_6.2 [symbolic = %pattern_type.loc17 (constants.%pattern_type.7dc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %ptr.loc16_11.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.loc16_11.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc16_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc16_3.3 (constants.%.ea9)] -// CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.3 (%.ea9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc16_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc16_3.2 (constants.%.ea9)] +// CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.2 (%.ea9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc16_3.2: = specific_impl_function %impl.elem0.loc16_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr.loc16_3: type = ptr_type %ptr.loc16_11.2 [symbolic = %ptr.loc16_3 (constants.%ptr.a13)] +// CHECK:STDOUT: %require_complete.loc16_3: = require_complete_type %ptr.loc16_3 [symbolic = %require_complete.loc16_3 (constants.%require_complete.132)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -82,27 +86,27 @@ fn F(T:! type) { // CHECK:STDOUT: %p.patt: @F.%pattern_type.loc16 (%pattern_type.afe) = binding_pattern p [concrete] // CHECK:STDOUT: %p.var_patt: @F.%pattern_type.loc16 (%pattern_type.afe) = var_pattern %p.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %p.var: ref @F.%ptr.loc16_11.2 (%ptr) = var %p.var_patt -// CHECK:STDOUT: %.loc16_11: type = splice_block %ptr.loc16_11.1 [symbolic = %ptr.loc16_11.2 (constants.%ptr)] { +// CHECK:STDOUT: %p.var: ref @F.%ptr.loc16_11.2 (%ptr.79f) = var %p.var_patt +// CHECK:STDOUT: %.loc16_11: type = splice_block %ptr.loc16_11.1 [symbolic = %ptr.loc16_11.2 (constants.%ptr.79f)] { // CHECK:STDOUT: %T.ref.loc16: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc16_11.1: type = ptr_type %T.ref.loc16 [symbolic = %ptr.loc16_11.2 (constants.%ptr)] +// CHECK:STDOUT: %ptr.loc16_11.1: type = ptr_type %T.ref.loc16 [symbolic = %ptr.loc16_11.2 (constants.%ptr.79f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref @F.%ptr.loc16_11.2 (%ptr) = bind_name p, %p.var +// CHECK:STDOUT: %p: ref @F.%ptr.loc16_11.2 (%ptr.79f) = bind_name p, %p.var // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %n.patt: @F.%pattern_type.loc17 (%pattern_type.7dc) = binding_pattern n [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc16_11.2 (%ptr) = name_ref p, %p -// CHECK:STDOUT: %.loc17_15: @F.%ptr.loc16_11.2 (%ptr) = bind_value %p.ref +// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc16_11.2 (%ptr.79f) = name_ref p, %p +// CHECK:STDOUT: %.loc17_15: @F.%ptr.loc16_11.2 (%ptr.79f) = bind_value %p.ref // CHECK:STDOUT: %.loc17_14.1: ref @F.%T.loc15_6.2 (%T) = deref %.loc17_15 // CHECK:STDOUT: %T.ref.loc17: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] // CHECK:STDOUT: %.loc17_14.2: @F.%T.loc15_6.2 (%T) = bind_value %.loc17_14.1 // CHECK:STDOUT: %n: @F.%T.loc15_6.2 (%T) = bind_name n, %.loc17_14.2 -// CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.3 (%.ea9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.2 (%.ea9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %p.var, %impl.elem0.loc16_3.1 // CHECK:STDOUT: %specific_impl_fn.loc16_3.1: = specific_impl_function %impl.elem0.loc16_3.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %p.var, %specific_impl_fn.loc16_3.1 -// CHECK:STDOUT: %.loc16_3.1: @F.%ptr.loc16_11.2 (%ptr) = bind_value %p.var -// CHECK:STDOUT: %.loc16_3.2: init %empty_tuple.type = call %bound_method.loc16_3.2(%.loc16_3.1) +// CHECK:STDOUT: %addr: @F.%ptr.loc16_3 (%ptr.a13) = addr_of %p.var +// CHECK:STDOUT: %.loc16_3.1: init %empty_tuple.type = call %bound_method.loc16_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/generic/call_basic_depth.carbon b/toolchain/check/testdata/generic/call_basic_depth.carbon index cb92161e41cf..71f811b73b01 100644 --- a/toolchain/check/testdata/generic/call_basic_depth.carbon +++ b/toolchain/check/testdata/generic/call_basic_depth.carbon @@ -101,6 +101,7 @@ fn M() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -121,7 +122,7 @@ fn M() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -302,8 +303,8 @@ fn M() { // CHECK:STDOUT: %specific_fn.loc39_3.1: = specific_function %impl.elem0.loc39_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc39_3.2: = bound_method %int_0, %specific_fn.loc39_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc39_3.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc39_3.1: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: assign %n.var, %.loc39_3.1 +// CHECK:STDOUT: %.loc39_3: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: assign %n.var, %.loc39_3 // CHECK:STDOUT: %.loc39_10: type = splice_block %i32.loc39 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc39: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc39: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -314,7 +315,7 @@ fn M() { // CHECK:STDOUT: %m.var_patt: %pattern_type.7ce = var_pattern %m.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %m.var: ref %i32 = var %m.var_patt -// CHECK:STDOUT: %.loc40_10: type = splice_block %i32.loc40 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc40: type = splice_block %i32.loc40 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -335,14 +336,14 @@ fn M() { // CHECK:STDOUT: %bound_method.loc40_3.1: = bound_method %m.var, %impl.elem0.loc40 // CHECK:STDOUT: %specific_fn.loc40: = specific_function %impl.elem0.loc40, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc40_3.2: = bound_method %m.var, %specific_fn.loc40 -// CHECK:STDOUT: %.loc40_3: %i32 = bind_value %m.var -// CHECK:STDOUT: %no_op.loc40: init %empty_tuple.type = call %bound_method.loc40_3.2(%.loc40_3) +// CHECK:STDOUT: %addr.loc40: %ptr.235 = addr_of %m.var +// CHECK:STDOUT: %no_op.loc40: init %empty_tuple.type = call %bound_method.loc40_3.2(%addr.loc40) // CHECK:STDOUT: %impl.elem0.loc39_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc39_3.3: = bound_method %n.var, %impl.elem0.loc39_3.2 // CHECK:STDOUT: %specific_fn.loc39_3.2: = specific_function %impl.elem0.loc39_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc39_3.4: = bound_method %n.var, %specific_fn.loc39_3.2 -// CHECK:STDOUT: %.loc39_3.2: %i32 = bind_value %n.var -// CHECK:STDOUT: %no_op.loc39: init %empty_tuple.type = call %bound_method.loc39_3.4(%.loc39_3.2) +// CHECK:STDOUT: %addr.loc39: %ptr.235 = addr_of %n.var +// CHECK:STDOUT: %no_op.loc39: init %empty_tuple.type = call %bound_method.loc39_3.4(%addr.loc39) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/complete_type.carbon b/toolchain/check/testdata/generic/complete_type.carbon index 2722c560b0ba..50756f26209b 100644 --- a/toolchain/check/testdata/generic/complete_type.carbon +++ b/toolchain/check/testdata/generic/complete_type.carbon @@ -74,19 +74,6 @@ fn F(T:! type) { var v: T; } -// CHECK:STDERR: fail_incomplete_in_function_at_eof.carbon:[[@LINE+17]]:10: note: in `F(B)` used here [ResolvingSpecificHere] -// CHECK:STDERR: fn G() { F(B); } -// CHECK:STDERR: ^ -// CHECK:STDERR: -// CHECK:STDERR: min_prelude/parts/destroy.carbon:8:9: error: `T` evaluates to incomplete type `B` [IncompleteTypeInMonomorphization] -// CHECK:STDERR: fn Op[self: Self]() = "no_op"; -// CHECK:STDERR: ^~~~~~~~~~ -// CHECK:STDERR: fail_incomplete_in_function_at_eof.carbon:[[@LINE-19]]:1: note: class was forward declared here [ClassForwardDeclaredHere] -// CHECK:STDERR: class B; -// CHECK:STDERR: ^~~~~~~~ -// CHECK:STDERR: fail_incomplete_in_function_at_eof.carbon:[[@LINE-13]]:3: note: in `Core.` used here [ResolvingSpecificHere] -// CHECK:STDERR: var v: T; -// CHECK:STDERR: ^~~~~~~~ // CHECK:STDERR: fail_incomplete_in_function_at_eof.carbon:[[@LINE+4]]:10: note: in `F(B)` used here [ResolvingSpecificHere] // CHECK:STDERR: fn G() { F(B); } // CHECK:STDERR: ^ @@ -215,12 +202,14 @@ fn G() { F(B); } // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] // CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @impl(%T) [symbolic] // CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [symbolic] @@ -230,11 +219,13 @@ fn G() { F(B); } // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%B) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] // CHECK:STDOUT: %Destroy.impl_witness.39d: = impl_witness imports.%Destroy.impl_witness_table, @impl(%B) [concrete] // CHECK:STDOUT: %Op.type.1a6: type = fn_type @Op.2, @impl(%B) [concrete] // CHECK:STDOUT: %Op.3c2: %Op.type.1a6 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] +// CHECK:STDOUT: %complete_type.3bf: = complete_type_witness %ptr.e79 [concrete] // CHECK:STDOUT: %Destroy.facet.331: %Destroy.type = facet_value %B, (%Destroy.impl_witness.39d) [concrete] // CHECK:STDOUT: %.c16: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.331 [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.3c2, @Op.2(%B) [concrete] @@ -247,7 +238,7 @@ fn G() { F(B); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -271,7 +262,7 @@ fn G() { F(B); } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -282,13 +273,15 @@ fn G() { F(B); } // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc6_6.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete.loc7_10: = require_complete_type %T.loc6_6.2 [symbolic = %require_complete.loc7_10 (constants.%require_complete.4ae)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc6_6.2 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc6_6.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.loc6_6.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.713)] -// CHECK:STDOUT: %.loc7_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc7_3.3 (constants.%.a63)] -// CHECK:STDOUT: %impl.elem0.loc7_3.2: @F.%.loc7_3.3 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc7_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc7_3.2 (constants.%.a63)] +// CHECK:STDOUT: %impl.elem0.loc7_3.2: @F.%.loc7_3.2 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc7_3.2: = specific_impl_function %impl.elem0.loc7_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %T.loc6_6.2 [symbolic = %ptr (constants.%ptr.79f)] +// CHECK:STDOUT: %require_complete.loc7_3: = require_complete_type %ptr [symbolic = %require_complete.loc7_3 (constants.%require_complete.6e5)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -299,12 +292,12 @@ fn G() { F(B); } // CHECK:STDOUT: %v.var: ref @F.%T.loc6_6.2 (%T) = var %v.var_patt // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %v: ref @F.%T.loc6_6.2 (%T) = bind_name v, %v.var -// CHECK:STDOUT: %impl.elem0.loc7_3.1: @F.%.loc7_3.3 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc7_3.1: @F.%.loc7_3.2 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0.loc7_3.1 // CHECK:STDOUT: %specific_impl_fn.loc7_3.1: = specific_impl_function %impl.elem0.loc7_3.1, @Op.1(constants.%Destroy.facet.713) [symbolic = %specific_impl_fn.loc7_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_impl_fn.loc7_3.1 -// CHECK:STDOUT: %.loc7_3.1: @F.%T.loc6_6.2 (%T) = bind_value %v.var -// CHECK:STDOUT: %.loc7_3.2: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.1) +// CHECK:STDOUT: %addr: @F.%ptr (%ptr.79f) = addr_of %v.var +// CHECK:STDOUT: %.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -326,13 +319,15 @@ fn G() { F(B); } // CHECK:STDOUT: %T.loc6_6.2 => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete.loc7_10 => constants.%complete_type.357 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.049 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.39d // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.331 -// CHECK:STDOUT: %.loc7_3.3 => constants.%.c16 +// CHECK:STDOUT: %.loc7_3.2 => constants.%.c16 // CHECK:STDOUT: %impl.elem0.loc7_3.2 => constants.%Op.3c2 // CHECK:STDOUT: %specific_impl_fn.loc7_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %ptr => constants.%ptr.e79 +// CHECK:STDOUT: %require_complete.loc7_3 => constants.%complete_type.3bf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_incomplete_in_function_at_eof.carbon @@ -344,12 +339,14 @@ fn G() { F(B); } // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] // CHECK:STDOUT: %Op.type.bc9: type = fn_type @Op.2, @impl(%T) [symbolic] // CHECK:STDOUT: %Op.46f: %Op.type.bc9 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr.79f [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [symbolic] @@ -362,6 +359,8 @@ fn G() { F(B); } // CHECK:STDOUT: %Destroy.impl_witness.39d: = impl_witness imports.%Destroy.impl_witness_table, @impl(%B) [concrete] // CHECK:STDOUT: %Op.type.1a6: type = fn_type @Op.2, @impl(%B) [concrete] // CHECK:STDOUT: %Op.3c2: %Op.type.1a6 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] +// CHECK:STDOUT: %complete_type: = complete_type_witness %ptr.e79 [concrete] // CHECK:STDOUT: %Destroy.facet.331: %Destroy.type = facet_value %B, (%Destroy.impl_witness.39d) [concrete] // CHECK:STDOUT: %.c16: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.331 [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.3c2, @Op.2(%B) [concrete] @@ -374,7 +373,7 @@ fn G() { F(B); } // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -401,13 +400,15 @@ fn G() { F(B); } // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc6_6.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete.loc13_10: = require_complete_type %T.loc6_6.2 [symbolic = %require_complete.loc13_10 (constants.%require_complete.4ae)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc6_6.2 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc6_6.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.loc6_6.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.713)] -// CHECK:STDOUT: %.loc13_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc13_3.3 (constants.%.a63)] -// CHECK:STDOUT: %impl.elem0.loc13_3.2: @F.%.loc13_3.3 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc13_3.2: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc13_3.2 (constants.%.a63)] +// CHECK:STDOUT: %impl.elem0.loc13_3.2: @F.%.loc13_3.2 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc13_3.2: = specific_impl_function %impl.elem0.loc13_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc13_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %T.loc6_6.2 [symbolic = %ptr (constants.%ptr.79f)] +// CHECK:STDOUT: %require_complete.loc13_3: = require_complete_type %ptr [symbolic = %require_complete.loc13_3 (constants.%require_complete.6e5)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -418,12 +419,12 @@ fn G() { F(B); } // CHECK:STDOUT: %v.var: ref @F.%T.loc6_6.2 (%T) = var %v.var_patt // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %v: ref @F.%T.loc6_6.2 (%T) = bind_name v, %v.var -// CHECK:STDOUT: %impl.elem0.loc13_3.1: @F.%.loc13_3.3 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc13_3.1: @F.%.loc13_3.2 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %v.var, %impl.elem0.loc13_3.1 // CHECK:STDOUT: %specific_impl_fn.loc13_3.1: = specific_impl_function %impl.elem0.loc13_3.1, @Op.1(constants.%Destroy.facet.713) [symbolic = %specific_impl_fn.loc13_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %v.var, %specific_impl_fn.loc13_3.1 -// CHECK:STDOUT: %.loc13_3.1: @F.%T.loc6_6.2 (%T) = bind_value %v.var -// CHECK:STDOUT: %.loc13_3.2: init %empty_tuple.type = call %bound_method.loc13_3.2(%.loc13_3.1) +// CHECK:STDOUT: %addr: @F.%ptr (%ptr.79f) = addr_of %v.var +// CHECK:STDOUT: %.loc13_3.1: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -445,12 +446,14 @@ fn G() { F(B); } // CHECK:STDOUT: %T.loc6_6.2 => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => +// CHECK:STDOUT: %require_complete.loc13_10 => // CHECK:STDOUT: %pattern_type => constants.%pattern_type.049 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.39d // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.331 -// CHECK:STDOUT: %.loc13_3.3 => constants.%.c16 +// CHECK:STDOUT: %.loc13_3.2 => constants.%.c16 // CHECK:STDOUT: %impl.elem0.loc13_3.2 => constants.%Op.3c2 // CHECK:STDOUT: %specific_impl_fn.loc13_3.2 => constants.%Op.specific_fn +// CHECK:STDOUT: %ptr => constants.%ptr.e79 +// CHECK:STDOUT: %require_complete.loc13_3 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/local.carbon b/toolchain/check/testdata/generic/local.carbon index 221187c36779..acfd6fcfb62d 100644 --- a/toolchain/check/testdata/generic/local.carbon +++ b/toolchain/check/testdata/generic/local.carbon @@ -99,6 +99,7 @@ class C(C:! type) { // CHECK:STDOUT: %Destroy.impl_witness.bcb: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C.d45) [concrete] // CHECK:STDOUT: %Op.type.39b: type = fn_type @Op.3, @impl.49c(%C.d45) [concrete] // CHECK:STDOUT: %Op.5e9: %Op.type.39b = struct_value () [concrete] +// CHECK:STDOUT: %ptr.9c7: type = ptr_type %C.d45 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.d45, (%Destroy.impl_witness.bcb) [concrete] // CHECK:STDOUT: %.f33: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5e9, @Op.3(%C.d45) [concrete] @@ -117,7 +118,7 @@ class C(C:! type) { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -177,8 +178,8 @@ class C(C:! type) { // CHECK:STDOUT: %.loc8_26.3: ref %i32 = class_element_access %v.var, element0 // CHECK:STDOUT: %.loc8_26.4: init %i32 = initialize_from %.loc8_26.2 to %.loc8_26.3 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc8_26.5: init %C.d45 = class_init (%.loc8_26.4), %v.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc8_3.1: init %C.d45 = converted %.loc8_26.1, %.loc8_26.5 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %v.var, %.loc8_3.1 +// CHECK:STDOUT: %.loc8_3: init %C.d45 = converted %.loc8_26.1, %.loc8_26.5 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %v.var, %.loc8_3 // CHECK:STDOUT: %.loc8_15: type = splice_block %C [concrete = constants.%C.d45] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, %C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -190,8 +191,8 @@ class C(C:! type) { // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %v.var, %impl.elem0.loc8_3 // CHECK:STDOUT: %specific_fn.loc8_3: = specific_function %impl.elem0.loc8_3, @Op.3(constants.%C.d45) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %v.var, %specific_fn.loc8_3 -// CHECK:STDOUT: %.loc8_3.2: %C.d45 = bind_value %v.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.2) +// CHECK:STDOUT: %addr: %ptr.9c7 = addr_of %v.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/template/unimplemented.carbon b/toolchain/check/testdata/generic/template/unimplemented.carbon index 11e80ff90bd7..05b9faded5d0 100644 --- a/toolchain/check/testdata/generic/template/unimplemented.carbon +++ b/toolchain/check/testdata/generic/template/unimplemented.carbon @@ -262,9 +262,12 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.96, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet.5f7: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5f7 [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.96(%i32) [concrete] +// CHECK:STDOUT: %ptr.79f131.2: type = ptr_type %T.8b3d5d.1 [template] +// CHECK:STDOUT: %require_complete.6e5e64.2: = require_complete_type %ptr.79f131.2 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.8b3d5d.1, @Destroy [template] // CHECK:STDOUT: %Destroy.facet.713: %Destroy.type = facet_value %T.8b3d5d.1, (%Destroy.lookup_impl_witness) [template] // CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [template] @@ -283,7 +286,7 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc96ef.1) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46fd6b.1)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc96ef.1) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46fd6b.1)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -310,15 +313,17 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_15.2 [template = %pattern_type (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc4_15.2 [template = %require_complete (constants.%require_complete.4aeca8.1)] +// CHECK:STDOUT: %require_complete.loc4: = require_complete_type %T.loc4_15.2 [template = %require_complete.loc4 (constants.%require_complete.4aeca8.1)] // CHECK:STDOUT: %ImplicitAs.type.loc14_3.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T.loc4_15.2)> [template = %ImplicitAs.type.loc14_3.2 (constants.%ImplicitAs.type.d628ce.2)] -// CHECK:STDOUT: %.loc14_3.5: = access_member_action %ImplicitAs.type.loc14_3.1, Convert [template] -// CHECK:STDOUT: %.loc14_3.6: type = type_of_inst %.loc14_3.5 [template] +// CHECK:STDOUT: %.loc14_3.4: = access_member_action %ImplicitAs.type.loc14_3.1, Convert [template] +// CHECK:STDOUT: %.loc14_3.5: type = type_of_inst %.loc14_3.4 [template] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc4_15.2, @Destroy [template = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.loc4_15.2, (%Destroy.lookup_impl_witness) [template = %Destroy.facet (constants.%Destroy.facet.713)] -// CHECK:STDOUT: %.loc14_3.7: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc14_3.7 (constants.%.a63)] -// CHECK:STDOUT: %impl.elem0.loc14_3.2: @F.%.loc14_3.7 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc14_3.2 (constants.%impl.elem0.538)] +// CHECK:STDOUT: %.loc14_3.6: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [template = %.loc14_3.6 (constants.%.a63)] +// CHECK:STDOUT: %impl.elem0.loc14_3.2: @F.%.loc14_3.6 (%.a63) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc14_3.2 (constants.%impl.elem0.538)] // CHECK:STDOUT: %specific_impl_fn.loc14_3.2: = specific_impl_function %impl.elem0.loc14_3.2, @Op.95(%Destroy.facet) [template = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.1af)] +// CHECK:STDOUT: %ptr: type = ptr_type %T.loc4_15.2 [template = %ptr (constants.%ptr.79f131.2)] +// CHECK:STDOUT: %require_complete.loc14: = require_complete_type %ptr [template = %require_complete.loc14 (constants.%require_complete.6e5e64.2)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @F.%T.loc4_15.2 (%T.8b3d5d.1)) { // CHECK:STDOUT: !entry: @@ -329,7 +334,7 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %v.var: ref @F.%T.loc4_15.2 (%T.8b3d5d.1) = var %v.var_patt // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %ImplicitAs.type.loc14_3.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%T.8b3d5d.1)> [template = %ImplicitAs.type.loc14_3.2 (constants.%ImplicitAs.type.d628ce.2)] -// CHECK:STDOUT: %.loc14_3.1: @F.%.loc14_3.6 (@F.%.loc14_3.6) = splice_inst %.loc14_3.5 +// CHECK:STDOUT: %.loc14_3.1: @F.%.loc14_3.5 (@F.%.loc14_3.5) = splice_inst %.loc14_3.4 // CHECK:STDOUT: %.loc14_3.2: @F.%T.loc4_15.2 (%T.8b3d5d.1) = converted %int_0, [concrete = ] // CHECK:STDOUT: assign %v.var, // CHECK:STDOUT: %T.ref.loc14: type = name_ref T, %T.loc4_15.1 [template = %T.loc4_15.2 (constants.%T.8b3d5d.1)] @@ -340,7 +345,7 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %i32 = var %w.var_patt // CHECK:STDOUT: %x.ref: @F.%T.loc4_15.2 (%T.8b3d5d.1) = name_ref x, %x -// CHECK:STDOUT: %.loc22_3.1: %i32 = converted %x.ref, [concrete = ] +// CHECK:STDOUT: %.loc22_3: %i32 = converted %x.ref, [concrete = ] // CHECK:STDOUT: assign %w.var, // CHECK:STDOUT: %.loc22_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -351,14 +356,14 @@ fn F[template T:! type](x: T) { // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %w.var, %impl.elem0.loc22 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc22, @Op.96(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %w.var, %specific_fn -// CHECK:STDOUT: %.loc22_3.2: %i32 = bind_value %w.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3.2) -// CHECK:STDOUT: %impl.elem0.loc14_3.1: @F.%.loc14_3.7 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc14_3.2 (constants.%impl.elem0.538)] +// CHECK:STDOUT: %addr.loc22: %ptr.235 = addr_of %w.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22) +// CHECK:STDOUT: %impl.elem0.loc14_3.1: @F.%.loc14_3.6 (%.a63) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc14_3.2 (constants.%impl.elem0.538)] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %v.var, %impl.elem0.loc14_3.1 // CHECK:STDOUT: %specific_impl_fn.loc14_3.1: = specific_impl_function %impl.elem0.loc14_3.1, @Op.95(constants.%Destroy.facet.713) [template = %specific_impl_fn.loc14_3.2 (constants.%specific_impl_fn.1af)] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %v.var, %specific_impl_fn.loc14_3.1 -// CHECK:STDOUT: %.loc14_3.3: @F.%T.loc4_15.2 (%T.8b3d5d.1) = bind_value %v.var -// CHECK:STDOUT: %.loc14_3.4: init %empty_tuple.type = call %bound_method.loc14_3.2(%.loc14_3.3) +// CHECK:STDOUT: %addr.loc14: @F.%ptr (%ptr.79f131.2) = addr_of %v.var +// CHECK:STDOUT: %.loc14_3.3: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr.loc14) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/if_expr/struct.carbon b/toolchain/check/testdata/if_expr/struct.carbon index 5578983d85a7..9e9b1ba996d0 100644 --- a/toolchain/check/testdata/if_expr/struct.carbon +++ b/toolchain/check/testdata/if_expr/struct.carbon @@ -36,6 +36,7 @@ fn F(cond: bool) { // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %ptr.3ee: type = ptr_type %struct_type.a.b.501 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] @@ -87,7 +88,7 @@ fn F(cond: bool) { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -155,8 +156,8 @@ fn F(cond: bool) { // CHECK:STDOUT: %.loc18_46.6: ref %i32 = struct_access %a.var, element1 // CHECK:STDOUT: %.loc18_46.7: init %i32 = initialize_from %.loc18_46.5 to %.loc18_46.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc18_46.8: init %struct_type.a.b.501 = struct_init (%.loc18_46.4, %.loc18_46.7) to %a.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc18_3.1: init %struct_type.a.b.501 = converted %.loc18_46.1, %.loc18_46.8 [concrete = constants.%struct] -// CHECK:STDOUT: assign %a.var, %.loc18_3.1 +// CHECK:STDOUT: %.loc18_3: init %struct_type.a.b.501 = converted %.loc18_46.1, %.loc18_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: assign %a.var, %.loc18_3 // CHECK:STDOUT: %.loc18_27: type = splice_block %struct_type.a.b [concrete = constants.%struct_type.a.b.501] { // CHECK:STDOUT: %int_32.loc18_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -196,13 +197,8 @@ fn F(cond: bool) { // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %a.var, %impl.elem0.loc18_3 // CHECK:STDOUT: %specific_fn.loc18_3: = specific_function %impl.elem0.loc18_3, @Op.3(constants.%struct_type.a.b.501) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %a.var, %specific_fn.loc18_3 -// CHECK:STDOUT: %.loc18_3.2: ref %i32 = struct_access %a.var, element0 -// CHECK:STDOUT: %.loc18_3.3: %i32 = bind_value %.loc18_3.2 -// CHECK:STDOUT: %.loc18_3.4: ref %i32 = struct_access %a.var, element1 -// CHECK:STDOUT: %.loc18_3.5: %i32 = bind_value %.loc18_3.4 -// CHECK:STDOUT: %struct.loc18: %struct_type.a.b.501 = struct_value (%.loc18_3.3, %.loc18_3.5) -// CHECK:STDOUT: %.loc18_3.6: %struct_type.a.b.501 = converted %a.var, %struct.loc18 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.6) +// CHECK:STDOUT: %addr: %ptr.3ee = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index b915dc563f3e..bd024a2025d8 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -119,12 +119,14 @@ class X(U:! type) { // CHECK:STDOUT: %Destroy.impl_witness.9ca: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Param) [concrete] // CHECK:STDOUT: %Op.type.70d: type = fn_type @Op.3, @impl.49c(%Param) [concrete] // CHECK:STDOUT: %Op.e46: %Op.type.70d = struct_value () [concrete] +// CHECK:STDOUT: %ptr.756: type = ptr_type %Param [concrete] // CHECK:STDOUT: %Destroy.facet.6a7: %Destroy.type = facet_value %Param, (%Destroy.impl_witness.9ca) [concrete] // CHECK:STDOUT: %.92a: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.6a7 [concrete] // CHECK:STDOUT: %Op.specific_fn.022: = specific_function %Op.e46, @Op.3(%Param) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet.5f7: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.5f7 [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -143,7 +145,7 @@ class X(U:! type) { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -324,20 +326,20 @@ class X(U:! type) { // CHECK:STDOUT: %bound_method.loc22_20.1: = bound_method %.loc22_20.1, %impl.elem0.loc22_20 // CHECK:STDOUT: %specific_fn.loc22_20: = specific_function %impl.elem0.loc22_20, @Op.3(constants.%Param) [concrete = constants.%Op.specific_fn.022] // CHECK:STDOUT: %bound_method.loc22_20.2: = bound_method %.loc22_20.1, %specific_fn.loc22_20 -// CHECK:STDOUT: %.loc22_20.3: %Param = bind_value %.loc22_20.1 -// CHECK:STDOUT: %no_op.loc22_20: init %empty_tuple.type = call %bound_method.loc22_20.2(%.loc22_20.3) +// CHECK:STDOUT: %addr.loc22_20: %ptr.756 = addr_of %.loc22_20.1 +// CHECK:STDOUT: %no_op.loc22_20: init %empty_tuple.type = call %bound_method.loc22_20.2(%addr.loc22_20) // CHECK:STDOUT: %impl.elem0.loc22_3: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %b.var, %impl.elem0.loc22_3 // CHECK:STDOUT: %specific_fn.loc22_3: = specific_function %impl.elem0.loc22_3, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %b.var, %specific_fn.loc22_3 -// CHECK:STDOUT: %.loc22_3: %i32 = bind_value %b.var -// CHECK:STDOUT: %no_op.loc22_3: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3) +// CHECK:STDOUT: %addr.loc22_3: %ptr.235 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc22_3: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22_3) // CHECK:STDOUT: %impl.elem0.loc21_20: %.92a = impl_witness_access constants.%Destroy.impl_witness.9ca, element0 [concrete = constants.%Op.e46] // CHECK:STDOUT: %bound_method.loc21_20.1: = bound_method %.loc21_20.1, %impl.elem0.loc21_20 // CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21_20, @Op.3(constants.%Param) [concrete = constants.%Op.specific_fn.022] // CHECK:STDOUT: %bound_method.loc21_20.2: = bound_method %.loc21_20.1, %specific_fn.loc21 -// CHECK:STDOUT: %.loc21_20.3: %Param = bind_value %.loc21_20.1 -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_20.2(%.loc21_20.3) +// CHECK:STDOUT: %addr.loc21: %ptr.756 = addr_of %.loc21_20.1 +// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_20.2(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon index c7d5fa3b95de..f80a7e215c21 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -181,7 +181,7 @@ fn F() { // CHECK:STDOUT: %Zero.dec: %Zero.type.e33 = struct_value () [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %Point, (%Z.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Point.val: %Point = struct_value () [concrete] @@ -194,6 +194,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.ea4: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Point) [concrete] // CHECK:STDOUT: %Op.type.003: type = fn_type @Op.2, @impl.49c(%Point) [concrete] // CHECK:STDOUT: %Op.d2d: %Op.type.003 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.536: type = ptr_type %Point [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Point, (%Destroy.impl_witness.ea4) [concrete] // CHECK:STDOUT: %.038: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d2d, @Op.2(%Point) [concrete] @@ -206,7 +207,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -270,7 +271,7 @@ fn F() { // CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@impl.c94.%Zero.decl), @impl.c94 [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -313,8 +314,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc25_5.1: = bound_method %.loc25_5.2, %impl.elem0.loc25_5 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc25_5, @Op.2(constants.%Point) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc25_5.2: = bound_method %.loc25_5.2, %specific_fn -// CHECK:STDOUT: %.loc25_5.5: %Point = bind_value %.loc25_5.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc25_5.2(%.loc25_5.5) +// CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc25_5.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc25_5.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon index d47b7b40d921..733b690292fd 100644 --- a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon +++ b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon @@ -250,7 +250,7 @@ class X { // CHECK:STDOUT: %Method.2c2: %Method.type.2ed = struct_value () [concrete] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %Point, (%Z.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %.d52: type = fn_type_with_self_type %Zero.type.822, %Z.facet [concrete] @@ -264,6 +264,7 @@ class X { // CHECK:STDOUT: %Destroy.impl_witness.ea4: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Point) [concrete] // CHECK:STDOUT: %Op.type.003: type = fn_type @Op.2, @impl.49c(%Point) [concrete] // CHECK:STDOUT: %Op.d2d: %Op.type.003 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.536: type = ptr_type %Point [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Point, (%Destroy.impl_witness.ea4) [concrete] // CHECK:STDOUT: %.038: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d2d, @Op.2(%Point) [concrete] @@ -276,7 +277,7 @@ class X { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -378,7 +379,7 @@ class X { // CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (@impl.c94.%Zero.decl, @impl.c94.%Method.decl), @impl.c94 [concrete] // CHECK:STDOUT: %Z.impl_witness: = impl_witness %Z.impl_witness_table [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -456,8 +457,8 @@ class X { // CHECK:STDOUT: %bound_method.loc29_5.1: = bound_method %.loc29_5.2, %impl.elem0.loc29 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc29, @Op.2(constants.%Point) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc29_5.2: = bound_method %.loc29_5.2, %specific_fn -// CHECK:STDOUT: %.loc29_5.5: %Point = bind_value %.loc29_5.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc29_5.2(%.loc29_5.5) +// CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc29_5.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc29_5.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index b840c0c731a5..1528abd5e855 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -41,7 +41,7 @@ class C { // CHECK:STDOUT: %F.c94: %F.type.e4b = struct_value () [concrete] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, (%Simple.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -52,6 +52,7 @@ class C { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.2(%C) [concrete] @@ -64,7 +65,7 @@ class C { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -107,7 +108,7 @@ class C { // CHECK:STDOUT: %Simple.impl_witness_table = impl_witness_table (@impl.0ef.%F.decl), @impl.0ef [concrete] // CHECK:STDOUT: %Simple.impl_witness: = impl_witness %Simple.impl_witness_table [concrete = constants.%Simple.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -129,16 +130,16 @@ class C { // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt // CHECK:STDOUT: %.loc23_19.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc23_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc23_7.1: init %C = converted %.loc23_19.1, %.loc23_19.2 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %c.var, %.loc23_7.1 +// CHECK:STDOUT: %.loc23_7: init %C = converted %.loc23_19.1, %.loc23_19.2 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %c.var, %.loc23_7 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %impl.elem0: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] // CHECK:STDOUT: %bound_method.loc23_7.1: = bound_method %c.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc23_7.2: = bound_method %c.var, %specific_fn -// CHECK:STDOUT: %.loc23_7.2: %C = bind_value %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc23_7.2(%.loc23_7.2) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc23_7.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index 5e7087cd115c..a105b7f3e96d 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -325,7 +325,7 @@ fn G() { // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %X: %empty_tuple.type = bind_symbolic_name X, 0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %C.607: type = class_type @C, @C(%empty_tuple) [concrete] @@ -366,6 +366,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.94b: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C.607) [concrete] // CHECK:STDOUT: %Op.type.961: type = fn_type @Op.2, @impl.49c(%C.607) [concrete] // CHECK:STDOUT: %Op.7ef: %Op.type.961 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.2ce: type = ptr_type %C.607 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.607, (%Destroy.impl_witness.94b) [concrete] // CHECK:STDOUT: %.bb3: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.7ef, @Op.2(%C.607) [concrete] @@ -380,7 +381,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.eb1c17.1: %empty_tuple.type = import_ref Main//b, loc5_9, loaded [symbolic = @C.%X (constants.%X)] -// CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//b, loc5_18, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//b, loc5_18, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.572 = import_ref Main//b, inst31 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//a, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//a, loc5_14, loaded [concrete = constants.%assoc0.3f3] @@ -397,7 +398,7 @@ fn G() { // CHECK:STDOUT: %Main.import_ref.eb1c17.4: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @impl.22b.%Y (constants.%Y)] // CHECK:STDOUT: %Main.F.5a8: @impl.22b.%F.type.1 (%F.type.0daaa1.1) = import_ref Main//b, F, loaded [symbolic = @impl.22b.%F.1 (constants.%F.49c1ac.1)] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -481,8 +482,8 @@ fn G() { // CHECK:STDOUT: %bound_method.loc7_16.1: = bound_method %.loc7_16.3, %impl.elem0.loc7_16 // CHECK:STDOUT: %specific_fn.loc7_16: = specific_function %impl.elem0.loc7_16, @Op.2(constants.%C.607) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_16.2: = bound_method %.loc7_16.3, %specific_fn.loc7_16 -// CHECK:STDOUT: %.loc7_16.8: %C.607 = bind_value %.loc7_16.3 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_16.2(%.loc7_16.8) +// CHECK:STDOUT: %addr: %ptr.2ce = addr_of %.loc7_16.3 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_16.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -574,7 +575,7 @@ fn G() { // CHECK:STDOUT: %F => constants.%F.5fa954.1 // CHECK:STDOUT: %F.specific_fn => constants.%F.specific_fn.4832e8.2 // CHECK:STDOUT: %C => constants.%C.607 -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: %C.val => constants.%C.val.12f // CHECK:STDOUT: } // CHECK:STDOUT: @@ -584,6 +585,6 @@ fn G() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.186 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon index 42da8ac965ad..2fa76591dc91 100644 --- a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon +++ b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon @@ -104,7 +104,7 @@ fn G() { // CHECK:STDOUT: %JJ.9c9: %JJ.type.811 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.5df: %J.type = facet_value %C, (%J.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.638: type = fn_type_with_self_type %JJ.type.622, %J.facet.5df [concrete] // CHECK:STDOUT: %facet_value: %facet_type = facet_value %C, (%I.impl_witness, %J.impl_witness) [concrete] @@ -117,6 +117,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.c4a: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.8e9: type = fn_type @Op.4, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.ddb: %Op.type.8e9 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8e6: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.c4a) [concrete] // CHECK:STDOUT: %.40c: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ddb, @Op.4(%C) [concrete] @@ -133,7 +134,7 @@ fn G() { // CHECK:STDOUT: %Core.import_ref.012: %Op.type.1cc = import_ref Core//prelude, loc13_42, loaded [concrete = constants.%Op.ff4] // CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @impl.865 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -264,7 +265,7 @@ fn G() { // CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (@impl.023.%JJ.decl), @impl.023 [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -400,14 +401,14 @@ fn G() { // CHECK:STDOUT: %bound_method.loc46_9.1: = bound_method %.loc46_9.2, %impl.elem0.loc46 // CHECK:STDOUT: %specific_fn.loc46: = specific_function %impl.elem0.loc46, @Op.4(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc46_9.2: = bound_method %.loc46_9.2, %specific_fn.loc46 -// CHECK:STDOUT: %.loc46_9.5: %C = bind_value %.loc46_9.2 -// CHECK:STDOUT: %no_op.loc46: init %empty_tuple.type = call %bound_method.loc46_9.2(%.loc46_9.5) +// CHECK:STDOUT: %addr.loc46: %ptr.8e6 = addr_of %.loc46_9.2 +// CHECK:STDOUT: %no_op.loc46: init %empty_tuple.type = call %bound_method.loc46_9.2(%addr.loc46) // CHECK:STDOUT: %impl.elem0.loc40_6: %.40c = impl_witness_access constants.%Destroy.impl_witness.c4a, element0 [concrete = constants.%Op.ddb] // CHECK:STDOUT: %bound_method.loc40_6.1: = bound_method %.loc40_6.2, %impl.elem0.loc40_6 // CHECK:STDOUT: %specific_fn.loc40: = specific_function %impl.elem0.loc40_6, @Op.4(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc40_6.2: = bound_method %.loc40_6.2, %specific_fn.loc40 -// CHECK:STDOUT: %.loc40_6.5: %C = bind_value %.loc40_6.2 -// CHECK:STDOUT: %no_op.loc40: init %empty_tuple.type = call %bound_method.loc40_6.2(%.loc40_6.5) +// CHECK:STDOUT: %addr.loc40: %ptr.8e6 = addr_of %.loc40_6.2 +// CHECK:STDOUT: %no_op.loc40: init %empty_tuple.type = call %bound_method.loc40_6.2(%addr.loc40) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -463,7 +464,7 @@ fn G() { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.893 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.impl_witness // CHECK:STDOUT: %I.facet.loc26_18.2 => constants.%I.facet.98f // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 20272a050943..b0f89579373e 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -1520,7 +1520,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [concrete] // CHECK:STDOUT: %AnyParam.generic: %AnyParam.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] @@ -1551,6 +1551,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Destroy.impl_witness.98b: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%AnyParam.241) [concrete] // CHECK:STDOUT: %Op.type.5fc: type = fn_type @Op.2, @impl.49c(%AnyParam.241) [concrete] // CHECK:STDOUT: %Op.6f3: %Op.type.5fc = struct_value () [concrete] +// CHECK:STDOUT: %ptr.301: type = ptr_type %AnyParam.241 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %AnyParam.241, (%Destroy.impl_witness.98b) [concrete] // CHECK:STDOUT: %.644: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.6f3, @Op.2(%AnyParam.241) [concrete] @@ -1570,7 +1571,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] -// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst33 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded @@ -1579,7 +1580,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst40 [no loc], loaded [symbolic = constants.%Self.f64] // CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %K.type.311 = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%K.7a1] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1688,8 +1689,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var: ref %AnyParam.241 = var %obj.var_patt // CHECK:STDOUT: %.loc13_58.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc13_58.2: init %AnyParam.241 = class_init (), %obj.var [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: %.loc13_3.1: init %AnyParam.241 = converted %.loc13_58.1, %.loc13_58.2 [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: assign %obj.var, %.loc13_3.1 +// CHECK:STDOUT: %.loc13_3: init %AnyParam.241 = converted %.loc13_58.1, %.loc13_58.2 [concrete = constants.%AnyParam.val] +// CHECK:STDOUT: assign %obj.var, %.loc13_3 // CHECK:STDOUT: %.loc13_53: type = splice_block %AnyParam [concrete = constants.%AnyParam.241] { // CHECK:STDOUT: %PackageHasParam.ref.loc13: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%PackageHasParam.AnyParam [concrete = constants.%AnyParam.generic] @@ -1709,8 +1710,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %obj.var, %impl.elem0.loc13 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc13, @Op.2(constants.%AnyParam.241) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %obj.var, %specific_fn -// CHECK:STDOUT: %.loc13_3.2: %AnyParam.241 = bind_value %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13_3.2(%.loc13_3.2) +// CHECK:STDOUT: %addr: %ptr.301 = addr_of %obj.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1753,7 +1754,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [concrete] // CHECK:STDOUT: %AnyParam.generic: %AnyParam.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] @@ -1787,6 +1788,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Destroy.impl_witness.c49: = impl_witness imports.%Destroy.impl_witness_table, @impl.4b5(%AnyParam.861) [concrete] // CHECK:STDOUT: %Op.type.77e: type = fn_type @Op.1, @impl.4b5(%AnyParam.861) [concrete] // CHECK:STDOUT: %Op.49f: %Op.type.77e = struct_value () [concrete] +// CHECK:STDOUT: %ptr.1ef: type = ptr_type %AnyParam.861 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %AnyParam.861, (%Destroy.impl_witness.c49) [concrete] // CHECK:STDOUT: %.a90: type = fn_type_with_self_type %Op.type.f00, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.49f, @Op.1(%AnyParam.861) [concrete] @@ -1810,7 +1812,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] -// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst33 [no loc], unloaded // CHECK:STDOUT: %PackageGenericInterface.GenericInterface: %GenericInterface.type.0da = import_ref PackageGenericInterface//default, GenericInterface, loaded [concrete = constants.%GenericInterface.generic] // CHECK:STDOUT: %PackageGenericInterface.import_ref.5ab: type = import_ref PackageGenericInterface//default, loc6_28, loaded [symbolic = @GenericInterface.%U (constants.%U)] @@ -1824,7 +1826,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageGenericInterface.import_ref.53c: = import_ref PackageGenericInterface//default, loc8_70, loaded [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %PackageGenericInterface.import_ref.321: type = import_ref PackageGenericInterface//default, loc8_47, loaded [concrete = constants.%AnyParam.861] // CHECK:STDOUT: %PackageGenericInterface.import_ref.ca6: type = import_ref PackageGenericInterface//default, loc8_67, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageGenericInterface.import_ref.01e: @impl.4b5.%Op.type (%Op.type.92c) = import_ref PackageGenericInterface//default, inst154 [indirect], loaded [symbolic = @impl.4b5.%Op (constants.%Op.b8f)] +// CHECK:STDOUT: %PackageGenericInterface.import_ref.01e: @impl.4b5.%Op.type (%Op.type.92c) = import_ref PackageGenericInterface//default, inst158 [indirect], loaded [symbolic = @impl.4b5.%Op (constants.%Op.b8f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%PackageGenericInterface.import_ref.01e), @impl.4b5 [concrete] // CHECK:STDOUT: %PackageGenericInterface.import_ref.456: %K.type.7f9 = import_ref PackageGenericInterface//default, loc9_22, loaded [concrete = constants.%K.c3c] // CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%PackageGenericInterface.import_ref.456), @impl.02a [concrete] @@ -1894,8 +1896,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var: ref %AnyParam.861 = var %obj.var_patt // CHECK:STDOUT: %.loc9_50.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_50.2: init %AnyParam.861 = class_init (), %obj.var [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: %.loc8_3.1: init %AnyParam.861 = converted %.loc9_50.1, %.loc9_50.2 [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: assign %obj.var, %.loc8_3.1 +// CHECK:STDOUT: %.loc8: init %AnyParam.861 = converted %.loc9_50.1, %.loc9_50.2 [concrete = constants.%AnyParam.val] +// CHECK:STDOUT: assign %obj.var, %.loc8 // CHECK:STDOUT: %.loc9_45: type = splice_block %AnyParam [concrete = constants.%AnyParam.861] { // CHECK:STDOUT: %PackageHasParam.ref.loc8: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%PackageHasParam.AnyParam [concrete = constants.%AnyParam.generic] @@ -1916,8 +1918,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %obj.var, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc8, @Op.1(constants.%AnyParam.861) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %obj.var, %specific_fn -// CHECK:STDOUT: %.loc8_3.2: %AnyParam.861 = bind_value %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.2) +// CHECK:STDOUT: %addr: %ptr.1ef = addr_of %obj.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1968,7 +1970,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %GenericClass.generic: %GenericClass.type = struct_value () [concrete] // CHECK:STDOUT: %GenericClass: type = class_type @GenericClass, @GenericClass(%U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [concrete] // CHECK:STDOUT: %AnyParam.generic: %AnyParam.type = struct_value () [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] @@ -2001,6 +2003,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Destroy.impl_witness.418: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%AnyParam.0dd) [concrete] // CHECK:STDOUT: %Op.type.f56: type = fn_type @Op.2, @impl.49c(%AnyParam.0dd) [concrete] // CHECK:STDOUT: %Op.1fa: %Op.type.f56 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d96: type = ptr_type %AnyParam.0dd [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %AnyParam.0dd, (%Destroy.impl_witness.418) [concrete] // CHECK:STDOUT: %.94f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.1fa, @Op.2(%AnyParam.0dd) [concrete] @@ -2020,7 +2023,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] -// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst33 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded @@ -2029,7 +2032,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst40 [no loc], loaded [symbolic = constants.%Self.f64] // CHECK:STDOUT: %PackageHasParam.import_ref.ce2: %K.type.311 = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%K.7a1] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2089,7 +2092,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -2137,8 +2140,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var: ref %AnyParam.0dd = var %obj.var_patt // CHECK:STDOUT: %.loc13_54.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc13_54.2: init %AnyParam.0dd = class_init (), %obj.var [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: %.loc13_3.1: init %AnyParam.0dd = converted %.loc13_54.1, %.loc13_54.2 [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: assign %obj.var, %.loc13_3.1 +// CHECK:STDOUT: %.loc13_3: init %AnyParam.0dd = converted %.loc13_54.1, %.loc13_54.2 [concrete = constants.%AnyParam.val] +// CHECK:STDOUT: assign %obj.var, %.loc13_3 // CHECK:STDOUT: %.loc13_49: type = splice_block %AnyParam [concrete = constants.%AnyParam.0dd] { // CHECK:STDOUT: %PackageHasParam.ref.loc13: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%PackageHasParam.AnyParam [concrete = constants.%AnyParam.generic] @@ -2158,8 +2161,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %obj.var, %impl.elem0.loc13 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc13, @Op.2(constants.%AnyParam.0dd) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %obj.var, %specific_fn -// CHECK:STDOUT: %.loc13_3.2: %AnyParam.0dd = bind_value %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13_3.2(%.loc13_3.2) +// CHECK:STDOUT: %addr: %ptr.d96 = addr_of %obj.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2202,7 +2205,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [concrete] // CHECK:STDOUT: %AnyParam.generic: %AnyParam.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] @@ -2234,6 +2237,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Destroy.impl_witness.ea7: = impl_witness imports.%Destroy.impl_witness_table, @impl.1d2(%AnyParam.d71) [concrete] // CHECK:STDOUT: %Op.type.051: type = fn_type @Op.1, @impl.1d2(%AnyParam.d71) [concrete] // CHECK:STDOUT: %Op.d0b: %Op.type.051 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8ee: type = ptr_type %AnyParam.d71 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %AnyParam.d71, (%Destroy.impl_witness.ea7) [concrete] // CHECK:STDOUT: %.275: type = fn_type_with_self_type %Op.type.0fd, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d0b, @Op.1(%AnyParam.d71) [concrete] @@ -2257,11 +2261,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] -// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst33 [no loc], unloaded // CHECK:STDOUT: %PackageGenericClass.GenericClass: %GenericClass.type = import_ref PackageGenericClass//default, GenericClass, loaded [concrete = constants.%GenericClass.generic] // CHECK:STDOUT: %PackageGenericClass.import_ref.5ab: type = import_ref PackageGenericClass//default, loc6_20, loaded [symbolic = @GenericClass.%U (constants.%U)] -// CHECK:STDOUT: %PackageGenericClass.import_ref.8f2: = import_ref PackageGenericClass//default, loc6_31, loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %PackageGenericClass.import_ref.8f2: = import_ref PackageGenericClass//default, loc6_31, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %PackageGenericClass.import_ref.065 = import_ref PackageGenericClass//default, inst28 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded @@ -2272,7 +2276,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageGenericClass.import_ref.246: = import_ref PackageGenericClass//default, loc8_66, loaded [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %PackageGenericClass.import_ref.a0e: type = import_ref PackageGenericClass//default, loc8_43, loaded [concrete = constants.%AnyParam.d71] // CHECK:STDOUT: %PackageGenericClass.import_ref.ca6: type = import_ref PackageGenericClass//default, loc8_63, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageGenericClass.import_ref.9fa: @impl.1d2.%Op.type (%Op.type.5d4) = import_ref PackageGenericClass//default, inst152 [indirect], loaded [symbolic = @impl.1d2.%Op (constants.%Op.ab3)] +// CHECK:STDOUT: %PackageGenericClass.import_ref.9fa: @impl.1d2.%Op.type (%Op.type.5d4) = import_ref PackageGenericClass//default, inst156 [indirect], loaded [symbolic = @impl.1d2.%Op (constants.%Op.ab3)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%PackageGenericClass.import_ref.9fa), @impl.1d2 [concrete] // CHECK:STDOUT: %PackageGenericClass.import_ref.fbf: %K.type.9cf = import_ref PackageGenericClass//default, loc9_22, loaded [concrete = constants.%K.039] // CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%PackageGenericClass.import_ref.fbf), @impl.421 [concrete] @@ -2341,8 +2345,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %obj.var: ref %AnyParam.d71 = var %obj.var_patt // CHECK:STDOUT: %.loc8_74.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_74.2: init %AnyParam.d71 = class_init (), %obj.var [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: %.loc8_3.1: init %AnyParam.d71 = converted %.loc8_74.1, %.loc8_74.2 [concrete = constants.%AnyParam.val] -// CHECK:STDOUT: assign %obj.var, %.loc8_3.1 +// CHECK:STDOUT: %.loc8_3: init %AnyParam.d71 = converted %.loc8_74.1, %.loc8_74.2 [concrete = constants.%AnyParam.val] +// CHECK:STDOUT: assign %obj.var, %.loc8_3 // CHECK:STDOUT: %.loc8_69: type = splice_block %AnyParam [concrete = constants.%AnyParam.d71] { // CHECK:STDOUT: %PackageHasParam.ref.loc8: = name_ref PackageHasParam, imports.%PackageHasParam [concrete = imports.%PackageHasParam] // CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%PackageHasParam.AnyParam [concrete = constants.%AnyParam.generic] @@ -2363,8 +2367,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %obj.var, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc8, @Op.1(constants.%AnyParam.d71) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %obj.var, %specific_fn -// CHECK:STDOUT: %.loc8_3.2: %AnyParam.d71 = bind_value %obj.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.2) +// CHECK:STDOUT: %addr: %ptr.8ee = addr_of %obj.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index 96c83388d1eb..06bd85c62782 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -273,7 +273,7 @@ fn Call() { // CHECK:STDOUT: %Get: %Get.type = struct_value () [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] @@ -295,6 +295,7 @@ fn Call() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.2(%C) [concrete] @@ -308,7 +309,7 @@ fn Call() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.8db: = import_ref Main//get, inst23 [indirect], loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Main.import_ref.8db: = import_ref Main//get, inst23 [indirect], loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//get, inst24 [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//i, loc4_33, loaded [concrete = constants.%assoc0.3f3] @@ -321,7 +322,7 @@ fn Call() { // CHECK:STDOUT: %Main.import_ref.742: %F.type.5d6 = import_ref Main//c, loc7_34, loaded [concrete = constants.%F.a2e] // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.742), @impl.770 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -372,8 +373,8 @@ fn Call() { // CHECK:STDOUT: %bound_method.loc9_7.1: = bound_method %.loc9_7.1, %impl.elem0.loc9_7 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc9_7, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_7.2: = bound_method %.loc9_7.1, %specific_fn -// CHECK:STDOUT: %.loc9_7.4: %C = bind_value %.loc9_7.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_7.2(%.loc9_7.4) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc9_7.1 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_7.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/use_assoc_const.carbon b/toolchain/check/testdata/impl/use_assoc_const.carbon index d5ea026a0825..bc1115d06620 100644 --- a/toolchain/check/testdata/impl/use_assoc_const.carbon +++ b/toolchain/check/testdata/impl/use_assoc_const.carbon @@ -3648,6 +3648,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.ee0: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C.131) [concrete] // CHECK:STDOUT: %Op.type.b84: type = fn_type @Op.2, @impl.49c(%C.131) [concrete] // CHECK:STDOUT: %Op.e16: %Op.type.b84 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.aaa: type = ptr_type %C.131 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C.131, (%Destroy.impl_witness.ee0) [concrete] // CHECK:STDOUT: %.04b: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e16, @Op.2(%C.131) [concrete] @@ -3660,7 +3661,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3787,8 +3788,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc12_21.1: = bound_method %.loc12_21.2, %impl.elem0.loc12_21 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc12_21, @Op.2(constants.%C.131) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc12_21.2: = bound_method %.loc12_21.2, %specific_fn -// CHECK:STDOUT: %.loc12_21.5: %C.131 = bind_value %.loc12_21.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc12_21.2(%.loc12_21.5) +// CHECK:STDOUT: %addr: %ptr.aaa = addr_of %.loc12_21.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc12_21.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index 10a441e6fbce..4cac00d4b7bc 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -47,6 +47,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %ptr.f01: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete] @@ -91,6 +92,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %Destroy.impl_witness.711: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.3, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.facet.2bf: %Destroy.type = facet_value %ptr.235, (%Destroy.impl_witness.711) [concrete] // CHECK:STDOUT: %.a79: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2bf [concrete] // CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.3(%ptr.235) [concrete] @@ -117,7 +119,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -209,8 +211,8 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %.loc18_34.9: ref %i32 = array_index %a.var, %int_2.loc18_34 // CHECK:STDOUT: %.loc18_34.10: init %i32 = initialize_from %.loc18_34.8 to %.loc18_34.9 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc18_34.11: init %array_type = array_init (%.loc18_34.4, %.loc18_34.7, %.loc18_34.10) to %a.var [concrete = constants.%array] -// CHECK:STDOUT: %.loc18_3.1: init %array_type = converted %.loc18_34.1, %.loc18_34.11 [concrete = constants.%array] -// CHECK:STDOUT: assign %a.var, %.loc18_3.1 +// CHECK:STDOUT: %.loc18_3: init %array_type = converted %.loc18_34.1, %.loc18_34.11 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc18_3 // CHECK:STDOUT: %.loc18_22: type = splice_block %array_type.loc18 [concrete = constants.%array_type] { // CHECK:STDOUT: %int_32.loc18: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -235,8 +237,8 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %.loc21_21.1: %i32 = value_of_initializer %int.convert_checked.loc21 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc21_21.2: %i32 = converted %int_0.loc21, %.loc21_21.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc21_22: ref %i32 = array_index %a.ref.loc21, %.loc21_21.2 -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %.loc21_22 -// CHECK:STDOUT: assign %pa.var, %addr +// CHECK:STDOUT: %addr.loc21_18: %ptr.235 = addr_of %.loc21_22 +// CHECK:STDOUT: assign %pa.var, %addr.loc21_18 // CHECK:STDOUT: %.loc21_14: type = splice_block %ptr [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc21_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc21_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -267,14 +269,14 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %bound_method.loc21_3.1: = bound_method %pa.var, %impl.elem0.loc21_3 // CHECK:STDOUT: %specific_fn.loc21_3: = specific_function %impl.elem0.loc21_3, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc21_3.2: = bound_method %pa.var, %specific_fn.loc21_3 -// CHECK:STDOUT: %.loc21_3: %ptr.235 = bind_value %pa.var -// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%.loc21_3) +// CHECK:STDOUT: %addr.loc21_3: %ptr.5d5 = addr_of %pa.var +// CHECK:STDOUT: %no_op.loc21: init %empty_tuple.type = call %bound_method.loc21_3.2(%addr.loc21_3) // CHECK:STDOUT: %impl.elem0.loc18_3: %.9c9 = impl_witness_access constants.%Destroy.impl_witness.14a, element0 [concrete = constants.%Op.f0b] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %a.var, %impl.elem0.loc18_3 // CHECK:STDOUT: %specific_fn.loc18_3: = specific_function %impl.elem0.loc18_3, @Op.3(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %a.var, %specific_fn.loc18_3 -// CHECK:STDOUT: %.loc18_3.2: %array_type = bind_value %a.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.2) +// CHECK:STDOUT: %addr.loc18: %ptr.f01 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -317,8 +319,8 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %.loc26_34.9: ref %i32 = array_index %a.var, %int_2.loc26_34 // CHECK:STDOUT: %.loc26_34.10: init %i32 = initialize_from %.loc26_34.8 to %.loc26_34.9 [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc26_34.11: init %array_type = array_init (%.loc26_34.4, %.loc26_34.7, %.loc26_34.10) to %a.var [concrete = constants.%array] -// CHECK:STDOUT: %.loc26_3.1: init %array_type = converted %.loc26_34.1, %.loc26_34.11 [concrete = constants.%array] -// CHECK:STDOUT: assign %a.var, %.loc26_3.1 +// CHECK:STDOUT: %.loc26_3: init %array_type = converted %.loc26_34.1, %.loc26_34.11 [concrete = constants.%array] +// CHECK:STDOUT: assign %a.var, %.loc26_3 // CHECK:STDOUT: %.loc26_22: type = splice_block %array_type.loc26 [concrete = constants.%array_type] { // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -372,14 +374,14 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %bound_method.loc32_5.1: = bound_method %.loc32_5.1, %impl.elem0.loc32_5 // CHECK:STDOUT: %specific_fn.loc32_5: = specific_function %impl.elem0.loc32_5, @Op.3(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] // CHECK:STDOUT: %bound_method.loc32_5.2: = bound_method %.loc32_5.1, %specific_fn.loc32_5 -// CHECK:STDOUT: %.loc32_5.3: %array_type = bind_value %.loc32_5.1 -// CHECK:STDOUT: %no_op.loc32: init %empty_tuple.type = call %bound_method.loc32_5.2(%.loc32_5.3) +// CHECK:STDOUT: %addr.loc32: %ptr.f01 = addr_of %.loc32_5.1 +// CHECK:STDOUT: %no_op.loc32: init %empty_tuple.type = call %bound_method.loc32_5.2(%addr.loc32) // CHECK:STDOUT: %impl.elem0.loc26_3: %.9c9 = impl_witness_access constants.%Destroy.impl_witness.14a, element0 [concrete = constants.%Op.f0b] // CHECK:STDOUT: %bound_method.loc26_3.1: = bound_method %a.var, %impl.elem0.loc26_3 // CHECK:STDOUT: %specific_fn.loc26_3: = specific_function %impl.elem0.loc26_3, @Op.3(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] // CHECK:STDOUT: %bound_method.loc26_3.2: = bound_method %a.var, %specific_fn.loc26_3 -// CHECK:STDOUT: %.loc26_3.2: %array_type = bind_value %a.var -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3.2(%.loc26_3.2) +// CHECK:STDOUT: %addr.loc26: %ptr.f01 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3.2(%addr.loc26) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index 68e2f3e21825..6cb04230be76 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -56,6 +56,7 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %ptr.f01: type = ptr_type %array_type [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] @@ -93,6 +94,7 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %Destroy.impl_witness.711: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.3, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.facet.2bf: %Destroy.type = facet_value %ptr.235, (%Destroy.impl_witness.711) [concrete] // CHECK:STDOUT: %.a79: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2bf [concrete] // CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.3(%ptr.235) [concrete] @@ -111,7 +113,7 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -171,8 +173,8 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %.loc23_22.1: ref %array_type = value_as_ref %b.ref.loc23 // CHECK:STDOUT: %.loc23_22.2: ref %i32 = array_index %.loc23_22.1, %.loc23_21.2 // CHECK:STDOUT: %.loc23_22.3: %i32 = bind_value %.loc23_22.2 -// CHECK:STDOUT: %addr.loc23: %ptr.235 = addr_of [concrete = ] -// CHECK:STDOUT: assign %pb.var, %addr.loc23 +// CHECK:STDOUT: %addr.loc23_18: %ptr.235 = addr_of [concrete = ] +// CHECK:STDOUT: assign %pb.var, %addr.loc23_18 // CHECK:STDOUT: %.loc23_14: type = splice_block %ptr.loc23 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc23_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -222,8 +224,8 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %.loc36_23.2: %i32 = converted %int_0.loc36, %.loc36_23.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc36_24.1: ref %i32 = array_index %.loc36_21.2, %.loc36_23.2 // CHECK:STDOUT: %.loc36_24.2: %i32 = bind_value %.loc36_24.1 -// CHECK:STDOUT: %addr.loc36: %ptr.235 = addr_of [concrete = ] -// CHECK:STDOUT: assign %pf.var, %addr.loc36 +// CHECK:STDOUT: %addr.loc36_18: %ptr.235 = addr_of [concrete = ] +// CHECK:STDOUT: assign %pf.var, %addr.loc36_18 // CHECK:STDOUT: %.loc36_14: type = splice_block %ptr.loc36 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc36_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc36_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -258,26 +260,26 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %bound_method.loc41_5.1: = bound_method %.loc41_5.1, %impl.elem0.loc41_5 // CHECK:STDOUT: %specific_fn.loc41_5: = specific_function %impl.elem0.loc41_5, @Op.3(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] // CHECK:STDOUT: %bound_method.loc41_5.2: = bound_method %.loc41_5.1, %specific_fn.loc41_5 -// CHECK:STDOUT: %.loc41_5.3: %array_type = bind_value %.loc41_5.1 -// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_5.2(%.loc41_5.3) +// CHECK:STDOUT: %addr.loc41: %ptr.f01 = addr_of %.loc41_5.1 +// CHECK:STDOUT: %no_op.loc41: init %empty_tuple.type = call %bound_method.loc41_5.2(%addr.loc41) // CHECK:STDOUT: %impl.elem0.loc36_21: %.9c9 = impl_witness_access constants.%Destroy.impl_witness.14a, element0 [concrete = constants.%Op.f0b] // CHECK:STDOUT: %bound_method.loc36_21.1: = bound_method %.loc36_21.1, %impl.elem0.loc36_21 // CHECK:STDOUT: %specific_fn.loc36_21: = specific_function %impl.elem0.loc36_21, @Op.3(constants.%array_type) [concrete = constants.%Op.specific_fn.c51] // CHECK:STDOUT: %bound_method.loc36_21.2: = bound_method %.loc36_21.1, %specific_fn.loc36_21 -// CHECK:STDOUT: %.loc36_21.3: %array_type = bind_value %.loc36_21.1 -// CHECK:STDOUT: %no_op.loc36_21: init %empty_tuple.type = call %bound_method.loc36_21.2(%.loc36_21.3) +// CHECK:STDOUT: %addr.loc36_21: %ptr.f01 = addr_of %.loc36_21.1 +// CHECK:STDOUT: %no_op.loc36_21: init %empty_tuple.type = call %bound_method.loc36_21.2(%addr.loc36_21) // CHECK:STDOUT: %impl.elem0.loc36_3: %.a79 = impl_witness_access constants.%Destroy.impl_witness.711, element0 [concrete = constants.%Op.649] // CHECK:STDOUT: %bound_method.loc36_3.1: = bound_method %pf.var, %impl.elem0.loc36_3 // CHECK:STDOUT: %specific_fn.loc36_3: = specific_function %impl.elem0.loc36_3, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc36_3.2: = bound_method %pf.var, %specific_fn.loc36_3 -// CHECK:STDOUT: %.loc36_3: %ptr.235 = bind_value %pf.var -// CHECK:STDOUT: %no_op.loc36_3: init %empty_tuple.type = call %bound_method.loc36_3.2(%.loc36_3) +// CHECK:STDOUT: %addr.loc36_3: %ptr.5d5 = addr_of %pf.var +// CHECK:STDOUT: %no_op.loc36_3: init %empty_tuple.type = call %bound_method.loc36_3.2(%addr.loc36_3) // CHECK:STDOUT: %impl.elem0.loc23_3: %.a79 = impl_witness_access constants.%Destroy.impl_witness.711, element0 [concrete = constants.%Op.649] // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %pb.var, %impl.elem0.loc23_3 // CHECK:STDOUT: %specific_fn.loc23_3: = specific_function %impl.elem0.loc23_3, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %pb.var, %specific_fn.loc23_3 -// CHECK:STDOUT: %.loc23_3: %ptr.235 = bind_value %pb.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3) +// CHECK:STDOUT: %addr.loc23_3: %ptr.5d5 = addr_of %pb.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_name_not_found.carbon b/toolchain/check/testdata/index/fail_name_not_found.carbon index 70e4d31af23e..e98d4cfdf847 100644 --- a/toolchain/check/testdata/index/fail_name_not_found.carbon +++ b/toolchain/check/testdata/index/fail_name_not_found.carbon @@ -40,6 +40,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -54,7 +55,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -78,7 +79,7 @@ fn Main() { // CHECK:STDOUT: %a.ref: = name_ref a, [concrete = ] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: assign %b.var, -// CHECK:STDOUT: %.loc20_10: type = splice_block %i32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc20: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -87,8 +88,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %b.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %b.var, %specific_fn -// CHECK:STDOUT: %.loc20_3: %i32 = bind_value %b.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %b.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/as_type_of_type.carbon b/toolchain/check/testdata/interface/as_type_of_type.carbon index 52b78c3563ef..ed6a8d7787ac 100644 --- a/toolchain/check/testdata/interface/as_type_of_type.carbon +++ b/toolchain/check/testdata/interface/as_type_of_type.carbon @@ -33,6 +33,8 @@ fn F(T:! Empty) { // CHECK:STDOUT: %pattern_type.dad: type = pattern_type %T.as_type [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] +// CHECK:STDOUT: %ptr.5e1: type = ptr_type %T.as_type [symbolic] +// CHECK:STDOUT: %require_complete.149: = require_complete_type %ptr.5e1 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.193, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.as_type, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.868: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [symbolic] @@ -78,13 +80,15 @@ fn F(T:! Empty) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T.as_type.loc18_10.2: type = facet_access_type %T.loc17_6.2 [symbolic = %T.as_type.loc18_10.2 (constants.%T.as_type)] -// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc18_10.2 [symbolic = %require_complete (constants.%require_complete.449)] +// CHECK:STDOUT: %require_complete.loc18_10: = require_complete_type %T.as_type.loc18_10.2 [symbolic = %require_complete.loc18_10 (constants.%require_complete.449)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc18_10.2 [symbolic = %pattern_type (constants.%pattern_type.dad)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc17_6.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.as_type.loc18_10.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc18_3.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc18_3.4 (constants.%.868)] -// CHECK:STDOUT: %impl.elem0.loc18_3.2: @F.%.loc18_3.4 (%.868) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc18_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc18_3.3 (constants.%.868)] +// CHECK:STDOUT: %impl.elem0.loc18_3.2: @F.%.loc18_3.3 (%.868) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn.loc18_3.2: = specific_impl_function %impl.elem0.loc18_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc18_10.2 [symbolic = %ptr (constants.%ptr.5e1)] +// CHECK:STDOUT: %require_complete.loc18_3: = require_complete_type %ptr [symbolic = %require_complete.loc18_3 (constants.%require_complete.149)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -101,12 +105,12 @@ fn F(T:! Empty) { // CHECK:STDOUT: %x: ref @F.%T.as_type.loc18_10.2 (%T.as_type) = bind_name x, %x.var // CHECK:STDOUT: %T.as_type.loc18_3: type = facet_access_type constants.%T.193 [symbolic = %T.as_type.loc18_10.2 (constants.%T.as_type)] // CHECK:STDOUT: %.loc18_3.1: type = converted constants.%T.193, %T.as_type.loc18_3 [symbolic = %T.as_type.loc18_10.2 (constants.%T.as_type)] -// CHECK:STDOUT: %impl.elem0.loc18_3.1: @F.%.loc18_3.4 (%.868) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc18_3.1: @F.%.loc18_3.3 (%.868) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0)] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %x.var, %impl.elem0.loc18_3.1 // CHECK:STDOUT: %specific_impl_fn.loc18_3.1: = specific_impl_function %impl.elem0.loc18_3.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %x.var, %specific_impl_fn.loc18_3.1 -// CHECK:STDOUT: %.loc18_3.2: @F.%T.as_type.loc18_10.2 (%T.as_type) = bind_value %x.var -// CHECK:STDOUT: %.loc18_3.3: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.2) +// CHECK:STDOUT: %addr: @F.%ptr (%ptr.5e1) = addr_of %x.var +// CHECK:STDOUT: %.loc18_3.2: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/compound_member_access.carbon b/toolchain/check/testdata/interface/compound_member_access.carbon index abf6d23d77be..db31ad773a85 100644 --- a/toolchain/check/testdata/interface/compound_member_access.carbon +++ b/toolchain/check/testdata/interface/compound_member_access.carbon @@ -821,8 +821,8 @@ fn Works() { // CHECK:STDOUT: %require_complete.loc12: = require_complete_type %ptr [symbolic = %require_complete.loc12 (constants.%require_complete.9326df.1)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %T.loc9_12.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.87177a.1)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %T.as_type.loc9_23.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.a7da23.1)] -// CHECK:STDOUT: %.loc11_3.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc11_3.4 (constants.%.0f4deb.1)] -// CHECK:STDOUT: %impl.elem0.loc11_3.2: @Simple4.%.loc11_3.4 (%.0f4deb.1) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_3.2 (constants.%impl.elem0.71dfa9.1)] +// CHECK:STDOUT: %.loc11_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc11_3.3 (constants.%.0f4deb.1)] +// CHECK:STDOUT: %impl.elem0.loc11_3.2: @Simple4.%.loc11_3.3 (%.0f4deb.1) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_3.2 (constants.%impl.elem0.71dfa9.1)] // CHECK:STDOUT: %specific_impl_fn.loc11_3.2: = specific_impl_function %impl.elem0.loc11_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc11_3.2 (constants.%specific_impl_fn.5803ed.1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Simple4.%T.as_type.loc9_23.2 (%T.as_type)) { @@ -857,16 +857,16 @@ fn Works() { // CHECK:STDOUT: %bound_method.loc12_8: = bound_method %xcopy.ref, %impl.elem1.loc12_8.1 // CHECK:STDOUT: %specific_impl_fn.loc12_8.1: = specific_impl_function %impl.elem1.loc12_8.1, @S1(constants.%L1.facet.ed78cc.1) [symbolic = %specific_impl_fn.loc12_8.2 (constants.%specific_impl_fn.bbb82e.1)] // CHECK:STDOUT: %bound_method.loc12_12: = bound_method %xcopy.ref, %specific_impl_fn.loc12_8.1 -// CHECK:STDOUT: %addr: @Simple4.%ptr (%ptr.72f01d.2) = addr_of %xcopy.ref -// CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = call %bound_method.loc12_12(%addr) +// CHECK:STDOUT: %addr.loc12: @Simple4.%ptr (%ptr.72f01d.2) = addr_of %xcopy.ref +// CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = call %bound_method.loc12_12(%addr.loc12) // CHECK:STDOUT: %T.as_type.loc11_3: type = facet_access_type constants.%T.04c [symbolic = %T.as_type.loc9_23.2 (constants.%T.as_type)] // CHECK:STDOUT: %.loc11_3.1: type = converted constants.%T.04c, %T.as_type.loc11_3 [symbolic = %T.as_type.loc9_23.2 (constants.%T.as_type)] -// CHECK:STDOUT: %impl.elem0.loc11_3.1: @Simple4.%.loc11_3.4 (%.0f4deb.1) = impl_witness_access constants.%Destroy.lookup_impl_witness.87177a.1, element0 [symbolic = %impl.elem0.loc11_3.2 (constants.%impl.elem0.71dfa9.1)] +// CHECK:STDOUT: %impl.elem0.loc11_3.1: @Simple4.%.loc11_3.3 (%.0f4deb.1) = impl_witness_access constants.%Destroy.lookup_impl_witness.87177a.1, element0 [symbolic = %impl.elem0.loc11_3.2 (constants.%impl.elem0.71dfa9.1)] // CHECK:STDOUT: %bound_method.loc11_3.1: = bound_method %xcopy.var, %impl.elem0.loc11_3.1 // CHECK:STDOUT: %specific_impl_fn.loc11_3.1: = specific_impl_function %impl.elem0.loc11_3.1, @Op.1(constants.%Destroy.facet.a7da23.1) [symbolic = %specific_impl_fn.loc11_3.2 (constants.%specific_impl_fn.5803ed.1)] // CHECK:STDOUT: %bound_method.loc11_3.2: = bound_method %xcopy.var, %specific_impl_fn.loc11_3.1 -// CHECK:STDOUT: %.loc11_3.2: @Simple4.%T.as_type.loc9_23.2 (%T.as_type) = bind_value %xcopy.var -// CHECK:STDOUT: %.loc11_3.3: init %empty_tuple.type = call %bound_method.loc11_3.2(%.loc11_3.2) +// CHECK:STDOUT: %addr.loc11: @Simple4.%ptr (%ptr.72f01d.2) = addr_of %xcopy.var +// CHECK:STDOUT: %.loc11_3.2: init %empty_tuple.type = call %bound_method.loc11_3.2(%addr.loc11) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -890,8 +890,8 @@ fn Works() { // CHECK:STDOUT: %require_complete.loc19: = require_complete_type %ptr [symbolic = %require_complete.loc19 (constants.%require_complete.9326df.2)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %V.loc16_14.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.87177a.2)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %V.as_type.loc16_25.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.a7da23.2)] -// CHECK:STDOUT: %.loc18_3.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc18_3.4 (constants.%.0f4deb.2)] -// CHECK:STDOUT: %impl.elem0.loc18_3.2: @Compound4.%.loc18_3.4 (%.0f4deb.2) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0.71dfa9.2)] +// CHECK:STDOUT: %.loc18_3.3: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc18_3.3 (constants.%.0f4deb.2)] +// CHECK:STDOUT: %impl.elem0.loc18_3.2: @Compound4.%.loc18_3.3 (%.0f4deb.2) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0.71dfa9.2)] // CHECK:STDOUT: %specific_impl_fn.loc18_3.2: = specific_impl_function %impl.elem0.loc18_3.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn.5803ed.2)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%y.param: @Compound4.%V.as_type.loc16_25.2 (%V.as_type)) { @@ -924,16 +924,16 @@ fn Works() { // CHECK:STDOUT: %bound_method.loc19_8: = bound_method %ycopy.ref, %impl.elem1.loc19_8.1 // CHECK:STDOUT: %specific_impl_fn.loc19_8.1: = specific_impl_function %impl.elem1.loc19_8.1, @S1(constants.%L1.facet.ed78cc.2) [symbolic = %specific_impl_fn.loc19_8.2 (constants.%specific_impl_fn.bbb82e.2)] // CHECK:STDOUT: %bound_method.loc19_17: = bound_method %ycopy.ref, %specific_impl_fn.loc19_8.1 -// CHECK:STDOUT: %addr: @Compound4.%ptr (%ptr.72f01d.3) = addr_of %ycopy.ref -// CHECK:STDOUT: %.loc19_17: init %empty_tuple.type = call %bound_method.loc19_17(%addr) +// CHECK:STDOUT: %addr.loc19: @Compound4.%ptr (%ptr.72f01d.3) = addr_of %ycopy.ref +// CHECK:STDOUT: %.loc19_17: init %empty_tuple.type = call %bound_method.loc19_17(%addr.loc19) // CHECK:STDOUT: %V.as_type.loc18_3: type = facet_access_type constants.%V [symbolic = %V.as_type.loc16_25.2 (constants.%V.as_type)] // CHECK:STDOUT: %.loc18_3.1: type = converted constants.%V, %V.as_type.loc18_3 [symbolic = %V.as_type.loc16_25.2 (constants.%V.as_type)] -// CHECK:STDOUT: %impl.elem0.loc18_3.1: @Compound4.%.loc18_3.4 (%.0f4deb.2) = impl_witness_access constants.%Destroy.lookup_impl_witness.87177a.2, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0.71dfa9.2)] +// CHECK:STDOUT: %impl.elem0.loc18_3.1: @Compound4.%.loc18_3.3 (%.0f4deb.2) = impl_witness_access constants.%Destroy.lookup_impl_witness.87177a.2, element0 [symbolic = %impl.elem0.loc18_3.2 (constants.%impl.elem0.71dfa9.2)] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %ycopy.var, %impl.elem0.loc18_3.1 // CHECK:STDOUT: %specific_impl_fn.loc18_3.1: = specific_impl_function %impl.elem0.loc18_3.1, @Op.1(constants.%Destroy.facet.a7da23.2) [symbolic = %specific_impl_fn.loc18_3.2 (constants.%specific_impl_fn.5803ed.2)] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %ycopy.var, %specific_impl_fn.loc18_3.1 -// CHECK:STDOUT: %.loc18_3.2: @Compound4.%V.as_type.loc16_25.2 (%V.as_type) = bind_value %ycopy.var -// CHECK:STDOUT: %.loc18_3.3: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.2) +// CHECK:STDOUT: %addr.loc18: @Compound4.%ptr (%ptr.72f01d.3) = addr_of %ycopy.var +// CHECK:STDOUT: %.loc18_3.2: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1211,7 +1211,7 @@ fn Works() { // CHECK:STDOUT: %assoc0.d52: %A.assoc_type = assoc_entity element0, @A.%G.decl [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] // CHECK:STDOUT: %G.type.486: type = fn_type @G.2 [concrete] // CHECK:STDOUT: %G.001: %G.type.486 = struct_value () [concrete] @@ -1239,6 +1239,7 @@ fn Works() { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.4, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.4(%C) [concrete] @@ -1257,7 +1258,7 @@ fn Works() { // CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.012), @impl.865 [concrete] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1301,7 +1302,7 @@ fn Works() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -1382,20 +1383,20 @@ fn Works() { // CHECK:STDOUT: %bound_method.loc38_6.1: = bound_method %.loc38_6.2, %impl.elem0.loc38_6 // CHECK:STDOUT: %specific_fn.loc38: = specific_function %impl.elem0.loc38_6, @Op.4(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc38_6.2: = bound_method %.loc38_6.2, %specific_fn.loc38 -// CHECK:STDOUT: %.loc38_6.5: %C = bind_value %.loc38_6.2 -// CHECK:STDOUT: %no_op.loc38: init %empty_tuple.type = call %bound_method.loc38_6.2(%.loc38_6.5) +// CHECK:STDOUT: %addr.loc38: %ptr.019 = addr_of %.loc38_6.2 +// CHECK:STDOUT: %no_op.loc38: init %empty_tuple.type = call %bound_method.loc38_6.2(%addr.loc38) // CHECK:STDOUT: %impl.elem0.loc30_6: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] // CHECK:STDOUT: %bound_method.loc30_6.1: = bound_method %.loc30_6.2, %impl.elem0.loc30_6 // CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30_6, @Op.4(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc30_6.2: = bound_method %.loc30_6.2, %specific_fn.loc30 -// CHECK:STDOUT: %.loc30_6.5: %C = bind_value %.loc30_6.2 -// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_6.2(%.loc30_6.5) +// CHECK:STDOUT: %addr.loc30: %ptr.019 = addr_of %.loc30_6.2 +// CHECK:STDOUT: %no_op.loc30: init %empty_tuple.type = call %bound_method.loc30_6.2(%addr.loc30) // CHECK:STDOUT: %impl.elem0.loc22_5: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] // CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %.loc22_5.2, %impl.elem0.loc22_5 // CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22_5, @Op.4(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %.loc22_5.2, %specific_fn.loc22 -// CHECK:STDOUT: %.loc22_5.5: %C = bind_value %.loc22_5.2 -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_5.2(%.loc22_5.5) +// CHECK:STDOUT: %addr.loc22: %ptr.019 = addr_of %.loc22_5.2 +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_5.2(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/default_fn.carbon b/toolchain/check/testdata/interface/default_fn.carbon index 8bc2f3cbe880..6b756b27e77e 100644 --- a/toolchain/check/testdata/interface/default_fn.carbon +++ b/toolchain/check/testdata/interface/default_fn.carbon @@ -46,7 +46,7 @@ class C { // CHECK:STDOUT: %F.eb2: %F.type.4a2 = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %require_complete.8cb: = require_complete_type %Self.as_type.390 [symbolic] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.e5b: type = fn_type_with_self_type %F.type.0b5, %I.facet [concrete] @@ -58,6 +58,7 @@ class C { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.2, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.2(%C) [concrete] @@ -70,7 +71,7 @@ class C { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -131,7 +132,7 @@ class C { // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (@impl.c1a.%F.decl), @impl.c1a [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -157,8 +158,8 @@ class C { // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt // CHECK:STDOUT: %.loc20_19.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc20_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc20_7.1: init %C = converted %.loc20_19.1, %.loc20_19.2 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %c.var, %.loc20_7.1 +// CHECK:STDOUT: %.loc20_7: init %C = converted %.loc20_19.1, %.loc20_19.2 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %c.var, %.loc20_7 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c @@ -172,8 +173,8 @@ class C { // CHECK:STDOUT: %bound_method.loc20_7.1: = bound_method %c.var, %impl.elem0.loc20 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc20, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc20_7.2: = bound_method %c.var, %specific_fn -// CHECK:STDOUT: %.loc20_7.2: %C = bind_value %c.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_7.2(%.loc20_7.2) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_7.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index d19f4644769b..abc9d58799bf 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -114,7 +114,7 @@ fn CallIndirect() { // CHECK:STDOUT: %assoc0.5f6: %A.assoc_type.296 = assoc_entity element0, @A.%F.decl [concrete] // CHECK:STDOUT: %A.impl_witness: = impl_witness file.%A.impl_witness_table [concrete] // CHECK:STDOUT: %U.8b3: type = bind_symbolic_name U, 0 [symbolic] -// CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %U.8b3 [symbolic] +// CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %U.8b3 [symbolic] // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] // CHECK:STDOUT: %tuple.type.765: type = tuple_type (%X, %Y, %U.8b3) [symbolic] // CHECK:STDOUT: %pattern_type.340: type = pattern_type %tuple.type.765 [symbolic] @@ -123,7 +123,7 @@ fn CallIndirect() { // CHECK:STDOUT: %A.facet.552: %A.type.91f = facet_value %Y, (%A.impl_witness) [concrete] // CHECK:STDOUT: %tuple.type.a0c: type = tuple_type (type, %A.type.91f, type) [concrete] // CHECK:STDOUT: %require_complete.816: = require_complete_type %tuple.type.765 [symbolic] -// CHECK:STDOUT: %require_complete.4aeca8.1: = require_complete_type %U.8b3 [symbolic] +// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %U.8b3 [symbolic] // CHECK:STDOUT: %tuple.type.a41: type = tuple_type (%empty_struct_type, %empty_struct_type, %U.8b3) [symbolic] // CHECK:STDOUT: %X.val: %X = struct_value () [concrete] // CHECK:STDOUT: %Y.val: %Y = struct_value () [concrete] @@ -142,13 +142,15 @@ fn CallIndirect() { // CHECK:STDOUT: %Destroy.impl_witness.347: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Z) [concrete] // CHECK:STDOUT: %Op.type.f73: type = fn_type @Op.2, @impl.49c(%Z) [concrete] // CHECK:STDOUT: %Op.6e3: %Op.type.f73 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.fb6: type = ptr_type %Z [concrete] // CHECK:STDOUT: %Destroy.facet.26a: %Destroy.type = facet_value %Z, (%Destroy.impl_witness.347) [concrete] // CHECK:STDOUT: %.b91: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.26a [concrete] // CHECK:STDOUT: %Op.specific_fn.3b7: = specific_function %Op.6e3, @Op.2(%Z) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.955: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%tuple.type.f6b) [concrete] // CHECK:STDOUT: %Op.type.495: type = fn_type @Op.2, @impl.49c(%tuple.type.f6b) [concrete] // CHECK:STDOUT: %Op.51a: %Op.type.495 = struct_value () [concrete] -// CHECK:STDOUT: %complete_type.a64: = complete_type_witness %tuple.type.f6b [concrete] +// CHECK:STDOUT: %ptr.959: type = ptr_type %tuple.type.f6b [concrete] +// CHECK:STDOUT: %complete_type.456: = complete_type_witness %ptr.959 [concrete] // CHECK:STDOUT: %Destroy.facet.1f2: %Destroy.type = facet_value %tuple.type.f6b, (%Destroy.impl_witness.955) [concrete] // CHECK:STDOUT: %.a86: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1f2 [concrete] // CHECK:STDOUT: %Op.specific_fn.8e5: = specific_function %Op.51a, @Op.2(%tuple.type.f6b) [concrete] @@ -165,15 +167,17 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.f25: type = pattern_type %tuple.type.e28 [symbolic] // CHECK:STDOUT: %specific_impl_fn.e7e: = specific_impl_function %impl.elem0.0e5, @F.1(%X, %A.facet.11f, %Z) [symbolic] // CHECK:STDOUT: %require_complete.500: = require_complete_type %tuple.type.e28 [symbolic] +// CHECK:STDOUT: %ptr.103: type = ptr_type %tuple.type.e28 [symbolic] +// CHECK:STDOUT: %require_complete.8d3: = require_complete_type %ptr.103 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.e28, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.1a6: %Destroy.type = facet_value %tuple.type.e28, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1a6 [symbolic] // CHECK:STDOUT: %impl.elem0.305: %.efa = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.52a: = specific_impl_function %impl.elem0.305, @Op.1(%Destroy.facet.1a6) [symbolic] -// CHECK:STDOUT: %require_complete.19f: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [concrete] // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete] // CHECK:STDOUT: %CallGeneric.specific_fn: = specific_function %CallGeneric, @CallGeneric(%A.facet.552) [concrete] +// CHECK:STDOUT: %complete_type.a64: = complete_type_witness %tuple.type.f6b [concrete] // CHECK:STDOUT: %tuple.type.9c8: type = tuple_type (%empty_struct_type, %empty_struct_type, %Z) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -184,7 +188,7 @@ fn CallIndirect() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -278,8 +282,8 @@ fn CallIndirect() { // CHECK:STDOUT: impl @impl.5ec: %Y.ref as %A.type { // CHECK:STDOUT: %F.decl: %F.type.436 = fn_decl @F.2 [concrete = constants.%F.ce9] { // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete] -// CHECK:STDOUT: %u.patt: @F.2.%pattern_type.loc16_18 (%pattern_type.7dcd0a.1) = binding_pattern u [concrete] -// CHECK:STDOUT: %u.param_patt: @F.2.%pattern_type.loc16_18 (%pattern_type.7dcd0a.1) = value_param_pattern %u.patt, call_param0 [concrete] +// CHECK:STDOUT: %u.patt: @F.2.%pattern_type.loc16_18 (%pattern_type.7dc) = binding_pattern u [concrete] +// CHECK:STDOUT: %u.param_patt: @F.2.%pattern_type.loc16_18 (%pattern_type.7dc) = value_param_pattern %u.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: @F.2.%pattern_type.loc16_24 (%pattern_type.340) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @F.2.%pattern_type.loc16_24 (%pattern_type.340) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { @@ -346,13 +350,13 @@ fn CallIndirect() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.2(%U.loc16_8.2: type) { // CHECK:STDOUT: %U.loc16_8.1: type = bind_symbolic_name U, 0 [symbolic = %U.loc16_8.1 (constants.%U.8b3)] -// CHECK:STDOUT: %pattern_type.loc16_18: type = pattern_type %U.loc16_8.1 [symbolic = %pattern_type.loc16_18 (constants.%pattern_type.7dcd0a.1)] +// CHECK:STDOUT: %pattern_type.loc16_18: type = pattern_type %U.loc16_8.1 [symbolic = %pattern_type.loc16_18 (constants.%pattern_type.7dc)] // CHECK:STDOUT: %tuple.type.loc16: type = tuple_type (constants.%X, constants.%Y, %U.loc16_8.1) [symbolic = %tuple.type.loc16 (constants.%tuple.type.765)] // CHECK:STDOUT: %pattern_type.loc16_24: type = pattern_type %tuple.type.loc16 [symbolic = %pattern_type.loc16_24 (constants.%pattern_type.340)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc16_24: = require_complete_type %tuple.type.loc16 [symbolic = %require_complete.loc16_24 (constants.%require_complete.816)] -// CHECK:STDOUT: %require_complete.loc16_19: = require_complete_type %U.loc16_8.1 [symbolic = %require_complete.loc16_19 (constants.%require_complete.4aeca8.1)] +// CHECK:STDOUT: %require_complete.loc16_19: = require_complete_type %U.loc16_8.1 [symbolic = %require_complete.loc16_19 (constants.%require_complete.4ae)] // CHECK:STDOUT: %tuple.type.loc17: type = tuple_type (constants.%empty_struct_type, constants.%empty_struct_type, %U.loc16_8.1) [symbolic = %tuple.type.loc17 (constants.%tuple.type.a41)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @F.2.%U.loc16_8.1 (%U.8b3)) -> %return.param: @F.2.%tuple.type.loc16 (%tuple.type.765) { @@ -403,21 +407,14 @@ fn CallIndirect() { // CHECK:STDOUT: %bound_method.loc22_21.1: = bound_method %.loc22_21.2, %impl.elem0.loc22_21 // CHECK:STDOUT: %specific_fn.loc22_21: = specific_function %impl.elem0.loc22_21, @Op.2(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] // CHECK:STDOUT: %bound_method.loc22_21.2: = bound_method %.loc22_21.2, %specific_fn.loc22_21 -// CHECK:STDOUT: %.loc22_21.7: %Z = bind_value %.loc22_21.2 -// CHECK:STDOUT: %no_op.loc22_21: init %empty_tuple.type = call %bound_method.loc22_21.2(%.loc22_21.7) +// CHECK:STDOUT: %addr.loc22_21: %ptr.fb6 = addr_of %.loc22_21.2 +// CHECK:STDOUT: %no_op.loc22_21: init %empty_tuple.type = call %bound_method.loc22_21.2(%addr.loc22_21) // CHECK:STDOUT: %impl.elem0.loc22_22: %.a86 = impl_witness_access constants.%Destroy.impl_witness.955, element0 [concrete = constants.%Op.51a] // CHECK:STDOUT: %bound_method.loc22_22.1: = bound_method %.loc22_22.1, %impl.elem0.loc22_22 // CHECK:STDOUT: %specific_fn.loc22_22: = specific_function %impl.elem0.loc22_22, @Op.2(constants.%tuple.type.f6b) [concrete = constants.%Op.specific_fn.8e5] // CHECK:STDOUT: %bound_method.loc22_22.2: = bound_method %.loc22_22.1, %specific_fn.loc22_22 -// CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %.loc22_22.1, element0 -// CHECK:STDOUT: %.loc22_22.3: %X = bind_value %tuple.elem0 -// CHECK:STDOUT: %tuple.elem1: ref %Y = tuple_access %.loc22_22.1, element1 -// CHECK:STDOUT: %.loc22_22.4: %Y = bind_value %tuple.elem1 -// CHECK:STDOUT: %tuple.elem2: ref %Z = tuple_access %.loc22_22.1, element2 -// CHECK:STDOUT: %.loc22_22.5: %Z = bind_value %tuple.elem2 -// CHECK:STDOUT: %tuple: %tuple.type.f6b = tuple_value (%.loc22_22.3, %.loc22_22.4, %.loc22_22.5) -// CHECK:STDOUT: %.loc22_22.6: %tuple.type.f6b = converted %.loc22_22.1, %tuple -// CHECK:STDOUT: %no_op.loc22_22: init %empty_tuple.type = call %bound_method.loc22_22.2(%.loc22_22.6) +// CHECK:STDOUT: %addr.loc22_22: %ptr.959 = addr_of %.loc22_22.1 +// CHECK:STDOUT: %no_op.loc22_22: init %empty_tuple.type = call %bound_method.loc22_22.2(%addr.loc22_22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -435,10 +432,11 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.loc26_12.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc26_12.1 (constants.%require_complete.500)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1a6)] -// CHECK:STDOUT: %.loc26_12.9: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc26_12.9 (constants.%.efa)] -// CHECK:STDOUT: %impl.elem0.loc26_12.2: @CallGeneric.%.loc26_12.9 (%.efa) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_12.2 (constants.%impl.elem0.305)] +// CHECK:STDOUT: %.loc26_12.5: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc26_12.5 (constants.%.efa)] +// CHECK:STDOUT: %impl.elem0.loc26_12.2: @CallGeneric.%.loc26_12.5 (%.efa) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_12.2 (constants.%impl.elem0.305)] // CHECK:STDOUT: %specific_impl_fn.loc26_12.2: = specific_impl_function %impl.elem0.loc26_12.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc26_12.2 (constants.%specific_impl_fn.52a)] -// CHECK:STDOUT: %require_complete.loc26_12.2: = require_complete_type %T.as_type.loc26_4.2 [symbolic = %require_complete.loc26_12.2 (constants.%require_complete.19f)] +// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.103)] +// CHECK:STDOUT: %require_complete.loc26_12.2: = require_complete_type %ptr [symbolic = %require_complete.loc26_12.2 (constants.%require_complete.8d3)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -463,21 +461,14 @@ fn CallIndirect() { // CHECK:STDOUT: %bound_method.loc26_11.1: = bound_method %.loc26_11.2, %impl.elem0.loc26_11 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc26_11, @Op.2(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] // CHECK:STDOUT: %bound_method.loc26_11.2: = bound_method %.loc26_11.2, %specific_fn -// CHECK:STDOUT: %.loc26_11.7: %Z = bind_value %.loc26_11.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_11.2(%.loc26_11.7) -// CHECK:STDOUT: %impl.elem0.loc26_12.1: @CallGeneric.%.loc26_12.9 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_12.2 (constants.%impl.elem0.305)] +// CHECK:STDOUT: %addr.loc26_11: %ptr.fb6 = addr_of %.loc26_11.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc26_11.2(%addr.loc26_11) +// CHECK:STDOUT: %impl.elem0.loc26_12.1: @CallGeneric.%.loc26_12.5 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_12.2 (constants.%impl.elem0.305)] // CHECK:STDOUT: %bound_method.loc26_12.1: = bound_method %.loc26_12.1, %impl.elem0.loc26_12.1 // CHECK:STDOUT: %specific_impl_fn.loc26_12.1: = specific_impl_function %impl.elem0.loc26_12.1, @Op.1(constants.%Destroy.facet.1a6) [symbolic = %specific_impl_fn.loc26_12.2 (constants.%specific_impl_fn.52a)] // CHECK:STDOUT: %bound_method.loc26_12.2: = bound_method %.loc26_12.1, %specific_impl_fn.loc26_12.1 -// CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %.loc26_12.1, element0 -// CHECK:STDOUT: %.loc26_12.4: %X = bind_value %tuple.elem0 -// CHECK:STDOUT: %tuple.elem1: ref @CallGeneric.%T.as_type.loc26_4.2 (%T.as_type) = tuple_access %.loc26_12.1, element1 -// CHECK:STDOUT: %.loc26_12.5: @CallGeneric.%T.as_type.loc26_4.2 (%T.as_type) = bind_value %tuple.elem1 -// CHECK:STDOUT: %tuple.elem2: ref %Z = tuple_access %.loc26_12.1, element2 -// CHECK:STDOUT: %.loc26_12.6: %Z = bind_value %tuple.elem2 -// CHECK:STDOUT: %tuple: @CallGeneric.%tuple.type (%tuple.type.e28) = tuple_value (%.loc26_12.4, %.loc26_12.5, %.loc26_12.6) -// CHECK:STDOUT: %.loc26_12.7: @CallGeneric.%tuple.type (%tuple.type.e28) = converted %.loc26_12.1, %tuple -// CHECK:STDOUT: %.loc26_12.8: init %empty_tuple.type = call %bound_method.loc26_12.2(%.loc26_12.7) +// CHECK:STDOUT: %addr.loc26_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc26_12.1 +// CHECK:STDOUT: %.loc26_12.4: init %empty_tuple.type = call %bound_method.loc26_12.2(%addr.loc26_12) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -523,14 +514,14 @@ fn CallIndirect() { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%U.8b3) { // CHECK:STDOUT: %U.loc16_8.1 => constants.%U.8b3 -// CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.7dcd0a.1 +// CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.7dc // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.765 // CHECK:STDOUT: %pattern_type.loc16_24 => constants.%pattern_type.340 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%X, constants.%A.facet.552, constants.%U.8b3) { // CHECK:STDOUT: %U.loc6_8.1 => constants.%U.8b3 -// CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.7dcd0a.1 +// CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.7dc // CHECK:STDOUT: %T => constants.%X // CHECK:STDOUT: %A.type => constants.%A.type.91f // CHECK:STDOUT: %Self => constants.%A.facet.552 @@ -582,10 +573,11 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.loc26_12.1 => constants.%complete_type.a64 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.955 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1f2 -// CHECK:STDOUT: %.loc26_12.9 => constants.%.a86 +// CHECK:STDOUT: %.loc26_12.5 => constants.%.a86 // CHECK:STDOUT: %impl.elem0.loc26_12.2 => constants.%Op.51a // CHECK:STDOUT: %specific_impl_fn.loc26_12.2 => constants.%Op.specific_fn.8e5 -// CHECK:STDOUT: %require_complete.loc26_12.2 => constants.%complete_type.357 +// CHECK:STDOUT: %ptr => constants.%ptr.959 +// CHECK:STDOUT: %require_complete.loc26_12.2 => constants.%complete_type.456 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%X, constants.%A.facet.552, constants.%Z) { @@ -678,13 +670,15 @@ fn CallIndirect() { // CHECK:STDOUT: %Destroy.impl_witness.347: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%Z) [concrete] // CHECK:STDOUT: %Op.type.f73: type = fn_type @Op.2, @impl.49c(%Z) [concrete] // CHECK:STDOUT: %Op.6e3: %Op.type.f73 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.fb6: type = ptr_type %Z [concrete] // CHECK:STDOUT: %Destroy.facet.26a: %Destroy.type = facet_value %Z, (%Destroy.impl_witness.347) [concrete] // CHECK:STDOUT: %.b91: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.26a [concrete] // CHECK:STDOUT: %Op.specific_fn.3b7: = specific_function %Op.6e3, @Op.2(%Z) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.c80: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%tuple.type.415) [concrete] // CHECK:STDOUT: %Op.type.2a3: type = fn_type @Op.2, @impl.49c(%tuple.type.415) [concrete] // CHECK:STDOUT: %Op.66e: %Op.type.2a3 = struct_value () [concrete] -// CHECK:STDOUT: %complete_type.aa8: = complete_type_witness %tuple.type.415 [concrete] +// CHECK:STDOUT: %ptr.ad9: type = ptr_type %tuple.type.415 [concrete] +// CHECK:STDOUT: %complete_type.e23: = complete_type_witness %ptr.ad9 [concrete] // CHECK:STDOUT: %Destroy.facet.2b1: %Destroy.type = facet_value %tuple.type.415, (%Destroy.impl_witness.c80) [concrete] // CHECK:STDOUT: %.1b7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2b1 [concrete] // CHECK:STDOUT: %Op.specific_fn.ce9: = specific_function %Op.66e, @Op.2(%tuple.type.415) [concrete] @@ -702,16 +696,17 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.f25: type = pattern_type %tuple.type.e28 [symbolic] // CHECK:STDOUT: %specific_impl_fn.e7e: = specific_impl_function %impl.elem0.0e5, @F.1(%X, %A.facet.11f, %Z) [symbolic] // CHECK:STDOUT: %require_complete.500: = require_complete_type %tuple.type.e28 [symbolic] +// CHECK:STDOUT: %ptr.103: type = ptr_type %tuple.type.e28 [symbolic] +// CHECK:STDOUT: %require_complete.8d3: = require_complete_type %ptr.103 [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.e28, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.1a6: %Destroy.type = facet_value %tuple.type.e28, (%Destroy.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.efa: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.1a6 [symbolic] // CHECK:STDOUT: %impl.elem0.305: %.efa = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.52a: = specific_impl_function %impl.elem0.305, @Op.1(%Destroy.facet.1a6) [symbolic] -// CHECK:STDOUT: %require_complete.19f: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [concrete] // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete] // CHECK:STDOUT: %CallGeneric.specific_fn: = specific_function %CallGeneric, @CallGeneric(%A.facet.414) [concrete] -// CHECK:STDOUT: %complete_type.4d1: = complete_type_witness %tuple.type.a46 [concrete] +// CHECK:STDOUT: %complete_type.aa8: = complete_type_witness %tuple.type.415 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -721,7 +716,7 @@ fn CallIndirect() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -981,26 +976,14 @@ fn CallIndirect() { // CHECK:STDOUT: %bound_method.loc24_38.1: = bound_method %.loc24_38.2, %impl.elem0.loc24_38 // CHECK:STDOUT: %specific_fn.loc24_38: = specific_function %impl.elem0.loc24_38, @Op.2(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] // CHECK:STDOUT: %bound_method.loc24_38.2: = bound_method %.loc24_38.2, %specific_fn.loc24_38 -// CHECK:STDOUT: %.loc24_38.7: %Z = bind_value %.loc24_38.2 -// CHECK:STDOUT: %no_op.loc24_38: init %empty_tuple.type = call %bound_method.loc24_38.2(%.loc24_38.7) +// CHECK:STDOUT: %addr.loc24_38: %ptr.fb6 = addr_of %.loc24_38.2 +// CHECK:STDOUT: %no_op.loc24_38: init %empty_tuple.type = call %bound_method.loc24_38.2(%addr.loc24_38) // CHECK:STDOUT: %impl.elem0.loc24_39: %.1b7 = impl_witness_access constants.%Destroy.impl_witness.c80, element0 [concrete = constants.%Op.66e] // CHECK:STDOUT: %bound_method.loc24_39.1: = bound_method %.loc24_39.1, %impl.elem0.loc24_39 // CHECK:STDOUT: %specific_fn.loc24_39: = specific_function %impl.elem0.loc24_39, @Op.2(constants.%tuple.type.415) [concrete = constants.%Op.specific_fn.ce9] // CHECK:STDOUT: %bound_method.loc24_39.2: = bound_method %.loc24_39.1, %specific_fn.loc24_39 -// CHECK:STDOUT: %tuple.elem0.loc24_39.1: ref %X = tuple_access %.loc24_39.1, element0 -// CHECK:STDOUT: %.loc24_39.3: %X = bind_value %tuple.elem0.loc24_39.1 -// CHECK:STDOUT: %tuple.elem1.loc24_39.1: ref %tuple.type.a46 = tuple_access %.loc24_39.1, element1 -// CHECK:STDOUT: %tuple.elem0.loc24_39.2: ref %Y1 = tuple_access %tuple.elem1.loc24_39.1, element0 -// CHECK:STDOUT: %.loc24_39.4: %Y1 = bind_value %tuple.elem0.loc24_39.2 -// CHECK:STDOUT: %tuple.elem1.loc24_39.2: ref %Y2 = tuple_access %tuple.elem1.loc24_39.1, element1 -// CHECK:STDOUT: %.loc24_39.5: %Y2 = bind_value %tuple.elem1.loc24_39.2 -// CHECK:STDOUT: %tuple.loc24_39.1: %tuple.type.a46 = tuple_value (%.loc24_39.4, %.loc24_39.5) -// CHECK:STDOUT: %.loc24_39.6: %tuple.type.a46 = converted %tuple.elem1.loc24_39.1, %tuple.loc24_39.1 -// CHECK:STDOUT: %tuple.elem2: ref %Z = tuple_access %.loc24_39.1, element2 -// CHECK:STDOUT: %.loc24_39.7: %Z = bind_value %tuple.elem2 -// CHECK:STDOUT: %tuple.loc24_39.2: %tuple.type.415 = tuple_value (%.loc24_39.3, %.loc24_39.6, %.loc24_39.7) -// CHECK:STDOUT: %.loc24_39.8: %tuple.type.415 = converted %.loc24_39.1, %tuple.loc24_39.2 -// CHECK:STDOUT: %no_op.loc24_39: init %empty_tuple.type = call %bound_method.loc24_39.2(%.loc24_39.8) +// CHECK:STDOUT: %addr.loc24_39: %ptr.ad9 = addr_of %.loc24_39.1 +// CHECK:STDOUT: %no_op.loc24_39: init %empty_tuple.type = call %bound_method.loc24_39.2(%addr.loc24_39) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1018,10 +1001,11 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.loc28_12.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc28_12.1 (constants.%require_complete.500)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.1a6)] -// CHECK:STDOUT: %.loc28_12.9: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc28_12.9 (constants.%.efa)] -// CHECK:STDOUT: %impl.elem0.loc28_12.2: @CallGeneric.%.loc28_12.9 (%.efa) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_12.2 (constants.%impl.elem0.305)] +// CHECK:STDOUT: %.loc28_12.5: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc28_12.5 (constants.%.efa)] +// CHECK:STDOUT: %impl.elem0.loc28_12.2: @CallGeneric.%.loc28_12.5 (%.efa) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_12.2 (constants.%impl.elem0.305)] // CHECK:STDOUT: %specific_impl_fn.loc28_12.2: = specific_impl_function %impl.elem0.loc28_12.2, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc28_12.2 (constants.%specific_impl_fn.52a)] -// CHECK:STDOUT: %require_complete.loc28_12.2: = require_complete_type %T.as_type.loc28_4.2 [symbolic = %require_complete.loc28_12.2 (constants.%require_complete.19f)] +// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.103)] +// CHECK:STDOUT: %require_complete.loc28_12.2: = require_complete_type %ptr [symbolic = %require_complete.loc28_12.2 (constants.%require_complete.8d3)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: @@ -1046,21 +1030,14 @@ fn CallIndirect() { // CHECK:STDOUT: %bound_method.loc28_11.1: = bound_method %.loc28_11.2, %impl.elem0.loc28_11 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc28_11, @Op.2(constants.%Z) [concrete = constants.%Op.specific_fn.3b7] // CHECK:STDOUT: %bound_method.loc28_11.2: = bound_method %.loc28_11.2, %specific_fn -// CHECK:STDOUT: %.loc28_11.7: %Z = bind_value %.loc28_11.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc28_11.2(%.loc28_11.7) -// CHECK:STDOUT: %impl.elem0.loc28_12.1: @CallGeneric.%.loc28_12.9 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_12.2 (constants.%impl.elem0.305)] +// CHECK:STDOUT: %addr.loc28_11: %ptr.fb6 = addr_of %.loc28_11.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc28_11.2(%addr.loc28_11) +// CHECK:STDOUT: %impl.elem0.loc28_12.1: @CallGeneric.%.loc28_12.5 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_12.2 (constants.%impl.elem0.305)] // CHECK:STDOUT: %bound_method.loc28_12.1: = bound_method %.loc28_12.1, %impl.elem0.loc28_12.1 // CHECK:STDOUT: %specific_impl_fn.loc28_12.1: = specific_impl_function %impl.elem0.loc28_12.1, @Op.1(constants.%Destroy.facet.1a6) [symbolic = %specific_impl_fn.loc28_12.2 (constants.%specific_impl_fn.52a)] // CHECK:STDOUT: %bound_method.loc28_12.2: = bound_method %.loc28_12.1, %specific_impl_fn.loc28_12.1 -// CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %.loc28_12.1, element0 -// CHECK:STDOUT: %.loc28_12.4: %X = bind_value %tuple.elem0 -// CHECK:STDOUT: %tuple.elem1: ref @CallGeneric.%T.as_type.loc28_4.2 (%T.as_type) = tuple_access %.loc28_12.1, element1 -// CHECK:STDOUT: %.loc28_12.5: @CallGeneric.%T.as_type.loc28_4.2 (%T.as_type) = bind_value %tuple.elem1 -// CHECK:STDOUT: %tuple.elem2: ref %Z = tuple_access %.loc28_12.1, element2 -// CHECK:STDOUT: %.loc28_12.6: %Z = bind_value %tuple.elem2 -// CHECK:STDOUT: %tuple: @CallGeneric.%tuple.type (%tuple.type.e28) = tuple_value (%.loc28_12.4, %.loc28_12.5, %.loc28_12.6) -// CHECK:STDOUT: %.loc28_12.7: @CallGeneric.%tuple.type (%tuple.type.e28) = converted %.loc28_12.1, %tuple -// CHECK:STDOUT: %.loc28_12.8: init %empty_tuple.type = call %bound_method.loc28_12.2(%.loc28_12.7) +// CHECK:STDOUT: %addr.loc28_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc28_12.1 +// CHECK:STDOUT: %.loc28_12.4: init %empty_tuple.type = call %bound_method.loc28_12.2(%addr.loc28_12) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1225,10 +1202,11 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.loc28_12.1 => constants.%complete_type.aa8 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.c80 // CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.2b1 -// CHECK:STDOUT: %.loc28_12.9 => constants.%.1b7 +// CHECK:STDOUT: %.loc28_12.5 => constants.%.1b7 // CHECK:STDOUT: %impl.elem0.loc28_12.2 => constants.%Op.66e // CHECK:STDOUT: %specific_impl_fn.loc28_12.2 => constants.%Op.specific_fn.ce9 -// CHECK:STDOUT: %require_complete.loc28_12.2 => constants.%complete_type.4d1 +// CHECK:STDOUT: %ptr => constants.%ptr.ad9 +// CHECK:STDOUT: %require_complete.loc28_12.2 => constants.%complete_type.e23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%X, constants.%A.facet.414, constants.%Z) { diff --git a/toolchain/check/testdata/interop/cpp/function/class.carbon b/toolchain/check/testdata/interop/cpp/function/class.carbon index 6cbd78bebebe..d19bfa25c98d 100644 --- a/toolchain/check/testdata/interop/cpp/function/class.carbon +++ b/toolchain/check/testdata/interop/cpp/function/class.carbon @@ -399,6 +399,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.4f0: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.4f0) [concrete] // CHECK:STDOUT: %.b20: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.21b, @Op.2(%C) [concrete] @@ -416,7 +417,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -435,8 +436,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %C = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -457,6 +458,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.4f0: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.4f0) [concrete] // CHECK:STDOUT: %.b20: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.21b, @Op.2(%C) [concrete] @@ -474,7 +476,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -493,8 +495,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %C = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -515,6 +517,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.4f0: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.4f0) [concrete] // CHECK:STDOUT: %.b20: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.21b, @Op.2(%C) [concrete] @@ -532,7 +535,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -551,8 +554,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %C = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -573,6 +576,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.86f: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.9ae: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.dbb: %Op.type.9ae = struct_value () [concrete] +// CHECK:STDOUT: %ptr.838: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.86f) [concrete] // CHECK:STDOUT: %.268: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.dbb, @Op.2(%C) [concrete] @@ -588,7 +592,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -607,8 +611,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %C = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.838 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -629,6 +633,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.5c3: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.b28: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.f48: %Op.type.b28 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.c0c: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.5c3) [concrete] // CHECK:STDOUT: %.f7d: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.f48, @Op.2(%C) [concrete] @@ -648,7 +653,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -668,8 +673,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_15.1: = bound_method %.loc8_15.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_15.2: = bound_method %.loc8_15.2, %specific_fn -// CHECK:STDOUT: %.loc8_15.7: %C = bind_value %.loc8_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_15.2(%.loc8_15.7) +// CHECK:STDOUT: %addr: %ptr.c0c = addr_of %.loc8_15.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_15.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -692,6 +697,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.4f0: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.4f0) [concrete] // CHECK:STDOUT: %.b20: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.21b, @Op.2(%C) [concrete] @@ -710,7 +716,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -734,8 +740,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc9_12.1: = bound_method %.loc9_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_12.2: = bound_method %.loc9_12.2, %specific_fn -// CHECK:STDOUT: %.loc9_12.7: %C = bind_value %.loc9_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_12.2(%.loc9_12.7) +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc9_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -758,6 +764,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.4f0: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.4f0) [concrete] // CHECK:STDOUT: %.b20: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.21b, @Op.2(%C) [concrete] @@ -776,7 +783,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -799,8 +806,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %C = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -864,6 +871,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.4f0: = impl_witness imports.%Destroy.impl_witness_table, @impl(%C) [concrete] // CHECK:STDOUT: %Op.type.1b3: type = fn_type @Op.2, @impl(%C) [concrete] // CHECK:STDOUT: %Op.21b: %Op.type.1b3 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d9e: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.4f0) [concrete] // CHECK:STDOUT: %.b20: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.21b, @Op.2(%C) [concrete] @@ -881,7 +889,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -896,8 +904,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %.loc8_11.1, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %.loc8_11.1, %specific_fn -// CHECK:STDOUT: %.loc8_11.3: %C = bind_value %.loc8_11.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_11.2(%.loc8_11.3) +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc8_11.1 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_11.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/param_int16.carbon b/toolchain/check/testdata/interop/cpp/function/param_int16.carbon index f2ddf6a62986..ff9097fc02f1 100644 --- a/toolchain/check/testdata/interop/cpp/function/param_int16.carbon +++ b/toolchain/check/testdata/interop/cpp/function/param_int16.carbon @@ -839,7 +839,7 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(%int_16) [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %i16 [concrete] +// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -855,7 +855,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i16 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr = addr_of %a.ref +// CHECK:STDOUT: %addr.loc16: %ptr.251 = addr_of %a.ref // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -864,7 +864,7 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(%int_16) [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %i16 [concrete] +// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -880,7 +880,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i16 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr = addr_of %a.ref +// CHECK:STDOUT: %addr.loc16: %ptr.251 = addr_of %a.ref // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/param_int32.carbon b/toolchain/check/testdata/interop/cpp/function/param_int32.carbon index b33925bcb061..4dc4af390e28 100644 --- a/toolchain/check/testdata/interop/cpp/function/param_int32.carbon +++ b/toolchain/check/testdata/interop/cpp/function/param_int32.carbon @@ -1082,7 +1082,7 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1098,7 +1098,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr = addr_of %a.ref +// CHECK:STDOUT: %addr.loc16: %ptr.235 = addr_of %a.ref // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1107,7 +1107,7 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1123,7 +1123,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr = addr_of %a.ref +// CHECK:STDOUT: %addr.loc16: %ptr.235 = addr_of %a.ref // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/struct.carbon b/toolchain/check/testdata/interop/cpp/function/struct.carbon index a21ecac79482..c5f19ffddebc 100644 --- a/toolchain/check/testdata/interop/cpp/function/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/function/struct.carbon @@ -399,6 +399,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.2d2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.642: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.2d2) [concrete] // CHECK:STDOUT: %.271: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ab5, @Op.2(%S) [concrete] @@ -416,7 +417,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -435,8 +436,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %S = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -457,6 +458,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.2d2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.642: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.2d2) [concrete] // CHECK:STDOUT: %.271: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ab5, @Op.2(%S) [concrete] @@ -474,7 +476,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -493,8 +495,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %S = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -515,6 +517,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.2d2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.642: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.2d2) [concrete] // CHECK:STDOUT: %.271: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ab5, @Op.2(%S) [concrete] @@ -532,7 +535,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -551,8 +554,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %S = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -573,6 +576,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.0f8: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.2b5: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.9b3: %Op.type.2b5 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.edf: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.0f8) [concrete] // CHECK:STDOUT: %.f1f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.9b3, @Op.2(%S) [concrete] @@ -588,7 +592,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -607,8 +611,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %S = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.edf = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -629,6 +633,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.1b1: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.17f: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.463: %Op.type.17f = struct_value () [concrete] +// CHECK:STDOUT: %ptr.887: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.1b1) [concrete] // CHECK:STDOUT: %.74f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.463, @Op.2(%S) [concrete] @@ -648,7 +653,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -668,8 +673,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_15.1: = bound_method %.loc8_15.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_15.2: = bound_method %.loc8_15.2, %specific_fn -// CHECK:STDOUT: %.loc8_15.7: %S = bind_value %.loc8_15.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_15.2(%.loc8_15.7) +// CHECK:STDOUT: %addr: %ptr.887 = addr_of %.loc8_15.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_15.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -692,6 +697,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.2d2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.642: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.2d2) [concrete] // CHECK:STDOUT: %.271: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ab5, @Op.2(%S) [concrete] @@ -710,7 +716,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -734,8 +740,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc9_12.1: = bound_method %.loc9_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_12.2: = bound_method %.loc9_12.2, %specific_fn -// CHECK:STDOUT: %.loc9_12.7: %S = bind_value %.loc9_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_12.2(%.loc9_12.7) +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc9_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -758,6 +764,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.2d2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.642: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.2d2) [concrete] // CHECK:STDOUT: %.271: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ab5, @Op.2(%S) [concrete] @@ -776,7 +783,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %bar.decl: %bar.type = fn_decl @bar [concrete = constants.%bar] {} {} -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -799,8 +806,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_12.1: = bound_method %.loc8_12.2, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_12.2: = bound_method %.loc8_12.2, %specific_fn -// CHECK:STDOUT: %.loc8_12.7: %S = bind_value %.loc8_12.2 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%.loc8_12.7) +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_12.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -864,6 +871,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.2d2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%S) [concrete] // CHECK:STDOUT: %Op.type.642: type = fn_type @Op.2, @impl(%S) [concrete] // CHECK:STDOUT: %Op.ab5: %Op.type.642 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5c7: type = ptr_type %S [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %S, (%Destroy.impl_witness.2d2) [concrete] // CHECK:STDOUT: %.271: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ab5, @Op.2(%S) [concrete] @@ -881,7 +889,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -896,8 +904,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %.loc8_11.1, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%S) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_11.2: = bound_method %.loc8_11.1, %specific_fn -// CHECK:STDOUT: %.loc8_11.3: %S = bind_value %.loc8_11.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_11.2(%.loc8_11.3) +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc8_11.1 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc8_11.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function_param_int16.carbon b/toolchain/check/testdata/interop/cpp/function_param_int16.carbon index f7bdf593ed2c..b655adb9b2d2 100644 --- a/toolchain/check/testdata/interop/cpp/function_param_int16.carbon +++ b/toolchain/check/testdata/interop/cpp/function_param_int16.carbon @@ -1392,6 +1392,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.d4a: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i16) [concrete] // CHECK:STDOUT: %Op.type.23c: type = fn_type @Op.96, @impl.49c(%i16) [concrete] // CHECK:STDOUT: %Op.507: %Op.type.23c = struct_value () [concrete] +// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i16, (%Destroy.impl_witness.d4a) [concrete] // CHECK:STDOUT: %.8f2: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn.c10: = specific_function %Op.507, @Op.96(%i16) [concrete] @@ -1414,7 +1415,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1444,8 +1445,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_16) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc7_3.1: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i16 [concrete = constants.%i16] { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] @@ -1458,8 +1459,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i16) [concrete = constants.%Op.specific_fn.c10] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i16 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr: %ptr.251 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1499,6 +1500,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.d4a: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i16) [concrete] // CHECK:STDOUT: %Op.type.23c: type = fn_type @Op.96, @impl.49c(%i16) [concrete] // CHECK:STDOUT: %Op.507: %Op.type.23c = struct_value () [concrete] +// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i16, (%Destroy.impl_witness.d4a) [concrete] // CHECK:STDOUT: %.8f2: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn.c10: = specific_function %Op.507, @Op.96(%i16) [concrete] @@ -1521,7 +1523,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1551,8 +1553,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_16) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc7_3.1: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i16 [concrete = constants.%i16] { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] @@ -1565,8 +1567,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i16) [concrete = constants.%Op.specific_fn.c10] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i16 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr: %ptr.251 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1629,7 +1631,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1659,8 +1661,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_16) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc7_3.1: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i16 [concrete = constants.%i16] { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] @@ -1669,13 +1671,13 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i16 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr.251 = addr_of %a.ref +// CHECK:STDOUT: %addr.loc15: %ptr.251 = addr_of %a.ref // CHECK:STDOUT: %impl.elem0.loc7_3.2: %.8f2 = impl_witness_access constants.%Destroy.impl_witness.d4a, element0 [concrete = constants.%Op.507] // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i16) [concrete = constants.%Op.specific_fn.c10] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i16 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.251 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1738,7 +1740,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1768,8 +1770,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_16) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i16 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.f90] -// CHECK:STDOUT: %.loc7_3.1: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i16 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.f90] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i16 [concrete = constants.%i16] { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] @@ -1778,13 +1780,13 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i16 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr.251 = addr_of %a.ref +// CHECK:STDOUT: %addr.loc15: %ptr.251 = addr_of %a.ref // CHECK:STDOUT: %impl.elem0.loc7_3.2: %.8f2 = impl_witness_access constants.%Destroy.impl_witness.d4a, element0 [concrete = constants.%Op.507] // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i16) [concrete = constants.%Op.specific_fn.c10] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i16 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.251 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function_param_int32.carbon b/toolchain/check/testdata/interop/cpp/function_param_int32.carbon index 3bb3e7b2c5c6..7586b26aeab2 100644 --- a/toolchain/check/testdata/interop/cpp/function_param_int32.carbon +++ b/toolchain/check/testdata/interop/cpp/function_param_int32.carbon @@ -1758,6 +1758,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.96, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.96(%i32) [concrete] @@ -1780,7 +1781,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1810,8 +1811,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_3.1: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -1824,8 +1825,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1865,6 +1866,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.96, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn.014: = specific_function %Op.e6a, @Op.96(%i32) [concrete] @@ -1887,7 +1889,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1917,8 +1919,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_3.1: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_11: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -1931,8 +1933,8 @@ fn F() { // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1995,7 +1997,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2025,8 +2027,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_3.1: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -2035,13 +2037,13 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.ref +// CHECK:STDOUT: %addr.loc15: %ptr.235 = addr_of %a.ref // CHECK:STDOUT: %impl.elem0.loc7_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2104,7 +2106,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2134,8 +2136,8 @@ fn F() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_3.1: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %a.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %a.var, %.loc7_3 // CHECK:STDOUT: %.loc7_11: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -2144,13 +2146,13 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.ref +// CHECK:STDOUT: %addr.loc15: %ptr.235 = addr_of %a.ref // CHECK:STDOUT: %impl.elem0.loc7_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %a.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.96(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %a.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index c4b7618fff51..e2a8b45def58 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -305,11 +305,13 @@ impl i32 as Empty { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %ptr.7fe: type = ptr_type %tuple.type.2d5 [concrete] // CHECK:STDOUT: %pattern_type.8c1: type = pattern_type %tuple.type.2d5 [concrete] // CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %tuple.type.bcd: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type.bcd [concrete] // CHECK:STDOUT: %c: %tuple.type.bcd = bind_symbolic_name c, 1 [symbolic] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type.bcd [concrete] // CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] @@ -337,12 +339,14 @@ impl i32 as Empty { // CHECK:STDOUT: %Destroy.impl_witness.511: = impl_witness imports.%Destroy.impl_witness_table, @impl(%tuple.type.9fb) [concrete] // CHECK:STDOUT: %Op.type.23e: type = fn_type @Op.2, @impl(%tuple.type.9fb) [concrete] // CHECK:STDOUT: %Op.f19: %Op.type.23e = struct_value () [concrete] +// CHECK:STDOUT: %ptr.652: type = ptr_type %tuple.type.9fb [concrete] // CHECK:STDOUT: %Destroy.facet.108: %Destroy.type = facet_value %tuple.type.9fb, (%Destroy.impl_witness.511) [concrete] // CHECK:STDOUT: %.2cd: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.108 [concrete] // CHECK:STDOUT: %Op.specific_fn.d2b: = specific_function %Op.f19, @Op.2(%tuple.type.9fb) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.926: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.926 [concrete] // CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -355,7 +359,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -457,8 +461,8 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc11_31.2: %empty_tuple.type = converted %.loc11_26, %empty_tuple.loc11_26 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc11_30: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_31.3: %empty_tuple.type = converted %.loc11_30, %empty_tuple.loc11_30 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc11: %tuple.type.bcd = tuple_value (%.loc11_31.2, %.loc11_31.3) [concrete = constants.%tuple.d8f] -// CHECK:STDOUT: %.loc11_31.4: %tuple.type.bcd = converted %.loc11_31.1, %tuple.loc11 [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %tuple: %tuple.type.bcd = tuple_value (%.loc11_31.2, %.loc11_31.3) [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc11_31.4: %tuple.type.bcd = converted %.loc11_31.1, %tuple [concrete = constants.%tuple.d8f] // CHECK:STDOUT: %c.loc11_9.1: %tuple.type.bcd = bind_symbolic_name c, 1, %.loc11_31.4 [symbolic = %c.loc11_9.2 (constants.%c)] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a1.patt: %pattern_type.cb1 = binding_pattern a1 [concrete] @@ -467,8 +471,8 @@ impl i32 as Empty { // CHECK:STDOUT: %a1.var: ref %empty_tuple.type = var %a1.var_patt // CHECK:STDOUT: %a.ref: %empty_tuple.type = name_ref a, @C.%a // CHECK:STDOUT: %.loc13_18: init %empty_tuple.type = tuple_init () to %a1.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc13_5.1: init %empty_tuple.type = converted %a.ref, %.loc13_18 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %a1.var, %.loc13_5.1 +// CHECK:STDOUT: %.loc13_5: init %empty_tuple.type = converted %a.ref, %.loc13_18 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %a1.var, %.loc13_5 // CHECK:STDOUT: %.loc13_14.1: type = splice_block %.loc13_14.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc13_14.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_14.3: type = converted %.loc13_14.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -485,8 +489,8 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc14_21.1: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc14_21.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_21.2: init %empty_tuple.type = converted %tuple.elem0.loc14_21.1, %.loc14_21.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_21.3: init %tuple.type.9fb = tuple_init (%.loc14_21.2) to %b1.var [concrete = constants.%tuple.f41] -// CHECK:STDOUT: %.loc14_5.1: init %tuple.type.9fb = converted %b.ref, %.loc14_21.3 [concrete = constants.%tuple.f41] -// CHECK:STDOUT: assign %b1.var, %.loc14_5.1 +// CHECK:STDOUT: %.loc14_5: init %tuple.type.9fb = converted %b.ref, %.loc14_21.3 [concrete = constants.%tuple.f41] +// CHECK:STDOUT: assign %b1.var, %.loc14_5 // CHECK:STDOUT: %.loc14_17.1: type = splice_block %.loc14_17.4 [concrete = constants.%tuple.type.9fb] { // CHECK:STDOUT: %.loc14_15: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc14_17.2: %tuple.type.9fb = tuple_literal (%.loc14_15) @@ -509,8 +513,8 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc15_24.3: init %empty_tuple.type = tuple_init () to %tuple.elem1.loc15_24.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_24.4: init %empty_tuple.type = converted %tuple.elem1.loc15_24.1, %.loc15_24.3 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_24.5: init %tuple.type.bcd = tuple_init (%.loc15_24.2, %.loc15_24.4) to %c1.var [concrete = constants.%tuple.d8f] -// CHECK:STDOUT: %.loc15_5.1: init %tuple.type.bcd = converted %c.ref, %.loc15_24.5 [concrete = constants.%tuple.d8f] -// CHECK:STDOUT: assign %c1.var, %.loc15_5.1 +// CHECK:STDOUT: %.loc15_5: init %tuple.type.bcd = converted %c.ref, %.loc15_24.5 [concrete = constants.%tuple.d8f] +// CHECK:STDOUT: assign %c1.var, %.loc15_5 // CHECK:STDOUT: %.loc15_20.1: type = splice_block %.loc15_20.5 [concrete = constants.%tuple.type.bcd] { // CHECK:STDOUT: %.loc15_15: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc15_19: %empty_tuple.type = tuple_literal () @@ -539,8 +543,8 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc16_28.5: init %empty_tuple.type = tuple_init () to %tuple.elem2.loc16_28.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_28.6: init %empty_tuple.type = converted %tuple.elem2.loc16_28.1, %.loc16_28.5 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_28.7: init %tuple.type.2d5 = tuple_init (%.loc16_28.2, %.loc16_28.4, %.loc16_28.6) to %d1.var [concrete = constants.%tuple.7e4] -// CHECK:STDOUT: %.loc16_5.1: init %tuple.type.2d5 = converted %d.ref, %.loc16_28.7 [concrete = constants.%tuple.7e4] -// CHECK:STDOUT: assign %d1.var, %.loc16_5.1 +// CHECK:STDOUT: %.loc16_5: init %tuple.type.2d5 = converted %d.ref, %.loc16_28.7 [concrete = constants.%tuple.7e4] +// CHECK:STDOUT: assign %d1.var, %.loc16_5 // CHECK:STDOUT: %.loc16_24.1: type = splice_block %.loc16_24.6 [concrete = constants.%tuple.type.2d5] { // CHECK:STDOUT: %.loc16_15: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc16_19: %empty_tuple.type = tuple_literal () @@ -556,48 +560,26 @@ impl i32 as Empty { // CHECK:STDOUT: %bound_method.loc16_5.1: = bound_method %d1.var, %impl.elem0.loc16 // CHECK:STDOUT: %specific_fn.loc16: = specific_function %impl.elem0.loc16, @Op.2(constants.%tuple.type.2d5) [concrete = constants.%Op.specific_fn.234] // CHECK:STDOUT: %bound_method.loc16_5.2: = bound_method %d1.var, %specific_fn.loc16 -// CHECK:STDOUT: %tuple.elem0.loc16_5: ref %empty_tuple.type = tuple_access %d1.var, element0 -// CHECK:STDOUT: %tuple.loc16_5.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_5.2: %empty_tuple.type = converted %tuple.elem0.loc16_5, %tuple.loc16_5.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1.loc16_5: ref %empty_tuple.type = tuple_access %d1.var, element1 -// CHECK:STDOUT: %tuple.loc16_5.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_5.3: %empty_tuple.type = converted %tuple.elem1.loc16_5, %tuple.loc16_5.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem2.loc16_5: ref %empty_tuple.type = tuple_access %d1.var, element2 -// CHECK:STDOUT: %tuple.loc16_5.3: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_5.4: %empty_tuple.type = converted %tuple.elem2.loc16_5, %tuple.loc16_5.3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc16_5.4: %tuple.type.2d5 = tuple_value (%.loc16_5.2, %.loc16_5.3, %.loc16_5.4) [concrete = constants.%tuple.7e4] -// CHECK:STDOUT: %.loc16_5.5: %tuple.type.2d5 = converted %d1.var, %tuple.loc16_5.4 [concrete = constants.%tuple.7e4] -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_5.2(%.loc16_5.5) +// CHECK:STDOUT: %addr.loc16: %ptr.7fe = addr_of %d1.var +// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_5.2(%addr.loc16) // CHECK:STDOUT: %impl.elem0.loc15: %.b6c = impl_witness_access constants.%Destroy.impl_witness.585, element0 [concrete = constants.%Op.166] // CHECK:STDOUT: %bound_method.loc15_5.1: = bound_method %c1.var, %impl.elem0.loc15 // CHECK:STDOUT: %specific_fn.loc15: = specific_function %impl.elem0.loc15, @Op.2(constants.%tuple.type.bcd) [concrete = constants.%Op.specific_fn.48a] // CHECK:STDOUT: %bound_method.loc15_5.2: = bound_method %c1.var, %specific_fn.loc15 -// CHECK:STDOUT: %tuple.elem0.loc15_5: ref %empty_tuple.type = tuple_access %c1.var, element0 -// CHECK:STDOUT: %tuple.loc15_5.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc15_5.2: %empty_tuple.type = converted %tuple.elem0.loc15_5, %tuple.loc15_5.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1.loc15_5: ref %empty_tuple.type = tuple_access %c1.var, element1 -// CHECK:STDOUT: %tuple.loc15_5.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc15_5.3: %empty_tuple.type = converted %tuple.elem1.loc15_5, %tuple.loc15_5.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc15_5.3: %tuple.type.bcd = tuple_value (%.loc15_5.2, %.loc15_5.3) [concrete = constants.%tuple.d8f] -// CHECK:STDOUT: %.loc15_5.4: %tuple.type.bcd = converted %c1.var, %tuple.loc15_5.3 [concrete = constants.%tuple.d8f] -// CHECK:STDOUT: %no_op.loc15: init %empty_tuple.type = call %bound_method.loc15_5.2(%.loc15_5.4) +// CHECK:STDOUT: %addr.loc15: %ptr.709 = addr_of %c1.var +// CHECK:STDOUT: %no_op.loc15: init %empty_tuple.type = call %bound_method.loc15_5.2(%addr.loc15) // CHECK:STDOUT: %impl.elem0.loc14: %.2cd = impl_witness_access constants.%Destroy.impl_witness.511, element0 [concrete = constants.%Op.f19] // CHECK:STDOUT: %bound_method.loc14_5.1: = bound_method %b1.var, %impl.elem0.loc14 // CHECK:STDOUT: %specific_fn.loc14: = specific_function %impl.elem0.loc14, @Op.2(constants.%tuple.type.9fb) [concrete = constants.%Op.specific_fn.d2b] // CHECK:STDOUT: %bound_method.loc14_5.2: = bound_method %b1.var, %specific_fn.loc14 -// CHECK:STDOUT: %tuple.elem0.loc14_5: ref %empty_tuple.type = tuple_access %b1.var, element0 -// CHECK:STDOUT: %tuple.loc14_5.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_5.2: %empty_tuple.type = converted %tuple.elem0.loc14_5, %tuple.loc14_5.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc14_5.2: %tuple.type.9fb = tuple_value (%.loc14_5.2) [concrete = constants.%tuple.f41] -// CHECK:STDOUT: %.loc14_5.3: %tuple.type.9fb = converted %b1.var, %tuple.loc14_5.2 [concrete = constants.%tuple.f41] -// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_5.2(%.loc14_5.3) +// CHECK:STDOUT: %addr.loc14: %ptr.652 = addr_of %b1.var +// CHECK:STDOUT: %no_op.loc14: init %empty_tuple.type = call %bound_method.loc14_5.2(%addr.loc14) // CHECK:STDOUT: %impl.elem0.loc13: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc13_5.1: = bound_method %a1.var, %impl.elem0.loc13 // CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc13_5.2: = bound_method %a1.var, %specific_fn.loc13 -// CHECK:STDOUT: %tuple.loc13: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc13_5.2: %empty_tuple.type = converted %a1.var, %tuple.loc13 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13_5.2(%.loc13_5.2) +// CHECK:STDOUT: %addr.loc13: %ptr.843 = addr_of %a1.var +// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13_5.2(%addr.loc13) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/generic.carbon b/toolchain/check/testdata/let/generic.carbon index cd2e69d19ad6..83c327d35ed1 100644 --- a/toolchain/check/testdata/let/generic.carbon +++ b/toolchain/check/testdata/let/generic.carbon @@ -30,8 +30,8 @@ fn F() { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr [symbolic] +// CHECK:STDOUT: %ptr.79f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] @@ -40,8 +40,9 @@ fn F() { // CHECK:STDOUT: %.a63: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.713 [symbolic] // CHECK:STDOUT: %impl.elem0.538: %.a63 = impl_witness_access %Destroy.lookup_impl_witness.de0, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.1af: = specific_impl_function %impl.elem0.538, @Op.1(%Destroy.facet.713) [symbolic] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.3af: = lookup_impl_witness %ptr, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.facet.7d0: %Destroy.type = facet_value %ptr, (%Destroy.lookup_impl_witness.3af) [symbolic] +// CHECK:STDOUT: %ptr.a13: type = ptr_type %ptr.79f [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.3af: = lookup_impl_witness %ptr.79f, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.facet.7d0: %Destroy.type = facet_value %ptr.79f, (%Destroy.lookup_impl_witness.3af) [symbolic] // CHECK:STDOUT: %.ea9: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.7d0 [symbolic] // CHECK:STDOUT: %impl.elem0.63c: %.ea9 = impl_witness_access %Destroy.lookup_impl_witness.3af, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.e4a: = specific_impl_function %impl.elem0.63c, @Op.1(%Destroy.facet.7d0) [symbolic] @@ -79,19 +80,19 @@ fn F() { // CHECK:STDOUT: %p.patt: %pattern_type.afe = binding_pattern p [concrete] // CHECK:STDOUT: %p.var_patt: %pattern_type.afe = var_pattern %p.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %p.var: ref %ptr = var %p.var_patt -// CHECK:STDOUT: %.loc17_11: type = splice_block %ptr [symbolic = constants.%ptr] { +// CHECK:STDOUT: %p.var: ref %ptr.79f = var %p.var_patt +// CHECK:STDOUT: %.loc17_11: type = splice_block %ptr [symbolic = constants.%ptr.79f] { // CHECK:STDOUT: %T.ref.loc17: type = name_ref T, %T [symbolic = constants.%T] -// CHECK:STDOUT: %ptr: type = ptr_type %T.ref.loc17 [symbolic = constants.%ptr] +// CHECK:STDOUT: %ptr: type = ptr_type %T.ref.loc17 [symbolic = constants.%ptr.79f] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref %ptr = bind_name p, %p.var +// CHECK:STDOUT: %p: ref %ptr.79f = bind_name p, %p.var // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %pattern_type.7dc = binding_pattern a [concrete] // CHECK:STDOUT: %a.var_patt: %pattern_type.7dc = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %T = var %a.var_patt -// CHECK:STDOUT: %p.ref: ref %ptr = name_ref p, %p -// CHECK:STDOUT: %.loc18_15: %ptr = bind_value %p.ref +// CHECK:STDOUT: %p.ref: ref %ptr.79f = name_ref p, %p +// CHECK:STDOUT: %.loc18_15: %ptr.79f = bind_value %p.ref // CHECK:STDOUT: %.loc18_14.1: ref %T = deref %.loc18_15 // CHECK:STDOUT: %.loc18_14.2: %T = bind_value %.loc18_14.1 // CHECK:STDOUT: assign %a.var, %.loc18_14.2 @@ -101,14 +102,14 @@ fn F() { // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %a.var, %impl.elem0.loc18 // CHECK:STDOUT: %specific_impl_fn.loc18: = specific_impl_function %impl.elem0.loc18, @Op.1(constants.%Destroy.facet.713) [symbolic = constants.%specific_impl_fn.1af] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %a.var, %specific_impl_fn.loc18 -// CHECK:STDOUT: %.loc18_3.1: %T = bind_value %a.var -// CHECK:STDOUT: %.loc18_3.2: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.1) +// CHECK:STDOUT: %addr.loc18: %ptr.79f = addr_of %a.var +// CHECK:STDOUT: %.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18) // CHECK:STDOUT: %impl.elem0.loc17: %.ea9 = impl_witness_access constants.%Destroy.lookup_impl_witness.3af, element0 [symbolic = constants.%impl.elem0.63c] // CHECK:STDOUT: %bound_method.loc17_3.1: = bound_method %p.var, %impl.elem0.loc17 // CHECK:STDOUT: %specific_impl_fn.loc17: = specific_impl_function %impl.elem0.loc17, @Op.1(constants.%Destroy.facet.7d0) [symbolic = constants.%specific_impl_fn.e4a] // CHECK:STDOUT: %bound_method.loc17_3.2: = bound_method %p.var, %specific_impl_fn.loc17 -// CHECK:STDOUT: %.loc17_3.1: %ptr = bind_value %p.var -// CHECK:STDOUT: %.loc17_3.2: init %empty_tuple.type = call %bound_method.loc17_3.2(%.loc17_3.1) +// CHECK:STDOUT: %addr.loc17: %ptr.a13 = addr_of %p.var +// CHECK:STDOUT: %.loc17_3: init %empty_tuple.type = call %bound_method.loc17_3.2(%addr.loc17) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index f261871705de..6bae16b49175 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -167,7 +167,7 @@ fn Run() { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.272: type = pattern_type %A [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] @@ -177,6 +177,7 @@ fn Run() { // CHECK:STDOUT: %Destroy.impl_witness.f31: = impl_witness imports.%Destroy.impl_witness_table, @impl(%A) [concrete] // CHECK:STDOUT: %Op.type.d74: type = fn_type @Op.2, @impl(%A) [concrete] // CHECK:STDOUT: %Op.478: %Op.type.d74 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.07e: type = ptr_type %A [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %A, (%Destroy.impl_witness.f31) [concrete] // CHECK:STDOUT: %.8ba: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.478, @Op.2(%A) [concrete] @@ -195,7 +196,7 @@ fn Run() { // CHECK:STDOUT: import Other//a // CHECK:STDOUT: } // CHECK:STDOUT: %Other.F: %F.type = import_ref Other//b, F, loaded [concrete = constants.%F] -// CHECK:STDOUT: %Other.import_ref.8db: = import_ref Other//b, inst31 [indirect], loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %Other.import_ref.8db: = import_ref Other//b, inst31 [indirect], loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Other.import_ref.bbd = import_ref Other//b, inst32 [indirect], unloaded // CHECK:STDOUT: %Other.NS1: = import_ref Other//b, NS1, loaded // CHECK:STDOUT: %NS1.b9a: = namespace %Other.NS1, [concrete] { @@ -205,7 +206,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Other.A: type = import_ref Other//a, A, loaded [concrete = constants.%A] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -239,7 +240,7 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.272 = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %A = var %a.var_patt -// CHECK:STDOUT: %.loc10_19: type = splice_block %A.ref [concrete = constants.%A] { +// CHECK:STDOUT: %.loc10: type = splice_block %A.ref [concrete = constants.%A] { // CHECK:STDOUT: %Other.ref.loc10: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %NS1.ref: = name_ref NS1, imports.%NS1.b9a [concrete = imports.%NS1.b9a] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Other.A [concrete = constants.%A] @@ -248,27 +249,27 @@ fn Run() { // CHECK:STDOUT: %a.ref: ref %A = name_ref a, %a // CHECK:STDOUT: %Other.ref.loc13: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %F.ref.loc13: %F.type = name_ref F, imports.%Other.F [concrete = constants.%F] -// CHECK:STDOUT: %.loc13_3.1: ref %A = splice_block %a.ref {} -// CHECK:STDOUT: %F.call.loc13: init %A = call %F.ref.loc13() to %.loc13_3.1 +// CHECK:STDOUT: %.loc13: ref %A = splice_block %a.ref {} +// CHECK:STDOUT: %F.call.loc13: init %A = call %F.ref.loc13() to %.loc13 // CHECK:STDOUT: assign %a.ref, %F.call.loc13 // CHECK:STDOUT: %impl.elem0.loc13: %.8ba = impl_witness_access constants.%Destroy.impl_witness.f31, element0 [concrete = constants.%Op.478] -// CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %.loc13_3.1, %impl.elem0.loc13 +// CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %.loc13, %impl.elem0.loc13 // CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Op.2(constants.%A) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %.loc13_3.1, %specific_fn.loc13 -// CHECK:STDOUT: %.loc13_3.2: %A = bind_value %.loc13_3.1 -// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13_3.2(%.loc13_3.2) +// CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %.loc13, %specific_fn.loc13 +// CHECK:STDOUT: %addr.loc13: %ptr.07e = addr_of %.loc13 +// CHECK:STDOUT: %no_op.loc13: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr.loc13) // CHECK:STDOUT: %impl.elem0.loc10: %.8ba = impl_witness_access constants.%Destroy.impl_witness.f31, element0 [concrete = constants.%Op.478] // CHECK:STDOUT: %bound_method.loc10_3.1: = bound_method %a.var, %impl.elem0.loc10 // CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Op.2(constants.%A) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc10_3.2: = bound_method %a.var, %specific_fn.loc10 -// CHECK:STDOUT: %.loc10_3: %A = bind_value %a.var -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_3.2(%.loc10_3) +// CHECK:STDOUT: %addr.loc10: %ptr.07e = addr_of %a.var +// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_3.2(%addr.loc10) // CHECK:STDOUT: %impl.elem0.loc7: %.8ba = impl_witness_access constants.%Destroy.impl_witness.f31, element0 [concrete = constants.%Op.478] // CHECK:STDOUT: %bound_method.loc7_11.1: = bound_method %.loc7_11.1, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%A) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_11.2: = bound_method %.loc7_11.1, %specific_fn.loc7 -// CHECK:STDOUT: %.loc7_11.3: %A = bind_value %.loc7_11.1 -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_11.2(%.loc7_11.3) +// CHECK:STDOUT: %addr.loc7: %ptr.07e = addr_of %.loc7_11.1 +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_11.2(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/and.carbon b/toolchain/check/testdata/operators/builtin/and.carbon index eade5d98df55..300300276307 100644 --- a/toolchain/check/testdata/operators/builtin/and.carbon +++ b/toolchain/check/testdata/operators/builtin/and.carbon @@ -57,12 +57,14 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.926: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.926 [concrete] // CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.862: = impl_witness imports.%Destroy.impl_witness_table, @impl(bool) [concrete] // CHECK:STDOUT: %Op.type.655: type = fn_type @Op.2, @impl(bool) [concrete] // CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] // CHECK:STDOUT: %Destroy.facet.2aa: %Destroy.type = facet_value bool, (%Destroy.impl_witness.862) [concrete] // CHECK:STDOUT: %.0d4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2aa [concrete] // CHECK:STDOUT: %Op.specific_fn.c3f: = specific_function %Op.8b7, @Op.2(bool) [concrete] @@ -79,7 +81,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,8 +221,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt // CHECK:STDOUT: %.loc24_49.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc24_49.2: init %empty_tuple.type = tuple_init () to %b.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc24_3.1: init %empty_tuple.type = converted %.loc24_49.1, %.loc24_49.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %b.var, %.loc24_3.1 +// CHECK:STDOUT: %.loc24_3: init %empty_tuple.type = converted %.loc24_49.1, %.loc24_49.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %b.var, %.loc24_3 // CHECK:STDOUT: br !.loc24_13 // CHECK:STDOUT: // CHECK:STDOUT: !.loc24_13: @@ -260,8 +262,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt // CHECK:STDOUT: %.loc25_49.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc25_49.2: init %empty_tuple.type = tuple_init () to %c.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc25_3.1: init %empty_tuple.type = converted %.loc25_49.1, %.loc25_49.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %c.var, %.loc25_3.1 +// CHECK:STDOUT: %.loc25_3: init %empty_tuple.type = converted %.loc25_49.1, %.loc25_49.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %c.var, %.loc25_3 // CHECK:STDOUT: br !.loc25_13 // CHECK:STDOUT: // CHECK:STDOUT: !.loc25_13: @@ -301,8 +303,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt // CHECK:STDOUT: %.loc26_50.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc26_50.2: init %empty_tuple.type = tuple_init () to %d.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc26_3.1: init %empty_tuple.type = converted %.loc26_50.1, %.loc26_50.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %d.var, %.loc26_3.1 +// CHECK:STDOUT: %.loc26_3: init %empty_tuple.type = converted %.loc26_50.1, %.loc26_50.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %d.var, %.loc26_3 // CHECK:STDOUT: br !.loc26_13 // CHECK:STDOUT: // CHECK:STDOUT: !.loc26_13: @@ -339,29 +341,26 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %bound_method.loc26_3.1: = bound_method %d.var, %impl.elem0.loc26 // CHECK:STDOUT: %specific_fn.loc26: = specific_function %impl.elem0.loc26, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc26_3.2: = bound_method %d.var, %specific_fn.loc26 -// CHECK:STDOUT: %tuple.loc26: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc26_3.2: %empty_tuple.type = converted %d.var, %tuple.loc26 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3.2(%.loc26_3.2) +// CHECK:STDOUT: %addr.loc26: %ptr.843 = addr_of %d.var +// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26_3.2(%addr.loc26) // CHECK:STDOUT: %impl.elem0.loc25: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc25_3.1: = bound_method %c.var, %impl.elem0.loc25 // CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc25_3.2: = bound_method %c.var, %specific_fn.loc25 -// CHECK:STDOUT: %tuple.loc25: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc25_3.2: %empty_tuple.type = converted %c.var, %tuple.loc25 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%.loc25_3.2) +// CHECK:STDOUT: %addr.loc25: %ptr.843 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%addr.loc25) // CHECK:STDOUT: %impl.elem0.loc24: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %b.var, %impl.elem0.loc24 // CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %b.var, %specific_fn.loc24 -// CHECK:STDOUT: %tuple.loc24: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc24_3.2: %empty_tuple.type = converted %b.var, %tuple.loc24 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24_3.2) +// CHECK:STDOUT: %addr.loc24: %ptr.843 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24) // CHECK:STDOUT: %impl.elem0.loc23: %.0d4 = impl_witness_access constants.%Destroy.impl_witness.862, element0 [concrete = constants.%Op.8b7] // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %a.var, %impl.elem0.loc23 // CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %a.var, %specific_fn.loc23 -// CHECK:STDOUT: %.loc23_3: bool = bind_value %a.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3) +// CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -374,8 +373,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt // CHECK:STDOUT: %.loc30_46.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc30_46.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc30_3.1: init %empty_tuple.type = converted %.loc30_46.1, %.loc30_46.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %a.var, %.loc30_3.1 +// CHECK:STDOUT: %.loc30_3: init %empty_tuple.type = converted %.loc30_46.1, %.loc30_46.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %a.var, %.loc30_3 // CHECK:STDOUT: br !.loc30_13 // CHECK:STDOUT: // CHECK:STDOUT: !.loc30_13: @@ -412,9 +411,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %bound_method.loc30_3.1: = bound_method %a.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc30_3.2: = bound_method %a.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc30_3.2: %empty_tuple.type = converted %a.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc30_3.2(%.loc30_3.2) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc30_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/assignment.carbon b/toolchain/check/testdata/operators/builtin/assignment.carbon index de5f9ce6f3e3..249412319489 100644 --- a/toolchain/check/testdata/operators/builtin/assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/assignment.carbon @@ -64,6 +64,7 @@ fn Main() { // CHECK:STDOUT: %int_9.f88: %i32 = int_value 9 [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] +// CHECK:STDOUT: %ptr.261: type = ptr_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] @@ -85,6 +86,7 @@ fn Main() { // CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] +// CHECK:STDOUT: %ptr.3ee: type = ptr_type %struct_type.a.b.501 [concrete] // CHECK:STDOUT: %pattern_type.851: type = pattern_type %struct_type.a.b.501 [concrete] // CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%int_1.5d2, %int_2.ef8) [concrete] @@ -107,6 +109,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.711: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.3, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.facet.2bf: %Destroy.type = facet_value %ptr.235, (%Destroy.impl_witness.711) [concrete] // CHECK:STDOUT: %.a79: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2bf [concrete] // CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.3(%ptr.235) [concrete] @@ -143,7 +146,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -169,8 +172,8 @@ fn Main() { // CHECK:STDOUT: %specific_fn.loc16_3.1: = specific_function %impl.elem0.loc16_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %int_12, %specific_fn.loc16_3.1 [concrete = constants.%bound_method.dae] // CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %bound_method.loc16_3.2(%int_12) [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: %.loc16_3.1: init %i32 = converted %int_12, %int.convert_checked.loc16 [concrete = constants.%int_12.1e1] -// CHECK:STDOUT: assign %a.var, %.loc16_3.1 +// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_12, %int.convert_checked.loc16 [concrete = constants.%int_12.1e1] +// CHECK:STDOUT: assign %a.var, %.loc16_3 // CHECK:STDOUT: %.loc16_10: type = splice_block %i32.loc16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -199,19 +202,19 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc19_28.2: = bound_method %int_1.loc19, %specific_fn.loc19_28.1 [concrete = constants.%bound_method.9a1] // CHECK:STDOUT: %int.convert_checked.loc19_28.1: init %i32 = call %bound_method.loc19_28.2(%int_1.loc19) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc19_28.2: init %i32 = converted %int_1.loc19, %int.convert_checked.loc19_28.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple.elem0.loc19_28: ref %i32 = tuple_access %b.var, element0 -// CHECK:STDOUT: %.loc19_28.3: init %i32 = initialize_from %.loc19_28.2 to %tuple.elem0.loc19_28 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %tuple.elem0.loc19: ref %i32 = tuple_access %b.var, element0 +// CHECK:STDOUT: %.loc19_28.3: init %i32 = initialize_from %.loc19_28.2 to %tuple.elem0.loc19 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %impl.elem0.loc19_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc19_28.3: = bound_method %int_2.loc19, %impl.elem0.loc19_28.2 [concrete = constants.%Convert.bound.ef9] // CHECK:STDOUT: %specific_fn.loc19_28.2: = specific_function %impl.elem0.loc19_28.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_28.4: = bound_method %int_2.loc19, %specific_fn.loc19_28.2 [concrete = constants.%bound_method.b92] // CHECK:STDOUT: %int.convert_checked.loc19_28.2: init %i32 = call %bound_method.loc19_28.4(%int_2.loc19) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc19_28.4: init %i32 = converted %int_2.loc19, %int.convert_checked.loc19_28.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %tuple.elem1.loc19_28: ref %i32 = tuple_access %b.var, element1 -// CHECK:STDOUT: %.loc19_28.5: init %i32 = initialize_from %.loc19_28.4 to %tuple.elem1.loc19_28 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %tuple.elem1.loc19: ref %i32 = tuple_access %b.var, element1 +// CHECK:STDOUT: %.loc19_28.5: init %i32 = initialize_from %.loc19_28.4 to %tuple.elem1.loc19 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc19_28.6: init %tuple.type.d07 = tuple_init (%.loc19_28.3, %.loc19_28.5) to %b.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc19_3.1: init %tuple.type.d07 = converted %.loc19_28.1, %.loc19_28.6 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %b.var, %.loc19_3.1 +// CHECK:STDOUT: %.loc19_3: init %tuple.type.d07 = converted %.loc19_28.1, %.loc19_28.6 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %b.var, %.loc19_3 // CHECK:STDOUT: %.loc19_19.1: type = splice_block %.loc19_19.3 [concrete = constants.%tuple.type.d07] { // CHECK:STDOUT: %int_32.loc19_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -268,8 +271,8 @@ fn Main() { // CHECK:STDOUT: %.loc23_46.6: ref %i32 = struct_access %c.var, element1 // CHECK:STDOUT: %.loc23_46.7: init %i32 = initialize_from %.loc23_46.5 to %.loc23_46.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc23_46.8: init %struct_type.a.b.501 = struct_init (%.loc23_46.4, %.loc23_46.7) to %c.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc23_3.1: init %struct_type.a.b.501 = converted %.loc23_46.1, %.loc23_46.8 [concrete = constants.%struct] -// CHECK:STDOUT: assign %c.var, %.loc23_3.1 +// CHECK:STDOUT: %.loc23_3: init %struct_type.a.b.501 = converted %.loc23_46.1, %.loc23_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: assign %c.var, %.loc23_3 // CHECK:STDOUT: %.loc23_27: type = splice_block %struct_type.a.b [concrete = constants.%struct_type.a.b.501] { // CHECK:STDOUT: %int_32.loc23_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -304,9 +307,9 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %p.var: ref %ptr.235 = var %p.var_patt // CHECK:STDOUT: %a.ref.loc27: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr.loc27: %ptr.235 = addr_of %a.ref.loc27 -// CHECK:STDOUT: assign %p.var, %addr.loc27 -// CHECK:STDOUT: %.loc27_13: type = splice_block %ptr [concrete = constants.%ptr.235] { +// CHECK:STDOUT: %addr.loc27_17: %ptr.235 = addr_of %a.ref.loc27 +// CHECK:STDOUT: assign %p.var, %addr.loc27_17 +// CHECK:STDOUT: %.loc27: type = splice_block %ptr [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc27 [concrete = constants.%ptr.235] @@ -351,36 +354,26 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc27_3.1: = bound_method %p.var, %impl.elem0.loc27 // CHECK:STDOUT: %specific_fn.loc27: = specific_function %impl.elem0.loc27, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc27_3.2: = bound_method %p.var, %specific_fn.loc27 -// CHECK:STDOUT: %.loc27_3: %ptr.235 = bind_value %p.var -// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27_3.2(%.loc27_3) +// CHECK:STDOUT: %addr.loc27_3: %ptr.5d5 = addr_of %p.var +// CHECK:STDOUT: %no_op.loc27: init %empty_tuple.type = call %bound_method.loc27_3.2(%addr.loc27_3) // CHECK:STDOUT: %impl.elem0.loc23_3: %.8e0 = impl_witness_access constants.%Destroy.impl_witness.ad1, element0 [concrete = constants.%Op.9db] // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %c.var, %impl.elem0.loc23_3 // CHECK:STDOUT: %specific_fn.loc23_3: = specific_function %impl.elem0.loc23_3, @Op.3(constants.%struct_type.a.b.501) [concrete = constants.%Op.specific_fn.1e0] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %c.var, %specific_fn.loc23_3 -// CHECK:STDOUT: %.loc23_3.2: ref %i32 = struct_access %c.var, element0 -// CHECK:STDOUT: %.loc23_3.3: %i32 = bind_value %.loc23_3.2 -// CHECK:STDOUT: %.loc23_3.4: ref %i32 = struct_access %c.var, element1 -// CHECK:STDOUT: %.loc23_3.5: %i32 = bind_value %.loc23_3.4 -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%.loc23_3.3, %.loc23_3.5) -// CHECK:STDOUT: %.loc23_3.6: %struct_type.a.b.501 = converted %c.var, %struct -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3.6) +// CHECK:STDOUT: %addr.loc23: %ptr.3ee = addr_of %c.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23) // CHECK:STDOUT: %impl.elem0.loc19_3: %.b68 = impl_witness_access constants.%Destroy.impl_witness.5a7, element0 [concrete = constants.%Op.7c6] // CHECK:STDOUT: %bound_method.loc19_3.1: = bound_method %b.var, %impl.elem0.loc19_3 // CHECK:STDOUT: %specific_fn.loc19_3: = specific_function %impl.elem0.loc19_3, @Op.3(constants.%tuple.type.d07) [concrete = constants.%Op.specific_fn.bbb] // CHECK:STDOUT: %bound_method.loc19_3.2: = bound_method %b.var, %specific_fn.loc19_3 -// CHECK:STDOUT: %tuple.elem0.loc19_3: ref %i32 = tuple_access %b.var, element0 -// CHECK:STDOUT: %.loc19_3.2: %i32 = bind_value %tuple.elem0.loc19_3 -// CHECK:STDOUT: %tuple.elem1.loc19_3: ref %i32 = tuple_access %b.var, element1 -// CHECK:STDOUT: %.loc19_3.3: %i32 = bind_value %tuple.elem1.loc19_3 -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%.loc19_3.2, %.loc19_3.3) -// CHECK:STDOUT: %.loc19_3.4: %tuple.type.d07 = converted %b.var, %tuple -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3.2(%.loc19_3.4) +// CHECK:STDOUT: %addr.loc19: %ptr.261 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3.2(%addr.loc19) // CHECK:STDOUT: %impl.elem0.loc16_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %a.var, %impl.elem0.loc16_3.2 // CHECK:STDOUT: %specific_fn.loc16_3.2: = specific_function %impl.elem0.loc16_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn.014] // CHECK:STDOUT: %bound_method.loc16_3.4: = bound_method %a.var, %specific_fn.loc16_3.2 -// CHECK:STDOUT: %.loc16_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.4(%.loc16_3.2) +// CHECK:STDOUT: %addr.loc16: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.4(%addr.loc16) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index c86d57ed3c63..e7387389e31e 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -144,7 +144,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -210,8 +210,8 @@ fn Main() { // CHECK:STDOUT: %specific_fn.loc33_3.1: = specific_function %impl.elem0.loc33_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc33_3.2: = bound_method %int_0, %specific_fn.loc33_3.1 [concrete = constants.%bound_method.b6e] // CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %bound_method.loc33_3.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc33_3.1: init %i32 = converted %int_0, %int.convert_checked.loc33 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: assign %n.var, %.loc33_3.1 +// CHECK:STDOUT: %.loc33_3: init %i32 = converted %int_0, %int.convert_checked.loc33 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: assign %n.var, %.loc33_3 // CHECK:STDOUT: %.loc33_10: type = splice_block %i32.loc33 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc33: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc33: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -309,7 +309,7 @@ fn Main() { // CHECK:STDOUT: %a.var_patt: %pattern_type.7ce = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt -// CHECK:STDOUT: %.loc56_10: type = splice_block %i32.loc56 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc56: type = splice_block %i32.loc56 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc56: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc56: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -341,14 +341,14 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc56_3.1: = bound_method %a.var, %impl.elem0.loc56 // CHECK:STDOUT: %specific_fn.loc56: = specific_function %impl.elem0.loc56, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc56_3.2: = bound_method %a.var, %specific_fn.loc56 -// CHECK:STDOUT: %.loc56_3: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op.loc56: init %empty_tuple.type = call %bound_method.loc56_3.2(%.loc56_3) +// CHECK:STDOUT: %addr.loc56: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc56: init %empty_tuple.type = call %bound_method.loc56_3.2(%addr.loc56) // CHECK:STDOUT: %impl.elem0.loc33_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc33_3.3: = bound_method %n.var, %impl.elem0.loc33_3.2 // CHECK:STDOUT: %specific_fn.loc33_3.2: = specific_function %impl.elem0.loc33_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc33_3.4: = bound_method %n.var, %specific_fn.loc33_3.2 -// CHECK:STDOUT: %.loc33_3.2: %i32 = bind_value %n.var -// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_3.4(%.loc33_3.2) +// CHECK:STDOUT: %addr.loc33: %ptr.235 = addr_of %n.var +// CHECK:STDOUT: %no_op.loc33: init %empty_tuple.type = call %bound_method.loc33_3.4(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon index 3e6bd15686a2..74ba46bc548d 100644 --- a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon @@ -70,6 +70,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -88,7 +89,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -137,8 +138,8 @@ fn Main() { // CHECK:STDOUT: %specific_fn.loc18_3.1: = specific_function %impl.elem0.loc18_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %int_3, %specific_fn.loc18_3.1 [concrete = constants.%bound_method.047] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc18_3.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc18_3.1: init %i32 = converted %int_3, %int.convert_checked [concrete = constants.%int_3.822] -// CHECK:STDOUT: assign %a.var, %.loc18_3.1 +// CHECK:STDOUT: %.loc18_3: init %i32 = converted %int_3, %int.convert_checked [concrete = constants.%int_3.822] +// CHECK:STDOUT: assign %a.var, %.loc18_3 // CHECK:STDOUT: %.loc18_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -158,8 +159,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc18_3.3: = bound_method %a.var, %impl.elem0.loc18_3.2 // CHECK:STDOUT: %specific_fn.loc18_3.2: = specific_function %impl.elem0.loc18_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc18_3.4: = bound_method %a.var, %specific_fn.loc18_3.2 -// CHECK:STDOUT: %.loc18_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.4(%.loc18_3.2) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc18_3.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon index 41e146dc201b..33d8b9163c1f 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon @@ -42,6 +42,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.862: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(bool) [concrete] // CHECK:STDOUT: %Op.type.655: type = fn_type @Op.2, @impl.49c(bool) [concrete] // CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value bool, (%Destroy.impl_witness.862) [concrete] // CHECK:STDOUT: %.0d4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.8b7, @Op.2(bool) [concrete] @@ -58,7 +59,7 @@ fn Main() { // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -92,8 +93,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(bool) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %.loc22_3: bool = bind_value %x.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3) +// CHECK:STDOUT: %addr: %ptr.bb2 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon index 520e7b3d6c8e..66ff64698772 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon @@ -61,6 +61,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -79,7 +80,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -105,8 +106,8 @@ fn Main() { // CHECK:STDOUT: %specific_fn.loc16_3.1: = specific_function %impl.elem0.loc16_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %int_3, %specific_fn.loc16_3.1 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_3.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc16_3.1: init %i32 = converted %int_3, %int.convert_checked [concrete = constants.%int_3.822] -// CHECK:STDOUT: assign %a.var, %.loc16_3.1 +// CHECK:STDOUT: %.loc16_3: init %i32 = converted %int_3, %int.convert_checked [concrete = constants.%int_3.822] +// CHECK:STDOUT: assign %a.var, %.loc16_3 // CHECK:STDOUT: %.loc16_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -120,8 +121,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc16_3.3: = bound_method %a.var, %impl.elem0.loc16_3.2 // CHECK:STDOUT: %specific_fn.loc16_3.2: = specific_function %impl.elem0.loc16_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.4: = bound_method %a.var, %specific_fn.loc16_3.2 -// CHECK:STDOUT: %.loc16_3.2: %i32 = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3.4(%.loc16_3.2) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3.4(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/or.carbon b/toolchain/check/testdata/operators/builtin/or.carbon index 6afab5215eb5..17b56fdcf08f 100644 --- a/toolchain/check/testdata/operators/builtin/or.carbon +++ b/toolchain/check/testdata/operators/builtin/or.carbon @@ -56,12 +56,14 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.926: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.926 [concrete] // CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.862: = impl_witness imports.%Destroy.impl_witness_table, @impl(bool) [concrete] // CHECK:STDOUT: %Op.type.655: type = fn_type @Op.2, @impl(bool) [concrete] // CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] // CHECK:STDOUT: %Destroy.facet.2aa: %Destroy.type = facet_value bool, (%Destroy.impl_witness.862) [concrete] // CHECK:STDOUT: %.0d4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2aa [concrete] // CHECK:STDOUT: %Op.specific_fn.c3f: = specific_function %Op.8b7, @Op.2(bool) [concrete] @@ -78,7 +80,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -300,8 +302,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt // CHECK:STDOUT: %.loc25_49.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc25_49.2: init %empty_tuple.type = tuple_init () to %d.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc25_3.1: init %empty_tuple.type = converted %.loc25_49.1, %.loc25_49.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %d.var, %.loc25_3.1 +// CHECK:STDOUT: %.loc25_3: init %empty_tuple.type = converted %.loc25_49.1, %.loc25_49.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %d.var, %.loc25_3 // CHECK:STDOUT: br !.loc25_13 // CHECK:STDOUT: // CHECK:STDOUT: !.loc25_13: @@ -339,27 +341,26 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %bound_method.loc25_3.1: = bound_method %d.var, %impl.elem0.loc25 // CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc25_3.2: = bound_method %d.var, %specific_fn.loc25 -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc25_3.2: %empty_tuple.type = converted %d.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%.loc25_3.2) +// CHECK:STDOUT: %addr.loc25: %ptr.843 = addr_of %d.var +// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25_3.2(%addr.loc25) // CHECK:STDOUT: %impl.elem0.loc24: %.0d4 = impl_witness_access constants.%Destroy.impl_witness.862, element0 [concrete = constants.%Op.8b7] // CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %c.var, %impl.elem0.loc24 // CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f] // CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %c.var, %specific_fn.loc24 -// CHECK:STDOUT: %.loc24_3: bool = bind_value %c.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24_3) +// CHECK:STDOUT: %addr.loc24: %ptr.bb2 = addr_of %c.var +// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24) // CHECK:STDOUT: %impl.elem0.loc23: %.0d4 = impl_witness_access constants.%Destroy.impl_witness.862, element0 [concrete = constants.%Op.8b7] // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %b.var, %impl.elem0.loc23 // CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %b.var, %specific_fn.loc23 -// CHECK:STDOUT: %.loc23_3: bool = bind_value %b.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3) +// CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23) // CHECK:STDOUT: %impl.elem0.loc22: %.0d4 = impl_witness_access constants.%Destroy.impl_witness.862, element0 [concrete = constants.%Op.8b7] // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %a.var, %impl.elem0.loc22 // CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %a.var, %specific_fn.loc22 -// CHECK:STDOUT: %.loc22_3: bool = bind_value %a.var -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3) +// CHECK:STDOUT: %addr.loc22: %ptr.bb2 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -409,8 +410,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %bound_method.loc29_3.1: = bound_method %a.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f] // CHECK:STDOUT: %bound_method.loc29_3.2: = bound_method %a.var, %specific_fn -// CHECK:STDOUT: %.loc29_3: bool = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc29_3.2(%.loc29_3) +// CHECK:STDOUT: %addr: %ptr.bb2 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc29_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/unary_op.carbon b/toolchain/check/testdata/operators/builtin/unary_op.carbon index bedc1d05dced..40c003c48065 100644 --- a/toolchain/check/testdata/operators/builtin/unary_op.carbon +++ b/toolchain/check/testdata/operators/builtin/unary_op.carbon @@ -46,12 +46,14 @@ fn Constant() { // CHECK:STDOUT: %Destroy.impl_witness.862: = impl_witness imports.%Destroy.impl_witness_table, @impl(bool) [concrete] // CHECK:STDOUT: %Op.type.655: type = fn_type @Op.2, @impl(bool) [concrete] // CHECK:STDOUT: %Op.8b7: %Op.type.655 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] // CHECK:STDOUT: %Destroy.facet.2aa: %Destroy.type = facet_value bool, (%Destroy.impl_witness.862) [concrete] // CHECK:STDOUT: %.0d4: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2aa [concrete] // CHECK:STDOUT: %Op.specific_fn.c3f: = specific_function %Op.8b7, @Op.2(bool) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.926: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.926 [concrete] // CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -66,7 +68,7 @@ fn Constant() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -135,8 +137,8 @@ fn Constant() { // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt // CHECK:STDOUT: %.loc22_43.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc22_43.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc22_3.1: init %empty_tuple.type = converted %.loc22_43.1, %.loc22_43.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %a.var, %.loc22_3.1 +// CHECK:STDOUT: %.loc22_3: init %empty_tuple.type = converted %.loc22_43.1, %.loc22_43.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %a.var, %.loc22_3 // CHECK:STDOUT: br !.loc22_17 // CHECK:STDOUT: // CHECK:STDOUT: !.loc22_17: @@ -196,15 +198,14 @@ fn Constant() { // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %b.var, %impl.elem0.loc23 // CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %b.var, %specific_fn.loc23 -// CHECK:STDOUT: %.loc23_3: bool = bind_value %b.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3) +// CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %b.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23) // CHECK:STDOUT: %impl.elem0.loc22: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %a.var, %impl.elem0.loc22 // CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %a.var, %specific_fn.loc22 -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc22_3.2: %empty_tuple.type = converted %a.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3.2) +// CHECK:STDOUT: %addr.loc22: %ptr.843 = addr_of %a.var +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/dec.carbon b/toolchain/check/testdata/operators/overloaded/dec.carbon index 32c28c8fb10e..249dc3ec8d80 100644 --- a/toolchain/check/testdata/operators/overloaded/dec.carbon +++ b/toolchain/check/testdata/operators/overloaded/dec.carbon @@ -52,8 +52,8 @@ fn TestOp() { // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c // CHECK:STDOUT: %impl.elem0.loc27: %.859 = impl_witness_access constants.%Dec.impl_witness, element0 [concrete = constants.%Op.cf9] // CHECK:STDOUT: %bound_method.loc27: = bound_method %c.ref, %impl.elem0.loc27 -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc27(%addr) +// CHECK:STDOUT: %addr.loc27: %ptr.019 = addr_of %c.ref +// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon index a9ad6d57840d..b87b5519e8ad 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -49,7 +49,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [concrete] // CHECK:STDOUT: %Op.type.e3a: type = fn_type @Op.1 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -99,7 +99,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %Core.Inc: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [concrete = constants.%Inc.type] // CHECK:STDOUT: %Core.AddAssignWith: %AddAssignWith.type.fc6 = import_ref Core//prelude/operators/arithmetic, AddAssignWith, loaded [concrete = constants.%AddAssignWith.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -198,7 +198,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -214,15 +214,15 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %impl.elem0.loc33_3: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Op.0c9] // CHECK:STDOUT: %bound_method.loc33_3: = bound_method %a.ref, %impl.elem0.loc33_3 -// CHECK:STDOUT: %.loc33_5.1: ref %C = temporary_storage -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc33_5.1 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc33_3(%addr) +// CHECK:STDOUT: %.loc33: ref %C = temporary_storage +// CHECK:STDOUT: %addr.loc33_5.1: %ptr.019 = addr_of %.loc33 +// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc33_3(%addr.loc33_5.1) // CHECK:STDOUT: %impl.elem0.loc33_5: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] -// CHECK:STDOUT: %bound_method.loc33_5.1: = bound_method %.loc33_5.1, %impl.elem0.loc33_5 +// CHECK:STDOUT: %bound_method.loc33_5.1: = bound_method %.loc33, %impl.elem0.loc33_5 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc33_5, @Op.11(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc33_5.2: = bound_method %.loc33_5.1, %specific_fn -// CHECK:STDOUT: %.loc33_5.2: %C = bind_value %.loc33_5.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc33_5.2(%.loc33_5.2) +// CHECK:STDOUT: %bound_method.loc33_5.2: = bound_method %.loc33, %specific_fn +// CHECK:STDOUT: %addr.loc33_5.2: %ptr.019 = addr_of %.loc33 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc33_5.2(%addr.loc33_5.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -232,15 +232,15 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %b.ref: %C = name_ref b, %b // CHECK:STDOUT: %impl.elem0.loc44_5: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%Op.572] // CHECK:STDOUT: %bound_method.loc44_5: = bound_method %a.ref, %impl.elem0.loc44_5 -// CHECK:STDOUT: %.loc44_3.1: ref %C = temporary_storage -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc44_3.1 -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc44_5(%addr, %b.ref) +// CHECK:STDOUT: %.loc44: ref %C = temporary_storage +// CHECK:STDOUT: %addr.loc44_3.1: %ptr.019 = addr_of %.loc44 +// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc44_5(%addr.loc44_3.1, %b.ref) // CHECK:STDOUT: %impl.elem0.loc44_3: %.b80 = impl_witness_access constants.%Destroy.impl_witness.906, element0 [concrete = constants.%Op.5d7] -// CHECK:STDOUT: %bound_method.loc44_3.1: = bound_method %.loc44_3.1, %impl.elem0.loc44_3 +// CHECK:STDOUT: %bound_method.loc44_3.1: = bound_method %.loc44, %impl.elem0.loc44_3 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc44_3, @Op.11(constants.%C) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc44_3.2: = bound_method %.loc44_3.1, %specific_fn -// CHECK:STDOUT: %.loc44_3.2: %C = bind_value %.loc44_3.1 -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc44_3.2(%.loc44_3.2) +// CHECK:STDOUT: %bound_method.loc44_3.2: = bound_method %.loc44, %specific_fn +// CHECK:STDOUT: %addr.loc44_3.2: %ptr.019 = addr_of %.loc44 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc44_3.2(%addr.loc44_3.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index 40ae96e51ead..840bb51acb28 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -50,7 +50,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %TestUnary.type: type = fn_type @TestUnary [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -74,6 +74,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: %Destroy.impl_witness.906: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.type.153: type = fn_type @Op.10, @impl.49c(%C) [concrete] // CHECK:STDOUT: %Op.5d7: %Op.type.153 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness.906) [concrete] // CHECK:STDOUT: %.b80: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.5d7, @Op.10(%C) [concrete] @@ -94,7 +95,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: %Core.AddAssignWith: %AddAssignWith.type.fc6 = import_ref Core//prelude/operators/arithmetic, AddAssignWith, loaded [concrete = constants.%AddAssignWith.generic] // CHECK:STDOUT: %Core.Inc: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [concrete = constants.%Inc.type] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -151,7 +152,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -180,8 +181,8 @@ fn TestRef(b: C) { // CHECK:STDOUT: %a.var: ref %C = var %a.var_patt // CHECK:STDOUT: %.loc35_15.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc35_15.2: init %C = class_init (), %a.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc35_3.1: init %C = converted %.loc35_15.1, %.loc35_15.2 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %a.var, %.loc35_3.1 +// CHECK:STDOUT: %.loc35_3: init %C = converted %.loc35_15.1, %.loc35_15.2 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %a.var, %.loc35_3 // CHECK:STDOUT: %C.ref.loc35: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: ref %C = bind_name a, %a.var // CHECK:STDOUT: %a.ref.loc40: ref %C = name_ref a, %a @@ -191,8 +192,8 @@ fn TestRef(b: C) { // CHECK:STDOUT: %bound_method.loc35_3.1: = bound_method %a.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.10(constants.%C) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc35_3.2: = bound_method %a.var, %specific_fn -// CHECK:STDOUT: %.loc35_3.2: %C = bind_value %a.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc35_3.2(%.loc35_3.2) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %a.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc35_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index 27baa8f922c1..c37a334ee1ab 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -89,6 +89,7 @@ fn Test() { // CHECK:STDOUT: %Destroy.impl_witness.599: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%X) [concrete] // CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.3, @impl.49c(%X) [concrete] // CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %X, (%Destroy.impl_witness.599) [concrete] // CHECK:STDOUT: %.bfc: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.33a, @Op.3(%X) [concrete] @@ -105,7 +106,7 @@ fn Test() { // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -311,14 +312,14 @@ fn Test() { // CHECK:STDOUT: %bound_method.loc35_20.2: = bound_method %.loc35_20.1, %impl.elem0.loc35_20.2 // CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35_20.2, @Op.3(constants.%X) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc35_20.3: = bound_method %.loc35_20.1, %specific_fn.loc35 -// CHECK:STDOUT: %.loc35_20.7: %X = bind_value %.loc35_20.1 -// CHECK:STDOUT: %no_op.loc35: init %empty_tuple.type = call %bound_method.loc35_20.3(%.loc35_20.7) +// CHECK:STDOUT: %addr.loc35: %ptr.d17 = addr_of %.loc35_20.1 +// CHECK:STDOUT: %no_op.loc35: init %empty_tuple.type = call %bound_method.loc35_20.3(%addr.loc35) // CHECK:STDOUT: %impl.elem0.loc34_20.2: %.bfc = impl_witness_access constants.%Destroy.impl_witness.599, element0 [concrete = constants.%Op.33a] // CHECK:STDOUT: %bound_method.loc34_20.2: = bound_method %.loc34_20.1, %impl.elem0.loc34_20.2 // CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34_20.2, @Op.3(constants.%X) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc34_20.3: = bound_method %.loc34_20.1, %specific_fn.loc34 -// CHECK:STDOUT: %.loc34_20.6: %X = bind_value %.loc34_20.1 -// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_20.3(%.loc34_20.6) +// CHECK:STDOUT: %addr.loc34: %ptr.d17 = addr_of %.loc34_20.1 +// CHECK:STDOUT: %no_op.loc34: init %empty_tuple.type = call %bound_method.loc34_20.3(%addr.loc34) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/inc.carbon b/toolchain/check/testdata/operators/overloaded/inc.carbon index 0b9561927ac3..d733adffff7e 100644 --- a/toolchain/check/testdata/operators/overloaded/inc.carbon +++ b/toolchain/check/testdata/operators/overloaded/inc.carbon @@ -52,8 +52,8 @@ fn TestOp() { // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c // CHECK:STDOUT: %impl.elem0.loc27: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Op.0c9] // CHECK:STDOUT: %bound_method.loc27: = bound_method %c.ref, %impl.elem0.loc27 -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref -// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc27(%addr) +// CHECK:STDOUT: %addr.loc27: %ptr.019 = addr_of %c.ref +// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/fail_not_found.carbon b/toolchain/check/testdata/package_expr/fail_not_found.carbon index 558ab6e34b01..7775eee0469e 100644 --- a/toolchain/check/testdata/package_expr/fail_not_found.carbon +++ b/toolchain/check/testdata/package_expr/fail_not_found.carbon @@ -39,6 +39,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -53,7 +54,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -77,7 +78,7 @@ fn Main() { // CHECK:STDOUT: %package.ref: = name_ref package, package [concrete = package] // CHECK:STDOUT: %x.ref: = name_ref x, [concrete = ] // CHECK:STDOUT: assign %y.var, -// CHECK:STDOUT: %.loc20_10: type = splice_block %i32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc20: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -86,8 +87,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %y.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %y.var, %specific_fn -// CHECK:STDOUT: %.loc20_3: %i32 = bind_value %y.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3) +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %y.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index e75a0ef85497..f993d3ac3fd9 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -171,6 +171,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.64e: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.type.a17: type = fn_type @Op.3, @impl.49c(%i32) [concrete] // CHECK:STDOUT: %Op.e6a: %Op.type.a17 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %i32, (%Destroy.impl_witness.64e) [concrete] // CHECK:STDOUT: %.ab7: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.e6a, @Op.3(%i32) [concrete] @@ -189,7 +190,7 @@ fn Main() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -226,8 +227,8 @@ fn Main() { // CHECK:STDOUT: %specific_fn.loc7_3.1: = specific_function %impl.elem0.loc7_3.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn.loc7_3.1 [concrete = constants.%bound_method.9a1] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc7_3.1: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %x.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %x.var, %.loc7_3 // CHECK:STDOUT: %.loc7_10: type = splice_block %i32.loc7 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -251,14 +252,14 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc9_3.1: = bound_method %y.var, %impl.elem0.loc9 // CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_3.2: = bound_method %y.var, %specific_fn.loc9 -// CHECK:STDOUT: %.loc9_3: %i32 = bind_value %y.var -// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_3.2(%.loc9_3) +// CHECK:STDOUT: %addr.loc9: %ptr.235 = addr_of %y.var +// CHECK:STDOUT: %no_op.loc9: init %empty_tuple.type = call %bound_method.loc9_3.2(%addr.loc9) // CHECK:STDOUT: %impl.elem0.loc7_3.2: %.ab7 = impl_witness_access constants.%Destroy.impl_witness.64e, element0 [concrete = constants.%Op.e6a] // CHECK:STDOUT: %bound_method.loc7_3.3: = bound_method %x.var, %impl.elem0.loc7_3.2 // CHECK:STDOUT: %specific_fn.loc7_3.2: = specific_function %impl.elem0.loc7_3.2, @Op.3(constants.%i32) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.4: = bound_method %x.var, %specific_fn.loc7_3.2 -// CHECK:STDOUT: %.loc7_3.2: %i32 = bind_value %x.var -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.4(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.235 = addr_of %x.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.4(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/patterns/underscore.carbon b/toolchain/check/testdata/patterns/underscore.carbon index c61cff59f1dd..ec45ac51f0b0 100644 --- a/toolchain/check/testdata/patterns/underscore.carbon +++ b/toolchain/check/testdata/patterns/underscore.carbon @@ -138,6 +138,7 @@ fn F() -> {} { // CHECK:STDOUT: %Destroy.impl_witness.eb8: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %Op.type.069: type = fn_type @Op.2, @impl(%empty_struct_type) [concrete] // CHECK:STDOUT: %Op.d5a: %Op.type.069 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_struct_type, (%Destroy.impl_witness.eb8) [concrete] // CHECK:STDOUT: %.9da: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.d5a, @Op.2(%empty_struct_type) [concrete] @@ -150,7 +151,7 @@ fn F() -> {} { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -193,8 +194,8 @@ fn F() -> {} { // CHECK:STDOUT: %.loc8_11.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_11.3: type = converted %.loc8_11.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct.loc8: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_16.2: %empty_struct_type = converted %.loc8_16.1, %empty_struct.loc8 [concrete = constants.%empty_struct] +// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] +// CHECK:STDOUT: %.loc8_16.2: %empty_struct_type = converted %.loc8_16.1, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %_.loc8: %empty_struct_type = bind_name _, %.loc8_16.2 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %_.patt.loc9: %pattern_type.a96 = binding_pattern _ [concrete] @@ -203,8 +204,8 @@ fn F() -> {} { // CHECK:STDOUT: %_.var: ref %empty_struct_type = var %_.var_patt // CHECK:STDOUT: %.loc9_16.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_16.2: init %empty_struct_type = struct_init () to %_.var [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc9_3.1: init %empty_struct_type = converted %.loc9_16.1, %.loc9_16.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: assign %_.var, %.loc9_3.1 +// CHECK:STDOUT: %.loc9_3: init %empty_struct_type = converted %.loc9_16.1, %.loc9_16.2 [concrete = constants.%empty_struct] +// CHECK:STDOUT: assign %_.var, %.loc9_3 // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc9_11.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_11.3: type = converted %.loc9_11.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] @@ -214,9 +215,8 @@ fn F() -> {} { // CHECK:STDOUT: %bound_method.loc9_3.1: = bound_method %_.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_struct_type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc9_3.2: = bound_method %_.var, %specific_fn -// CHECK:STDOUT: %empty_struct.loc9: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc9_3.2: %empty_struct_type = converted %_.var, %empty_struct.loc9 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_3.2(%.loc9_3.2) +// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %_.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc9_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_lvalue.carbon b/toolchain/check/testdata/pointer/address_of_lvalue.carbon index 38cc539bb0f4..044d1d079a60 100644 --- a/toolchain/check/testdata/pointer/address_of_lvalue.carbon +++ b/toolchain/check/testdata/pointer/address_of_lvalue.carbon @@ -65,6 +65,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] +// CHECK:STDOUT: %ptr.261: type = ptr_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [concrete] @@ -77,6 +78,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.711: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.3, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.facet.2bf: %Destroy.type = facet_value %ptr.235, (%Destroy.impl_witness.711) [concrete] // CHECK:STDOUT: %.a79: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2bf [concrete] // CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.3(%ptr.235) [concrete] @@ -89,6 +91,7 @@ fn F() { // CHECK:STDOUT: %Destroy.impl_witness.ff6: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.3ee) [concrete] // CHECK:STDOUT: %Op.type.757: type = fn_type @Op.3, @impl.49c(%ptr.3ee) [concrete] // CHECK:STDOUT: %Op.e22: %Op.type.757 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.40c: type = ptr_type %ptr.3ee [concrete] // CHECK:STDOUT: %Destroy.facet.ed3: %Destroy.type = facet_value %ptr.3ee, (%Destroy.impl_witness.ff6) [concrete] // CHECK:STDOUT: %.f93: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.ed3 [concrete] // CHECK:STDOUT: %Op.specific_fn.ce1: = specific_function %Op.e22, @Op.3(%ptr.3ee) [concrete] @@ -113,7 +116,7 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -153,8 +156,8 @@ fn F() { // CHECK:STDOUT: %.loc16_46.6: ref %i32 = struct_access %s.var, element1 // CHECK:STDOUT: %.loc16_46.7: init %i32 = initialize_from %.loc16_46.5 to %.loc16_46.6 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc16_46.8: init %struct_type.a.b.501 = struct_init (%.loc16_46.4, %.loc16_46.7) to %s.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc16_3.1: init %struct_type.a.b.501 = converted %.loc16_46.1, %.loc16_46.8 [concrete = constants.%struct] -// CHECK:STDOUT: assign %s.var, %.loc16_3.1 +// CHECK:STDOUT: %.loc16_3: init %struct_type.a.b.501 = converted %.loc16_46.1, %.loc16_46.8 [concrete = constants.%struct] +// CHECK:STDOUT: assign %s.var, %.loc16_3 // CHECK:STDOUT: %.loc16_27: type = splice_block %struct_type.a.b.loc16 [concrete = constants.%struct_type.a.b.501] { // CHECK:STDOUT: %int_32.loc16_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -169,9 +172,9 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %p.var: ref %ptr.3ee = var %p.var_patt // CHECK:STDOUT: %s.ref.loc18: ref %struct_type.a.b.501 = name_ref s, %s -// CHECK:STDOUT: %addr.loc18: %ptr.3ee = addr_of %s.ref.loc18 -// CHECK:STDOUT: assign %p.var, %addr.loc18 -// CHECK:STDOUT: %.loc18_28: type = splice_block %ptr.loc18 [concrete = constants.%ptr.3ee] { +// CHECK:STDOUT: %addr.loc18_32: %ptr.3ee = addr_of %s.ref.loc18 +// CHECK:STDOUT: assign %p.var, %addr.loc18_32 +// CHECK:STDOUT: %.loc18: type = splice_block %ptr.loc18 [concrete = constants.%ptr.3ee] { // CHECK:STDOUT: %int_32.loc18_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc18_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -187,8 +190,8 @@ fn F() { // CHECK:STDOUT: %q.var: ref %ptr.235 = var %q.var_patt // CHECK:STDOUT: %s.ref.loc19: ref %struct_type.a.b.501 = name_ref s, %s // CHECK:STDOUT: %.loc19_19: ref %i32 = struct_access %s.ref.loc19, element0 -// CHECK:STDOUT: %addr.loc19: %ptr.235 = addr_of %.loc19_19 -// CHECK:STDOUT: assign %q.var, %addr.loc19 +// CHECK:STDOUT: %addr.loc19_17: %ptr.235 = addr_of %.loc19_19 +// CHECK:STDOUT: assign %q.var, %addr.loc19_17 // CHECK:STDOUT: %.loc19_13: type = splice_block %ptr.loc19 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -202,8 +205,8 @@ fn F() { // CHECK:STDOUT: %r.var: ref %ptr.235 = var %r.var_patt // CHECK:STDOUT: %s.ref.loc20: ref %struct_type.a.b.501 = name_ref s, %s // CHECK:STDOUT: %.loc20_19: ref %i32 = struct_access %s.ref.loc20, element1 -// CHECK:STDOUT: %addr.loc20: %ptr.235 = addr_of %.loc20_19 -// CHECK:STDOUT: assign %r.var, %addr.loc20 +// CHECK:STDOUT: %addr.loc20_17: %ptr.235 = addr_of %.loc20_19 +// CHECK:STDOUT: assign %r.var, %addr.loc20_17 // CHECK:STDOUT: %.loc20_13: type = splice_block %ptr.loc20 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -224,19 +227,19 @@ fn F() { // CHECK:STDOUT: %bound_method.loc22_28.2: = bound_method %int_1.loc22, %specific_fn.loc22_28.1 [concrete = constants.%bound_method.9a1] // CHECK:STDOUT: %int.convert_checked.loc22_28.1: init %i32 = call %bound_method.loc22_28.2(%int_1.loc22) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc22_28.2: init %i32 = converted %int_1.loc22, %int.convert_checked.loc22_28.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple.elem0.loc22_28: ref %i32 = tuple_access %t.var, element0 -// CHECK:STDOUT: %.loc22_28.3: init %i32 = initialize_from %.loc22_28.2 to %tuple.elem0.loc22_28 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %tuple.elem0.loc22: ref %i32 = tuple_access %t.var, element0 +// CHECK:STDOUT: %.loc22_28.3: init %i32 = initialize_from %.loc22_28.2 to %tuple.elem0.loc22 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %impl.elem0.loc22_28.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc22_28.3: = bound_method %int_2.loc22, %impl.elem0.loc22_28.2 [concrete = constants.%Convert.bound.ef9] // CHECK:STDOUT: %specific_fn.loc22_28.2: = specific_function %impl.elem0.loc22_28.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc22_28.4: = bound_method %int_2.loc22, %specific_fn.loc22_28.2 [concrete = constants.%bound_method.b92] // CHECK:STDOUT: %int.convert_checked.loc22_28.2: init %i32 = call %bound_method.loc22_28.4(%int_2.loc22) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc22_28.4: init %i32 = converted %int_2.loc22, %int.convert_checked.loc22_28.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %tuple.elem1.loc22_28: ref %i32 = tuple_access %t.var, element1 -// CHECK:STDOUT: %.loc22_28.5: init %i32 = initialize_from %.loc22_28.4 to %tuple.elem1.loc22_28 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %tuple.elem1.loc22: ref %i32 = tuple_access %t.var, element1 +// CHECK:STDOUT: %.loc22_28.5: init %i32 = initialize_from %.loc22_28.4 to %tuple.elem1.loc22 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc22_28.6: init %tuple.type.d07 = tuple_init (%.loc22_28.3, %.loc22_28.5) to %t.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc22_3.1: init %tuple.type.d07 = converted %.loc22_28.1, %.loc22_28.6 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %t.var, %.loc22_3.1 +// CHECK:STDOUT: %.loc22_3: init %tuple.type.d07 = converted %.loc22_28.1, %.loc22_28.6 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %t.var, %.loc22_3 // CHECK:STDOUT: %.loc22_19.1: type = splice_block %.loc22_19.3 [concrete = constants.%tuple.type.d07] { // CHECK:STDOUT: %int_32.loc22_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -254,9 +257,9 @@ fn F() { // CHECK:STDOUT: %t.ref.loc23: ref %tuple.type.d07 = name_ref t, %t // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %tuple.elem0.loc23: ref %i32 = tuple_access %t.ref.loc23, element0 -// CHECK:STDOUT: %addr.loc23: %ptr.235 = addr_of %tuple.elem0.loc23 -// CHECK:STDOUT: assign %t0.var, %addr.loc23 -// CHECK:STDOUT: %.loc23_14: type = splice_block %ptr.loc23 [concrete = constants.%ptr.235] { +// CHECK:STDOUT: %addr.loc23_18: %ptr.235 = addr_of %tuple.elem0.loc23 +// CHECK:STDOUT: assign %t0.var, %addr.loc23_18 +// CHECK:STDOUT: %.loc23: type = splice_block %ptr.loc23 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr.loc23: type = ptr_type %i32.loc23 [concrete = constants.%ptr.235] @@ -270,9 +273,9 @@ fn F() { // CHECK:STDOUT: %t.ref.loc24: ref %tuple.type.d07 = name_ref t, %t // CHECK:STDOUT: %int_1.loc24: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc24: ref %i32 = tuple_access %t.ref.loc24, element1 -// CHECK:STDOUT: %addr.loc24: %ptr.235 = addr_of %tuple.elem1.loc24 -// CHECK:STDOUT: assign %t1.var, %addr.loc24 -// CHECK:STDOUT: %.loc24_14: type = splice_block %ptr.loc24 [concrete = constants.%ptr.235] { +// CHECK:STDOUT: %addr.loc24_18: %ptr.235 = addr_of %tuple.elem1.loc24 +// CHECK:STDOUT: assign %t1.var, %addr.loc24_18 +// CHECK:STDOUT: %.loc24: type = splice_block %ptr.loc24 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr.loc24: type = ptr_type %i32.loc24 [concrete = constants.%ptr.235] @@ -282,54 +285,44 @@ fn F() { // CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %t1.var, %impl.elem0.loc24 // CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %t1.var, %specific_fn.loc24 -// CHECK:STDOUT: %.loc24_3: %ptr.235 = bind_value %t1.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24_3) +// CHECK:STDOUT: %addr.loc24_3: %ptr.5d5 = addr_of %t1.var +// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24_3) // CHECK:STDOUT: %impl.elem0.loc23: %.a79 = impl_witness_access constants.%Destroy.impl_witness.711, element0 [concrete = constants.%Op.649] // CHECK:STDOUT: %bound_method.loc23_3.1: = bound_method %t0.var, %impl.elem0.loc23 // CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc23_3.2: = bound_method %t0.var, %specific_fn.loc23 -// CHECK:STDOUT: %.loc23_3: %ptr.235 = bind_value %t0.var -// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%.loc23_3) +// CHECK:STDOUT: %addr.loc23_3: %ptr.5d5 = addr_of %t0.var +// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23_3.2(%addr.loc23_3) // CHECK:STDOUT: %impl.elem0.loc22_3: %.b68 = impl_witness_access constants.%Destroy.impl_witness.5a7, element0 [concrete = constants.%Op.7c6] // CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %t.var, %impl.elem0.loc22_3 // CHECK:STDOUT: %specific_fn.loc22_3: = specific_function %impl.elem0.loc22_3, @Op.3(constants.%tuple.type.d07) [concrete = constants.%Op.specific_fn.bbb] // CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %t.var, %specific_fn.loc22_3 -// CHECK:STDOUT: %tuple.elem0.loc22_3: ref %i32 = tuple_access %t.var, element0 -// CHECK:STDOUT: %.loc22_3.2: %i32 = bind_value %tuple.elem0.loc22_3 -// CHECK:STDOUT: %tuple.elem1.loc22_3: ref %i32 = tuple_access %t.var, element1 -// CHECK:STDOUT: %.loc22_3.3: %i32 = bind_value %tuple.elem1.loc22_3 -// CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%.loc22_3.2, %.loc22_3.3) -// CHECK:STDOUT: %.loc22_3.4: %tuple.type.d07 = converted %t.var, %tuple -// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3.4) +// CHECK:STDOUT: %addr.loc22: %ptr.261 = addr_of %t.var +// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22) // CHECK:STDOUT: %impl.elem0.loc20: %.a79 = impl_witness_access constants.%Destroy.impl_witness.711, element0 [concrete = constants.%Op.649] // CHECK:STDOUT: %bound_method.loc20_3.1: = bound_method %r.var, %impl.elem0.loc20 // CHECK:STDOUT: %specific_fn.loc20: = specific_function %impl.elem0.loc20, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc20_3.2: = bound_method %r.var, %specific_fn.loc20 -// CHECK:STDOUT: %.loc20_3: %ptr.235 = bind_value %r.var -// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20_3.2(%.loc20_3) +// CHECK:STDOUT: %addr.loc20_3: %ptr.5d5 = addr_of %r.var +// CHECK:STDOUT: %no_op.loc20: init %empty_tuple.type = call %bound_method.loc20_3.2(%addr.loc20_3) // CHECK:STDOUT: %impl.elem0.loc19: %.a79 = impl_witness_access constants.%Destroy.impl_witness.711, element0 [concrete = constants.%Op.649] // CHECK:STDOUT: %bound_method.loc19_3.1: = bound_method %q.var, %impl.elem0.loc19 // CHECK:STDOUT: %specific_fn.loc19: = specific_function %impl.elem0.loc19, @Op.3(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc19_3.2: = bound_method %q.var, %specific_fn.loc19 -// CHECK:STDOUT: %.loc19_3: %ptr.235 = bind_value %q.var -// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3.2(%.loc19_3) +// CHECK:STDOUT: %addr.loc19_3: %ptr.5d5 = addr_of %q.var +// CHECK:STDOUT: %no_op.loc19: init %empty_tuple.type = call %bound_method.loc19_3.2(%addr.loc19_3) // CHECK:STDOUT: %impl.elem0.loc18: %.f93 = impl_witness_access constants.%Destroy.impl_witness.ff6, element0 [concrete = constants.%Op.e22] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %p.var, %impl.elem0.loc18 // CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Op.3(constants.%ptr.3ee) [concrete = constants.%Op.specific_fn.ce1] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %p.var, %specific_fn.loc18 -// CHECK:STDOUT: %.loc18_3: %ptr.3ee = bind_value %p.var -// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3) +// CHECK:STDOUT: %addr.loc18_3: %ptr.40c = addr_of %p.var +// CHECK:STDOUT: %no_op.loc18: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18_3) // CHECK:STDOUT: %impl.elem0.loc16_3: %.8e0 = impl_witness_access constants.%Destroy.impl_witness.ad1, element0 [concrete = constants.%Op.9db] // CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %s.var, %impl.elem0.loc16_3 // CHECK:STDOUT: %specific_fn.loc16_3: = specific_function %impl.elem0.loc16_3, @Op.3(constants.%struct_type.a.b.501) [concrete = constants.%Op.specific_fn.1e0] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %s.var, %specific_fn.loc16_3 -// CHECK:STDOUT: %.loc16_3.2: ref %i32 = struct_access %s.var, element0 -// CHECK:STDOUT: %.loc16_3.3: %i32 = bind_value %.loc16_3.2 -// CHECK:STDOUT: %.loc16_3.4: ref %i32 = struct_access %s.var, element1 -// CHECK:STDOUT: %.loc16_3.5: %i32 = bind_value %.loc16_3.4 -// CHECK:STDOUT: %struct: %struct_type.a.b.501 = struct_value (%.loc16_3.3, %.loc16_3.5) -// CHECK:STDOUT: %.loc16_3.6: %struct_type.a.b.501 = converted %s.var, %struct -// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.2(%.loc16_3.6) +// CHECK:STDOUT: %addr.loc16: %ptr.3ee = addr_of %s.var +// CHECK:STDOUT: %no_op.loc16: init %empty_tuple.type = call %bound_method.loc16_3.2(%addr.loc16) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_address_of_value.carbon b/toolchain/check/testdata/pointer/fail_address_of_value.carbon index 912453a08d36..75e467226140 100644 --- a/toolchain/check/testdata/pointer/fail_address_of_value.carbon +++ b/toolchain/check/testdata/pointer/fail_address_of_value.carbon @@ -148,6 +148,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %Destroy.impl_witness.6d2: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%struct_type.a.ba9) [concrete] // CHECK:STDOUT: %Op.type.c80: type = fn_type @Op.2, @impl.49c(%struct_type.a.ba9) [concrete] // CHECK:STDOUT: %Op.691: %Op.type.c80 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.1bb: type = ptr_type %struct_type.a.ba9 [concrete] // CHECK:STDOUT: %Destroy.facet.16e: %Destroy.type = facet_value %struct_type.a.ba9, (%Destroy.impl_witness.6d2) [concrete] // CHECK:STDOUT: %.a8f: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.16e [concrete] // CHECK:STDOUT: %Op.specific_fn.51b: = specific_function %Op.691, @Op.2(%struct_type.a.ba9) [concrete] @@ -167,6 +168,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %Destroy.impl_witness.711: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.type.ba2: type = fn_type @Op.2, @impl.49c(%ptr.235) [concrete] // CHECK:STDOUT: %Op.649: %Op.type.ba2 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.5d5: type = ptr_type %ptr.235 [concrete] // CHECK:STDOUT: %Destroy.facet.2bf: %Destroy.type = facet_value %ptr.235, (%Destroy.impl_witness.711) [concrete] // CHECK:STDOUT: %.a79: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.2bf [concrete] // CHECK:STDOUT: %Op.specific_fn.829: = specific_function %Op.649, @Op.2(%ptr.235) [concrete] @@ -181,7 +183,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -277,7 +279,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %.loc62_6.1: ref %struct_type.a.ba9 = temporary_storage // CHECK:STDOUT: %.loc62_6.2: ref %struct_type.a.ba9 = temporary %.loc62_6.1, %H.call // CHECK:STDOUT: %.loc62_7: ref %i32 = struct_access %.loc62_6.2, element0 -// CHECK:STDOUT: %addr.loc62: %ptr.235 = addr_of [concrete = ] +// CHECK:STDOUT: %addr.loc62_3: %ptr.235 = addr_of [concrete = ] // CHECK:STDOUT: %true.loc67: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %.loc67: bool = not %true.loc67 [concrete = constants.%false] // CHECK:STDOUT: %addr.loc67: %ptr.bb2 = addr_of [concrete = ] @@ -285,11 +287,8 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %bound_method.loc62_6.1: = bound_method %.loc62_6.1, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%struct_type.a.ba9) [concrete = constants.%Op.specific_fn.51b] // CHECK:STDOUT: %bound_method.loc62_6.2: = bound_method %.loc62_6.1, %specific_fn -// CHECK:STDOUT: %.loc62_6.3: ref %i32 = struct_access %.loc62_6.1, element0 -// CHECK:STDOUT: %.loc62_6.4: %i32 = bind_value %.loc62_6.3 -// CHECK:STDOUT: %struct: %struct_type.a.ba9 = struct_value (%.loc62_6.4) -// CHECK:STDOUT: %.loc62_6.5: %struct_type.a.ba9 = converted %.loc62_6.1, %struct -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc62_6.2(%.loc62_6.5) +// CHECK:STDOUT: %addr.loc62_6: %ptr.1bb = addr_of %.loc62_6.1 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc62_6.2(%addr.loc62_6) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -335,9 +334,9 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %param_addr.var: ref %ptr.235 = var %param_addr.var_patt // CHECK:STDOUT: %param.ref: %i32 = name_ref param, %param -// CHECK:STDOUT: %addr: %ptr.235 = addr_of [concrete = ] -// CHECK:STDOUT: assign %param_addr.var, %addr -// CHECK:STDOUT: %.loc104_22: type = splice_block %ptr [concrete = constants.%ptr.235] { +// CHECK:STDOUT: %addr.loc104_26: %ptr.235 = addr_of [concrete = ] +// CHECK:STDOUT: assign %param_addr.var, %addr.loc104_26 +// CHECK:STDOUT: %.loc104: type = splice_block %ptr [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc104: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc104: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc104 [concrete = constants.%ptr.235] @@ -347,8 +346,8 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %bound_method.loc104_3.1: = bound_method %param_addr.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%ptr.235) [concrete = constants.%Op.specific_fn.829] // CHECK:STDOUT: %bound_method.loc104_3.2: = bound_method %param_addr.var, %specific_fn -// CHECK:STDOUT: %.loc104_3: %ptr.235 = bind_value %param_addr.var -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc104_3.2(%.loc104_3) +// CHECK:STDOUT: %addr.loc104_3: %ptr.5d5 = addr_of %param_addr.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc104_3.2(%addr.loc104_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index 456f307a13bb..a8c7fa6af23e 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -34,6 +34,7 @@ fn G() { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a.b.2f9: type = struct_type {.a: %tuple.type.189, .b: %tuple.type.189} [concrete] +// CHECK:STDOUT: %ptr.7ae: type = ptr_type %tuple.type.189 [concrete] // CHECK:STDOUT: %pattern_type.3c2: type = pattern_type %struct_type.a.b.2f9 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] @@ -49,6 +50,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.0dd: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%struct_type.a.b.2f9) [concrete] // CHECK:STDOUT: %Op.type.840: type = fn_type @Op.3, @impl.49c(%struct_type.a.b.2f9) [concrete] // CHECK:STDOUT: %Op.52b: %Op.type.840 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.c95: type = ptr_type %struct_type.a.b.2f9 [concrete] // CHECK:STDOUT: %Destroy.facet.4f2: %Destroy.type = facet_value %struct_type.a.b.2f9, (%Destroy.impl_witness.0dd) [concrete] // CHECK:STDOUT: %.1a1: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.4f2 [concrete] // CHECK:STDOUT: %Op.specific_fn.c7e: = specific_function %Op.52b, @Op.3(%struct_type.a.b.2f9) [concrete] @@ -63,7 +65,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -109,8 +111,8 @@ fn G() { // CHECK:STDOUT: %F.call.loc18_73: init %tuple.type.189 = call %F.ref.loc18_71() to %.loc18_74.2 // CHECK:STDOUT: %.loc18_74.3: %struct_type.a.b.2f9 = struct_literal (%F.call.loc18_63, %F.call.loc18_73) // CHECK:STDOUT: %.loc18_74.4: init %struct_type.a.b.2f9 = struct_init (%F.call.loc18_63, %F.call.loc18_73) to %v.var -// CHECK:STDOUT: %.loc18_3.1: init %struct_type.a.b.2f9 = converted %.loc18_74.3, %.loc18_74.4 -// CHECK:STDOUT: assign %v.var, %.loc18_3.1 +// CHECK:STDOUT: %.loc18_3: init %struct_type.a.b.2f9 = converted %.loc18_74.3, %.loc18_74.4 +// CHECK:STDOUT: assign %v.var, %.loc18_3 // CHECK:STDOUT: %.loc18_51: type = splice_block %struct_type.a.b [concrete = constants.%struct_type.a.b.2f9] { // CHECK:STDOUT: %int_32.loc18_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -135,53 +137,20 @@ fn G() { // CHECK:STDOUT: %bound_method.loc18_74.1: = bound_method %.loc18_74.2, %impl.elem0.loc18_74.1 // CHECK:STDOUT: %specific_fn.loc18_74.1: = specific_function %impl.elem0.loc18_74.1, @Op.3(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] // CHECK:STDOUT: %bound_method.loc18_74.2: = bound_method %.loc18_74.2, %specific_fn.loc18_74.1 -// CHECK:STDOUT: %tuple.elem0.loc18_74.1: ref %i32 = tuple_access %.loc18_74.2, element0 -// CHECK:STDOUT: %.loc18_74.5: %i32 = bind_value %tuple.elem0.loc18_74.1 -// CHECK:STDOUT: %tuple.elem1.loc18_74.1: ref %i32 = tuple_access %.loc18_74.2, element1 -// CHECK:STDOUT: %.loc18_74.6: %i32 = bind_value %tuple.elem1.loc18_74.1 -// CHECK:STDOUT: %tuple.elem2.loc18_74.1: ref %i32 = tuple_access %.loc18_74.2, element2 -// CHECK:STDOUT: %.loc18_74.7: %i32 = bind_value %tuple.elem2.loc18_74.1 -// CHECK:STDOUT: %tuple.loc18_74.1: %tuple.type.189 = tuple_value (%.loc18_74.5, %.loc18_74.6, %.loc18_74.7) -// CHECK:STDOUT: %.loc18_74.8: %tuple.type.189 = converted %.loc18_74.2, %tuple.loc18_74.1 -// CHECK:STDOUT: %no_op.loc18_74.1: init %empty_tuple.type = call %bound_method.loc18_74.2(%.loc18_74.8) +// CHECK:STDOUT: %addr.loc18_74.1: %ptr.7ae = addr_of %.loc18_74.2 +// CHECK:STDOUT: %no_op.loc18_74.1: init %empty_tuple.type = call %bound_method.loc18_74.2(%addr.loc18_74.1) // CHECK:STDOUT: %impl.elem0.loc18_74.2: %.cce = impl_witness_access constants.%Destroy.impl_witness.c0f, element0 [concrete = constants.%Op.672] // CHECK:STDOUT: %bound_method.loc18_74.3: = bound_method %.loc18_74.1, %impl.elem0.loc18_74.2 // CHECK:STDOUT: %specific_fn.loc18_74.2: = specific_function %impl.elem0.loc18_74.2, @Op.3(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] // CHECK:STDOUT: %bound_method.loc18_74.4: = bound_method %.loc18_74.1, %specific_fn.loc18_74.2 -// CHECK:STDOUT: %tuple.elem0.loc18_74.2: ref %i32 = tuple_access %.loc18_74.1, element0 -// CHECK:STDOUT: %.loc18_74.9: %i32 = bind_value %tuple.elem0.loc18_74.2 -// CHECK:STDOUT: %tuple.elem1.loc18_74.2: ref %i32 = tuple_access %.loc18_74.1, element1 -// CHECK:STDOUT: %.loc18_74.10: %i32 = bind_value %tuple.elem1.loc18_74.2 -// CHECK:STDOUT: %tuple.elem2.loc18_74.2: ref %i32 = tuple_access %.loc18_74.1, element2 -// CHECK:STDOUT: %.loc18_74.11: %i32 = bind_value %tuple.elem2.loc18_74.2 -// CHECK:STDOUT: %tuple.loc18_74.2: %tuple.type.189 = tuple_value (%.loc18_74.9, %.loc18_74.10, %.loc18_74.11) -// CHECK:STDOUT: %.loc18_74.12: %tuple.type.189 = converted %.loc18_74.1, %tuple.loc18_74.2 -// CHECK:STDOUT: %no_op.loc18_74.2: init %empty_tuple.type = call %bound_method.loc18_74.4(%.loc18_74.12) +// CHECK:STDOUT: %addr.loc18_74.2: %ptr.7ae = addr_of %.loc18_74.1 +// CHECK:STDOUT: %no_op.loc18_74.2: init %empty_tuple.type = call %bound_method.loc18_74.4(%addr.loc18_74.2) // CHECK:STDOUT: %impl.elem0.loc18_3: %.1a1 = impl_witness_access constants.%Destroy.impl_witness.0dd, element0 [concrete = constants.%Op.52b] // CHECK:STDOUT: %bound_method.loc18_3.1: = bound_method %v.var, %impl.elem0.loc18_3 // CHECK:STDOUT: %specific_fn.loc18_3: = specific_function %impl.elem0.loc18_3, @Op.3(constants.%struct_type.a.b.2f9) [concrete = constants.%Op.specific_fn.c7e] // CHECK:STDOUT: %bound_method.loc18_3.2: = bound_method %v.var, %specific_fn.loc18_3 -// CHECK:STDOUT: %.loc18_3.2: ref %tuple.type.189 = struct_access %v.var, element0 -// CHECK:STDOUT: %tuple.elem0.loc18_3.1: ref %i32 = tuple_access %.loc18_3.2, element0 -// CHECK:STDOUT: %.loc18_3.3: %i32 = bind_value %tuple.elem0.loc18_3.1 -// CHECK:STDOUT: %tuple.elem1.loc18_3.1: ref %i32 = tuple_access %.loc18_3.2, element1 -// CHECK:STDOUT: %.loc18_3.4: %i32 = bind_value %tuple.elem1.loc18_3.1 -// CHECK:STDOUT: %tuple.elem2.loc18_3.1: ref %i32 = tuple_access %.loc18_3.2, element2 -// CHECK:STDOUT: %.loc18_3.5: %i32 = bind_value %tuple.elem2.loc18_3.1 -// CHECK:STDOUT: %tuple.loc18_3.1: %tuple.type.189 = tuple_value (%.loc18_3.3, %.loc18_3.4, %.loc18_3.5) -// CHECK:STDOUT: %.loc18_3.6: %tuple.type.189 = converted %.loc18_3.2, %tuple.loc18_3.1 -// CHECK:STDOUT: %.loc18_3.7: ref %tuple.type.189 = struct_access %v.var, element1 -// CHECK:STDOUT: %tuple.elem0.loc18_3.2: ref %i32 = tuple_access %.loc18_3.7, element0 -// CHECK:STDOUT: %.loc18_3.8: %i32 = bind_value %tuple.elem0.loc18_3.2 -// CHECK:STDOUT: %tuple.elem1.loc18_3.2: ref %i32 = tuple_access %.loc18_3.7, element1 -// CHECK:STDOUT: %.loc18_3.9: %i32 = bind_value %tuple.elem1.loc18_3.2 -// CHECK:STDOUT: %tuple.elem2.loc18_3.2: ref %i32 = tuple_access %.loc18_3.7, element2 -// CHECK:STDOUT: %.loc18_3.10: %i32 = bind_value %tuple.elem2.loc18_3.2 -// CHECK:STDOUT: %tuple.loc18_3.2: %tuple.type.189 = tuple_value (%.loc18_3.8, %.loc18_3.9, %.loc18_3.10) -// CHECK:STDOUT: %.loc18_3.11: %tuple.type.189 = converted %.loc18_3.7, %tuple.loc18_3.2 -// CHECK:STDOUT: %struct: %struct_type.a.b.2f9 = struct_value (%.loc18_3.6, %.loc18_3.11) -// CHECK:STDOUT: %.loc18_3.12: %struct_type.a.b.2f9 = converted %v.var, %struct -// CHECK:STDOUT: %no_op.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3.2(%.loc18_3.12) +// CHECK:STDOUT: %addr.loc18_3: %ptr.c95 = addr_of %v.var +// CHECK:STDOUT: %no_op.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3.2(%addr.loc18_3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon index ed1bb9926f06..c61a096c3ca1 100644 --- a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon @@ -119,6 +119,7 @@ fn H() { // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.f9f: type = tuple_type (%tuple.type.ff9, %tuple.type.ff9) [concrete] // CHECK:STDOUT: %tuple.type.99b: type = tuple_type (%tuple.type.189, %tuple.type.189) [concrete] +// CHECK:STDOUT: %ptr.7ae: type = ptr_type %tuple.type.189 [concrete] // CHECK:STDOUT: %pattern_type.d88: type = pattern_type %tuple.type.99b [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] @@ -137,6 +138,7 @@ fn H() { // CHECK:STDOUT: %Destroy.impl_witness.2c6: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%tuple.type.99b) [concrete] // CHECK:STDOUT: %Op.type.387: type = fn_type @Op.3, @impl.49c(%tuple.type.99b) [concrete] // CHECK:STDOUT: %Op.b09: %Op.type.387 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8bc: type = ptr_type %tuple.type.99b [concrete] // CHECK:STDOUT: %Destroy.facet.e74: %Destroy.type = facet_value %tuple.type.99b, (%Destroy.impl_witness.2c6) [concrete] // CHECK:STDOUT: %.41d: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.e74 [concrete] // CHECK:STDOUT: %Op.specific_fn.852: = specific_function %Op.b09, @Op.3(%tuple.type.99b) [concrete] @@ -163,6 +165,7 @@ fn H() { // CHECK:STDOUT: %Destroy.impl_witness.78c: = impl_witness imports.%Destroy.impl_witness_table, @impl.49c(%tuple.type.516) [concrete] // CHECK:STDOUT: %Op.type.701: type = fn_type @Op.3, @impl.49c(%tuple.type.516) [concrete] // CHECK:STDOUT: %Op.dfb: %Op.type.701 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.12e: type = ptr_type %tuple.type.516 [concrete] // CHECK:STDOUT: %Destroy.facet.d6c: %Destroy.type = facet_value %tuple.type.516, (%Destroy.impl_witness.78c) [concrete] // CHECK:STDOUT: %.1fa: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.d6c [concrete] // CHECK:STDOUT: %Op.specific_fn.922: = specific_function %Op.dfb, @Op.3(%tuple.type.516) [concrete] @@ -171,7 +174,7 @@ fn H() { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.49c.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.49c.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl.49c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -183,15 +186,15 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %tuple.type.99b = var %v.var_patt // CHECK:STDOUT: %F.ref.loc7_48: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %tuple.elem0.loc7_56.1: ref %tuple.type.189 = tuple_access %v.var, element0 -// CHECK:STDOUT: %F.call.loc7_50: init %tuple.type.189 = call %F.ref.loc7_48() to %tuple.elem0.loc7_56.1 +// CHECK:STDOUT: %tuple.elem0: ref %tuple.type.189 = tuple_access %v.var, element0 +// CHECK:STDOUT: %F.call.loc7_50: init %tuple.type.189 = call %F.ref.loc7_48() to %tuple.elem0 // CHECK:STDOUT: %F.ref.loc7_53: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %tuple.elem1.loc7_56.1: ref %tuple.type.189 = tuple_access %v.var, element1 -// CHECK:STDOUT: %F.call.loc7_55: init %tuple.type.189 = call %F.ref.loc7_53() to %tuple.elem1.loc7_56.1 +// CHECK:STDOUT: %tuple.elem1: ref %tuple.type.189 = tuple_access %v.var, element1 +// CHECK:STDOUT: %F.call.loc7_55: init %tuple.type.189 = call %F.ref.loc7_53() to %tuple.elem1 // CHECK:STDOUT: %.loc7_56.1: %tuple.type.99b = tuple_literal (%F.call.loc7_50, %F.call.loc7_55) // CHECK:STDOUT: %.loc7_56.2: init %tuple.type.99b = tuple_init (%F.call.loc7_50, %F.call.loc7_55) to %v.var -// CHECK:STDOUT: %.loc7_3.1: init %tuple.type.99b = converted %.loc7_56.1, %.loc7_56.2 -// CHECK:STDOUT: assign %v.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %tuple.type.99b = converted %.loc7_56.1, %.loc7_56.2 +// CHECK:STDOUT: assign %v.var, %.loc7_3 // CHECK:STDOUT: %.loc7_43.1: type = splice_block %.loc7_43.5 [concrete = constants.%tuple.type.99b] { // CHECK:STDOUT: %int_32.loc7_12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -214,56 +217,23 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.99b = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc7_56.1: %.cce = impl_witness_access constants.%Destroy.impl_witness.c0f, element0 [concrete = constants.%Op.672] -// CHECK:STDOUT: %bound_method.loc7_56.1: = bound_method %tuple.elem1.loc7_56.1, %impl.elem0.loc7_56.1 +// CHECK:STDOUT: %bound_method.loc7_56.1: = bound_method %tuple.elem1, %impl.elem0.loc7_56.1 // CHECK:STDOUT: %specific_fn.loc7_56.1: = specific_function %impl.elem0.loc7_56.1, @Op.3(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc7_56.2: = bound_method %tuple.elem1.loc7_56.1, %specific_fn.loc7_56.1 -// CHECK:STDOUT: %tuple.elem0.loc7_56.2: ref %i32 = tuple_access %tuple.elem1.loc7_56.1, element0 -// CHECK:STDOUT: %.loc7_56.3: %i32 = bind_value %tuple.elem0.loc7_56.2 -// CHECK:STDOUT: %tuple.elem1.loc7_56.2: ref %i32 = tuple_access %tuple.elem1.loc7_56.1, element1 -// CHECK:STDOUT: %.loc7_56.4: %i32 = bind_value %tuple.elem1.loc7_56.2 -// CHECK:STDOUT: %tuple.elem2.loc7_56.1: ref %i32 = tuple_access %tuple.elem1.loc7_56.1, element2 -// CHECK:STDOUT: %.loc7_56.5: %i32 = bind_value %tuple.elem2.loc7_56.1 -// CHECK:STDOUT: %tuple.loc7_56.1: %tuple.type.189 = tuple_value (%.loc7_56.3, %.loc7_56.4, %.loc7_56.5) -// CHECK:STDOUT: %.loc7_56.6: %tuple.type.189 = converted %tuple.elem1.loc7_56.1, %tuple.loc7_56.1 -// CHECK:STDOUT: %no_op.loc7_56.1: init %empty_tuple.type = call %bound_method.loc7_56.2(%.loc7_56.6) +// CHECK:STDOUT: %bound_method.loc7_56.2: = bound_method %tuple.elem1, %specific_fn.loc7_56.1 +// CHECK:STDOUT: %addr.loc7_56.1: %ptr.7ae = addr_of %tuple.elem1 +// CHECK:STDOUT: %no_op.loc7_56.1: init %empty_tuple.type = call %bound_method.loc7_56.2(%addr.loc7_56.1) // CHECK:STDOUT: %impl.elem0.loc7_56.2: %.cce = impl_witness_access constants.%Destroy.impl_witness.c0f, element0 [concrete = constants.%Op.672] -// CHECK:STDOUT: %bound_method.loc7_56.3: = bound_method %tuple.elem0.loc7_56.1, %impl.elem0.loc7_56.2 +// CHECK:STDOUT: %bound_method.loc7_56.3: = bound_method %tuple.elem0, %impl.elem0.loc7_56.2 // CHECK:STDOUT: %specific_fn.loc7_56.2: = specific_function %impl.elem0.loc7_56.2, @Op.3(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc7_56.4: = bound_method %tuple.elem0.loc7_56.1, %specific_fn.loc7_56.2 -// CHECK:STDOUT: %tuple.elem0.loc7_56.3: ref %i32 = tuple_access %tuple.elem0.loc7_56.1, element0 -// CHECK:STDOUT: %.loc7_56.7: %i32 = bind_value %tuple.elem0.loc7_56.3 -// CHECK:STDOUT: %tuple.elem1.loc7_56.3: ref %i32 = tuple_access %tuple.elem0.loc7_56.1, element1 -// CHECK:STDOUT: %.loc7_56.8: %i32 = bind_value %tuple.elem1.loc7_56.3 -// CHECK:STDOUT: %tuple.elem2.loc7_56.2: ref %i32 = tuple_access %tuple.elem0.loc7_56.1, element2 -// CHECK:STDOUT: %.loc7_56.9: %i32 = bind_value %tuple.elem2.loc7_56.2 -// CHECK:STDOUT: %tuple.loc7_56.2: %tuple.type.189 = tuple_value (%.loc7_56.7, %.loc7_56.8, %.loc7_56.9) -// CHECK:STDOUT: %.loc7_56.10: %tuple.type.189 = converted %tuple.elem0.loc7_56.1, %tuple.loc7_56.2 -// CHECK:STDOUT: %no_op.loc7_56.2: init %empty_tuple.type = call %bound_method.loc7_56.4(%.loc7_56.10) +// CHECK:STDOUT: %bound_method.loc7_56.4: = bound_method %tuple.elem0, %specific_fn.loc7_56.2 +// CHECK:STDOUT: %addr.loc7_56.2: %ptr.7ae = addr_of %tuple.elem0 +// CHECK:STDOUT: %no_op.loc7_56.2: init %empty_tuple.type = call %bound_method.loc7_56.4(%addr.loc7_56.2) // CHECK:STDOUT: %impl.elem0.loc7_3: %.41d = impl_witness_access constants.%Destroy.impl_witness.2c6, element0 [concrete = constants.%Op.b09] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0.loc7_3 // CHECK:STDOUT: %specific_fn.loc7_3: = specific_function %impl.elem0.loc7_3, @Op.3(constants.%tuple.type.99b) [concrete = constants.%Op.specific_fn.852] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_fn.loc7_3 -// CHECK:STDOUT: %tuple.elem0.loc7_3.1: ref %tuple.type.189 = tuple_access %v.var, element0 -// CHECK:STDOUT: %tuple.elem0.loc7_3.2: ref %i32 = tuple_access %tuple.elem0.loc7_3.1, element0 -// CHECK:STDOUT: %.loc7_3.2: %i32 = bind_value %tuple.elem0.loc7_3.2 -// CHECK:STDOUT: %tuple.elem1.loc7_3.1: ref %i32 = tuple_access %tuple.elem0.loc7_3.1, element1 -// CHECK:STDOUT: %.loc7_3.3: %i32 = bind_value %tuple.elem1.loc7_3.1 -// CHECK:STDOUT: %tuple.elem2.loc7_3.1: ref %i32 = tuple_access %tuple.elem0.loc7_3.1, element2 -// CHECK:STDOUT: %.loc7_3.4: %i32 = bind_value %tuple.elem2.loc7_3.1 -// CHECK:STDOUT: %tuple.loc7_3.1: %tuple.type.189 = tuple_value (%.loc7_3.2, %.loc7_3.3, %.loc7_3.4) -// CHECK:STDOUT: %.loc7_3.5: %tuple.type.189 = converted %tuple.elem0.loc7_3.1, %tuple.loc7_3.1 -// CHECK:STDOUT: %tuple.elem1.loc7_3.2: ref %tuple.type.189 = tuple_access %v.var, element1 -// CHECK:STDOUT: %tuple.elem0.loc7_3.3: ref %i32 = tuple_access %tuple.elem1.loc7_3.2, element0 -// CHECK:STDOUT: %.loc7_3.6: %i32 = bind_value %tuple.elem0.loc7_3.3 -// CHECK:STDOUT: %tuple.elem1.loc7_3.3: ref %i32 = tuple_access %tuple.elem1.loc7_3.2, element1 -// CHECK:STDOUT: %.loc7_3.7: %i32 = bind_value %tuple.elem1.loc7_3.3 -// CHECK:STDOUT: %tuple.elem2.loc7_3.2: ref %i32 = tuple_access %tuple.elem1.loc7_3.2, element2 -// CHECK:STDOUT: %.loc7_3.8: %i32 = bind_value %tuple.elem2.loc7_3.2 -// CHECK:STDOUT: %tuple.loc7_3.2: %tuple.type.189 = tuple_value (%.loc7_3.6, %.loc7_3.7, %.loc7_3.8) -// CHECK:STDOUT: %.loc7_3.9: %tuple.type.189 = converted %tuple.elem1.loc7_3.2, %tuple.loc7_3.2 -// CHECK:STDOUT: %tuple.loc7_3.3: %tuple.type.99b = tuple_value (%.loc7_3.5, %.loc7_3.9) -// CHECK:STDOUT: %.loc7_3.10: %tuple.type.99b = converted %v.var, %tuple.loc7_3.3 -// CHECK:STDOUT: %no_op.loc7_3: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.10) +// CHECK:STDOUT: %addr.loc7_3: %ptr.8bc = addr_of %v.var +// CHECK:STDOUT: %no_op.loc7_3: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -276,8 +246,8 @@ fn H() { // CHECK:STDOUT: %v.var: ref %tuple.type.516 = var %v.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %tuple.elem1.loc13_50.1: ref %tuple.type.189 = tuple_access %v.var, element1 -// CHECK:STDOUT: %F.call: init %tuple.type.189 = call %F.ref() to %tuple.elem1.loc13_50.1 +// CHECK:STDOUT: %tuple.elem1: ref %tuple.type.189 = tuple_access %v.var, element1 +// CHECK:STDOUT: %F.call: init %tuple.type.189 = call %F.ref() to %tuple.elem1 // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc13_50.1: %tuple.type.667 = tuple_literal (%int_1, %F.call, %int_2) // CHECK:STDOUT: %impl.elem0.loc13_50.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] @@ -286,19 +256,19 @@ fn H() { // CHECK:STDOUT: %bound_method.loc13_50.2: = bound_method %int_1, %specific_fn.loc13_50.1 [concrete = constants.%bound_method.9a1] // CHECK:STDOUT: %int.convert_checked.loc13_50.1: init %i32 = call %bound_method.loc13_50.2(%int_1) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc13_50.2: init %i32 = converted %int_1, %int.convert_checked.loc13_50.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %tuple.elem0.loc13_50.1: ref %i32 = tuple_access %v.var, element0 -// CHECK:STDOUT: %.loc13_50.3: init %i32 = initialize_from %.loc13_50.2 to %tuple.elem0.loc13_50.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %v.var, element0 +// CHECK:STDOUT: %.loc13_50.3: init %i32 = initialize_from %.loc13_50.2 to %tuple.elem0 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %impl.elem0.loc13_50.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc13_50.3: = bound_method %int_2, %impl.elem0.loc13_50.2 [concrete = constants.%Convert.bound.ef9] // CHECK:STDOUT: %specific_fn.loc13_50.2: = specific_function %impl.elem0.loc13_50.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_50.4: = bound_method %int_2, %specific_fn.loc13_50.2 [concrete = constants.%bound_method.b92] // CHECK:STDOUT: %int.convert_checked.loc13_50.2: init %i32 = call %bound_method.loc13_50.4(%int_2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_50.4: init %i32 = converted %int_2, %int.convert_checked.loc13_50.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %tuple.elem2.loc13_50.1: ref %i32 = tuple_access %v.var, element2 -// CHECK:STDOUT: %.loc13_50.5: init %i32 = initialize_from %.loc13_50.4 to %tuple.elem2.loc13_50.1 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %tuple.elem2: ref %i32 = tuple_access %v.var, element2 +// CHECK:STDOUT: %.loc13_50.5: init %i32 = initialize_from %.loc13_50.4 to %tuple.elem2 [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc13_50.6: init %tuple.type.516 = tuple_init (%.loc13_50.3, %F.call, %.loc13_50.5) to %v.var -// CHECK:STDOUT: %.loc13_3.1: init %tuple.type.516 = converted %.loc13_50.1, %.loc13_50.6 -// CHECK:STDOUT: assign %v.var, %.loc13_3.1 +// CHECK:STDOUT: %.loc13_3: init %tuple.type.516 = converted %.loc13_50.1, %.loc13_50.6 +// CHECK:STDOUT: assign %v.var, %.loc13_3 // CHECK:STDOUT: %.loc13_36.1: type = splice_block %.loc13_36.4 [concrete = constants.%tuple.type.516] { // CHECK:STDOUT: %int_32.loc13_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -317,38 +287,17 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.516 = bind_name v, %v.var // CHECK:STDOUT: %impl.elem0.loc13_50.3: %.cce = impl_witness_access constants.%Destroy.impl_witness.c0f, element0 [concrete = constants.%Op.672] -// CHECK:STDOUT: %bound_method.loc13_50.5: = bound_method %tuple.elem1.loc13_50.1, %impl.elem0.loc13_50.3 +// CHECK:STDOUT: %bound_method.loc13_50.5: = bound_method %tuple.elem1, %impl.elem0.loc13_50.3 // CHECK:STDOUT: %specific_fn.loc13_50.3: = specific_function %impl.elem0.loc13_50.3, @Op.3(constants.%tuple.type.189) [concrete = constants.%Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc13_50.6: = bound_method %tuple.elem1.loc13_50.1, %specific_fn.loc13_50.3 -// CHECK:STDOUT: %tuple.elem0.loc13_50.2: ref %i32 = tuple_access %tuple.elem1.loc13_50.1, element0 -// CHECK:STDOUT: %.loc13_50.7: %i32 = bind_value %tuple.elem0.loc13_50.2 -// CHECK:STDOUT: %tuple.elem1.loc13_50.2: ref %i32 = tuple_access %tuple.elem1.loc13_50.1, element1 -// CHECK:STDOUT: %.loc13_50.8: %i32 = bind_value %tuple.elem1.loc13_50.2 -// CHECK:STDOUT: %tuple.elem2.loc13_50.2: ref %i32 = tuple_access %tuple.elem1.loc13_50.1, element2 -// CHECK:STDOUT: %.loc13_50.9: %i32 = bind_value %tuple.elem2.loc13_50.2 -// CHECK:STDOUT: %tuple.loc13_50: %tuple.type.189 = tuple_value (%.loc13_50.7, %.loc13_50.8, %.loc13_50.9) -// CHECK:STDOUT: %.loc13_50.10: %tuple.type.189 = converted %tuple.elem1.loc13_50.1, %tuple.loc13_50 -// CHECK:STDOUT: %no_op.loc13_50: init %empty_tuple.type = call %bound_method.loc13_50.6(%.loc13_50.10) +// CHECK:STDOUT: %bound_method.loc13_50.6: = bound_method %tuple.elem1, %specific_fn.loc13_50.3 +// CHECK:STDOUT: %addr.loc13_50: %ptr.7ae = addr_of %tuple.elem1 +// CHECK:STDOUT: %no_op.loc13_50: init %empty_tuple.type = call %bound_method.loc13_50.6(%addr.loc13_50) // CHECK:STDOUT: %impl.elem0.loc13_3: %.1fa = impl_witness_access constants.%Destroy.impl_witness.78c, element0 [concrete = constants.%Op.dfb] // CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %v.var, %impl.elem0.loc13_3 // CHECK:STDOUT: %specific_fn.loc13_3: = specific_function %impl.elem0.loc13_3, @Op.3(constants.%tuple.type.516) [concrete = constants.%Op.specific_fn.922] // CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %v.var, %specific_fn.loc13_3 -// CHECK:STDOUT: %tuple.elem0.loc13_3.1: ref %i32 = tuple_access %v.var, element0 -// CHECK:STDOUT: %.loc13_3.2: %i32 = bind_value %tuple.elem0.loc13_3.1 -// CHECK:STDOUT: %tuple.elem1.loc13_3.1: ref %tuple.type.189 = tuple_access %v.var, element1 -// CHECK:STDOUT: %tuple.elem0.loc13_3.2: ref %i32 = tuple_access %tuple.elem1.loc13_3.1, element0 -// CHECK:STDOUT: %.loc13_3.3: %i32 = bind_value %tuple.elem0.loc13_3.2 -// CHECK:STDOUT: %tuple.elem1.loc13_3.2: ref %i32 = tuple_access %tuple.elem1.loc13_3.1, element1 -// CHECK:STDOUT: %.loc13_3.4: %i32 = bind_value %tuple.elem1.loc13_3.2 -// CHECK:STDOUT: %tuple.elem2.loc13_3.1: ref %i32 = tuple_access %tuple.elem1.loc13_3.1, element2 -// CHECK:STDOUT: %.loc13_3.5: %i32 = bind_value %tuple.elem2.loc13_3.1 -// CHECK:STDOUT: %tuple.loc13_3.1: %tuple.type.189 = tuple_value (%.loc13_3.3, %.loc13_3.4, %.loc13_3.5) -// CHECK:STDOUT: %.loc13_3.6: %tuple.type.189 = converted %tuple.elem1.loc13_3.1, %tuple.loc13_3.1 -// CHECK:STDOUT: %tuple.elem2.loc13_3.2: ref %i32 = tuple_access %v.var, element2 -// CHECK:STDOUT: %.loc13_3.7: %i32 = bind_value %tuple.elem2.loc13_3.2 -// CHECK:STDOUT: %tuple.loc13_3.2: %tuple.type.516 = tuple_value (%.loc13_3.2, %.loc13_3.6, %.loc13_3.7) -// CHECK:STDOUT: %.loc13_3.8: %tuple.type.516 = converted %v.var, %tuple.loc13_3.2 -// CHECK:STDOUT: %no_op.loc13_3: init %empty_tuple.type = call %bound_method.loc13_3.2(%.loc13_3.8) +// CHECK:STDOUT: %addr.loc13_3: %ptr.12e = addr_of %v.var +// CHECK:STDOUT: %no_op.loc13_3: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr.loc13_3) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/tuple_pattern.carbon b/toolchain/check/testdata/tuple/tuple_pattern.carbon index d93063686470..c8a1a1837c02 100644 --- a/toolchain/check/testdata/tuple/tuple_pattern.carbon +++ b/toolchain/check/testdata/tuple/tuple_pattern.carbon @@ -137,13 +137,14 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %Destroy.impl_witness.9c2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%tuple.type.b6b) [concrete] // CHECK:STDOUT: %Op.type.72a: type = fn_type @Op.2, @impl(%tuple.type.b6b) [concrete] // CHECK:STDOUT: %Op.973: %Op.type.72a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8fc: type = ptr_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.b6b, (%Destroy.impl_witness.9c2) [concrete] // CHECK:STDOUT: %.8ce: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.973, @Op.2(%tuple.type.b6b) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -178,18 +179,18 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.var_patt.loc7: %pattern_type.de4 = var_pattern %.loc7_20 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.var.loc7: ref %tuple.type.b6b = var %.var_patt.loc7 -// CHECK:STDOUT: %tuple.elem0.loc7_3.1: ref %empty_struct_type = tuple_access %.var.loc7, element0 -// CHECK:STDOUT: %tuple.elem1.loc7_3.1: ref %empty_struct_type = tuple_access %.var.loc7, element1 +// CHECK:STDOUT: %tuple.elem0.loc7: ref %empty_struct_type = tuple_access %.var.loc7, element0 +// CHECK:STDOUT: %tuple.elem1.loc7: ref %empty_struct_type = tuple_access %.var.loc7, element1 // CHECK:STDOUT: %.loc7_12.1: type = splice_block %.loc7_12.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc7_12.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_12.3: type = converted %.loc7_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_struct_type = bind_name a, %tuple.elem0.loc7_3.1 +// CHECK:STDOUT: %a: ref %empty_struct_type = bind_name a, %tuple.elem0.loc7 // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc7_19.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %empty_struct_type = bind_name b, %tuple.elem1.loc7_3.1 +// CHECK:STDOUT: %b: ref %empty_struct_type = bind_name b, %tuple.elem1.loc7 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.a96 = binding_pattern c [concrete] // CHECK:STDOUT: %d.patt: %pattern_type.a96 = binding_pattern d [concrete] @@ -207,46 +208,32 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc8_30.2: init %empty_struct_type = struct_init () to %tuple.elem1.loc8_31 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_31.3: init %empty_struct_type = converted %.loc8_30.1, %.loc8_30.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_31.4: init %tuple.type.b6b = tuple_init (%.loc8_31.2, %.loc8_31.3) to %.var.loc8 [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc8_3.1: init %tuple.type.b6b = converted %.loc8_31.1, %.loc8_31.4 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %.var.loc8, %.loc8_3.1 -// CHECK:STDOUT: %tuple.elem0.loc8_3.1: ref %empty_struct_type = tuple_access %.var.loc8, element0 -// CHECK:STDOUT: %tuple.elem1.loc8_3.1: ref %empty_struct_type = tuple_access %.var.loc8, element1 +// CHECK:STDOUT: %.loc8_3: init %tuple.type.b6b = converted %.loc8_31.1, %.loc8_31.4 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %.var.loc8, %.loc8_3 +// CHECK:STDOUT: %tuple.elem0.loc8_3: ref %empty_struct_type = tuple_access %.var.loc8, element0 +// CHECK:STDOUT: %tuple.elem1.loc8_3: ref %empty_struct_type = tuple_access %.var.loc8, element1 // CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc8_12.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_12.3: type = converted %.loc8_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %empty_struct_type = bind_name c, %tuple.elem0.loc8_3.1 +// CHECK:STDOUT: %c: ref %empty_struct_type = bind_name c, %tuple.elem0.loc8_3 // CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc8_19.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_19.3: type = converted %.loc8_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_struct_type = bind_name d, %tuple.elem1.loc8_3.1 +// CHECK:STDOUT: %d: ref %empty_struct_type = bind_name d, %tuple.elem1.loc8_3 // CHECK:STDOUT: %impl.elem0.loc8: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %.var.loc8, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %.var.loc8, %specific_fn.loc8 -// CHECK:STDOUT: %tuple.elem0.loc8_3.2: ref %empty_struct_type = tuple_access %.var.loc8, element0 -// CHECK:STDOUT: %empty_struct.loc8_3.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_3.2: %empty_struct_type = converted %tuple.elem0.loc8_3.2, %empty_struct.loc8_3.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc8_3.2: ref %empty_struct_type = tuple_access %.var.loc8, element1 -// CHECK:STDOUT: %empty_struct.loc8_3.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_3.3: %empty_struct_type = converted %tuple.elem1.loc8_3.2, %empty_struct.loc8_3.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc8: %tuple.type.b6b = tuple_value (%.loc8_3.2, %.loc8_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc8_3.4: %tuple.type.b6b = converted %.var.loc8, %tuple.loc8 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.4) +// CHECK:STDOUT: %addr.loc8: %ptr.8fc = addr_of %.var.loc8 +// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) // CHECK:STDOUT: %impl.elem0.loc7: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %.var.loc7, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %.var.loc7, %specific_fn.loc7 -// CHECK:STDOUT: %tuple.elem0.loc7_3.2: ref %empty_struct_type = tuple_access %.var.loc7, element0 -// CHECK:STDOUT: %empty_struct.loc7_3.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc7_3.1: %empty_struct_type = converted %tuple.elem0.loc7_3.2, %empty_struct.loc7_3.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc7_3.2: ref %empty_struct_type = tuple_access %.var.loc7, element1 -// CHECK:STDOUT: %empty_struct.loc7_3.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc7_3.2: %empty_struct_type = converted %tuple.elem1.loc7_3.2, %empty_struct.loc7_3.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc7: %tuple.type.b6b = tuple_value (%.loc7_3.1, %.loc7_3.2) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc7_3.3: %tuple.type.b6b = converted %.var.loc7, %tuple.loc7 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.3) +// CHECK:STDOUT: %addr.loc7: %ptr.8fc = addr_of %.var.loc7 +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -268,6 +255,7 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %Destroy.impl_witness.9c2: = impl_witness imports.%Destroy.impl_witness_table, @impl(%tuple.type.b6b) [concrete] // CHECK:STDOUT: %Op.type.72a: type = fn_type @Op.2, @impl(%tuple.type.b6b) [concrete] // CHECK:STDOUT: %Op.973: %Op.type.72a = struct_value () [concrete] +// CHECK:STDOUT: %ptr.8fc: type = ptr_type %tuple.type.b6b [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.b6b, (%Destroy.impl_witness.9c2) [concrete] // CHECK:STDOUT: %.8ce: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.973, @Op.2(%tuple.type.b6b) [concrete] @@ -276,7 +264,7 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -290,15 +278,15 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc6_27.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc6_31.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc6_32.1: %tuple.type.b6b = tuple_literal (%.loc6_27.1, %.loc6_31.1) -// CHECK:STDOUT: %tuple.elem0.loc6_32: ref %empty_struct_type = tuple_access %tuple.var, element0 -// CHECK:STDOUT: %.loc6_27.2: init %empty_struct_type = struct_init () to %tuple.elem0.loc6_32 [concrete = constants.%empty_struct] +// CHECK:STDOUT: %tuple.elem0.loc6: ref %empty_struct_type = tuple_access %tuple.var, element0 +// CHECK:STDOUT: %.loc6_27.2: init %empty_struct_type = struct_init () to %tuple.elem0.loc6 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_32.2: init %empty_struct_type = converted %.loc6_27.1, %.loc6_27.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc6_32: ref %empty_struct_type = tuple_access %tuple.var, element1 -// CHECK:STDOUT: %.loc6_31.2: init %empty_struct_type = struct_init () to %tuple.elem1.loc6_32 [concrete = constants.%empty_struct] +// CHECK:STDOUT: %tuple.elem1.loc6: ref %empty_struct_type = tuple_access %tuple.var, element1 +// CHECK:STDOUT: %.loc6_31.2: init %empty_struct_type = struct_init () to %tuple.elem1.loc6 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_32.3: init %empty_struct_type = converted %.loc6_31.1, %.loc6_31.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_32.4: init %tuple.type.b6b = tuple_init (%.loc6_32.2, %.loc6_32.3) to %tuple.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc6_3.1: init %tuple.type.b6b = converted %.loc6_32.1, %.loc6_32.4 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %tuple.var, %.loc6_3.1 +// CHECK:STDOUT: %.loc6_3: init %tuple.type.b6b = converted %.loc6_32.1, %.loc6_32.4 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %tuple.var, %.loc6_3 // CHECK:STDOUT: %.loc6_21.1: type = splice_block %.loc6_21.5 [concrete = constants.%tuple.type.b6b] { // CHECK:STDOUT: %.loc6_16: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc6_20: %empty_struct_type = struct_literal () @@ -307,7 +295,7 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc6_21.4: type = converted %.loc6_20, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc6_21.5: type = converted %.loc6_21.2, constants.%tuple.type.b6b [concrete = constants.%tuple.type.b6b] // CHECK:STDOUT: } -// CHECK:STDOUT: %tuple.loc6_7: ref %tuple.type.b6b = bind_name tuple, %tuple.var +// CHECK:STDOUT: %tuple: ref %tuple.type.b6b = bind_name tuple, %tuple.var // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %pattern_type.a96 = binding_pattern x [concrete] // CHECK:STDOUT: %y.patt: %pattern_type.a96 = binding_pattern y [concrete] @@ -315,7 +303,7 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.var_patt: %pattern_type.de4 = var_pattern %.loc7_20 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.var: ref %tuple.type.b6b = var %.var_patt -// CHECK:STDOUT: %tuple.ref: ref %tuple.type.b6b = name_ref tuple, %tuple.loc6_7 +// CHECK:STDOUT: %tuple.ref: ref %tuple.type.b6b = name_ref tuple, %tuple // CHECK:STDOUT: %tuple.elem0.loc7_24.1: ref %empty_struct_type = tuple_access %tuple.ref, element0 // CHECK:STDOUT: %tuple.elem0.loc7_24.2: ref %empty_struct_type = tuple_access %.var, element0 // CHECK:STDOUT: %.loc7_24.1: init %empty_struct_type = struct_init () to %tuple.elem0.loc7_24.2 [concrete = constants.%empty_struct] @@ -325,46 +313,32 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc7_24.3: init %empty_struct_type = struct_init () to %tuple.elem1.loc7_24.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_24.4: init %empty_struct_type = converted %tuple.elem1.loc7_24.1, %.loc7_24.3 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc7_24.5: init %tuple.type.b6b = tuple_init (%.loc7_24.2, %.loc7_24.4) to %.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc7_3.1: init %tuple.type.b6b = converted %tuple.ref, %.loc7_24.5 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %.var, %.loc7_3.1 -// CHECK:STDOUT: %tuple.elem0.loc7_3.1: ref %empty_struct_type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.elem1.loc7_3.1: ref %empty_struct_type = tuple_access %.var, element1 +// CHECK:STDOUT: %.loc7_3: init %tuple.type.b6b = converted %tuple.ref, %.loc7_24.5 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %.var, %.loc7_3 +// CHECK:STDOUT: %tuple.elem0.loc7_3: ref %empty_struct_type = tuple_access %.var, element0 +// CHECK:STDOUT: %tuple.elem1.loc7_3: ref %empty_struct_type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc7_12.1: type = splice_block %.loc7_12.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc7_12.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_12.3: type = converted %.loc7_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %tuple.elem0.loc7_3.1 +// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %tuple.elem0.loc7_3 // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc7_19.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc7_3.1 +// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc7_3 // CHECK:STDOUT: %impl.elem0.loc7: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %.var, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %.var, %specific_fn.loc7 -// CHECK:STDOUT: %tuple.elem0.loc7_3.2: ref %empty_struct_type = tuple_access %.var, element0 -// CHECK:STDOUT: %empty_struct.loc7_3.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc7_3.2: %empty_struct_type = converted %tuple.elem0.loc7_3.2, %empty_struct.loc7_3.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc7_3.2: ref %empty_struct_type = tuple_access %.var, element1 -// CHECK:STDOUT: %empty_struct.loc7_3.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc7_3.3: %empty_struct_type = converted %tuple.elem1.loc7_3.2, %empty_struct.loc7_3.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc7: %tuple.type.b6b = tuple_value (%.loc7_3.2, %.loc7_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc7_3.4: %tuple.type.b6b = converted %.var, %tuple.loc7 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.4) +// CHECK:STDOUT: %addr.loc7: %ptr.8fc = addr_of %.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: %impl.elem0.loc6: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] // CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %tuple.var, %impl.elem0.loc6 // CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %tuple.var, %specific_fn.loc6 -// CHECK:STDOUT: %tuple.elem0.loc6_3: ref %empty_struct_type = tuple_access %tuple.var, element0 -// CHECK:STDOUT: %empty_struct.loc6_3.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc6_3.2: %empty_struct_type = converted %tuple.elem0.loc6_3, %empty_struct.loc6_3.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc6_3: ref %empty_struct_type = tuple_access %tuple.var, element1 -// CHECK:STDOUT: %empty_struct.loc6_3.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc6_3.3: %empty_struct_type = converted %tuple.elem1.loc6_3, %empty_struct.loc6_3.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc6_3: %tuple.type.b6b = tuple_value (%.loc6_3.2, %.loc6_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc6_3.4: %tuple.type.b6b = converted %tuple.var, %tuple.loc6_3 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6_3.2(%.loc6_3.4) +// CHECK:STDOUT: %addr.loc6: %ptr.8fc = addr_of %tuple.var +// CHECK:STDOUT: %no_op.loc6: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -408,33 +382,26 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %.loc14_24.3: init %empty_struct_type = struct_init () to %tuple.elem1.loc14_24.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_24.4: init %empty_struct_type = converted %tuple.elem1.loc14_24.1, %.loc14_24.3 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_24.5: init %tuple.type.b6b = tuple_init (%.loc14_24.2, %.loc14_24.4) to %.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc14_3.1: init %tuple.type.b6b = converted %tuple.ref, %.loc14_24.5 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %.var, %.loc14_3.1 -// CHECK:STDOUT: %tuple.elem0.loc14_3.1: ref %empty_struct_type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.elem1.loc14_3.1: ref %empty_struct_type = tuple_access %.var, element1 +// CHECK:STDOUT: %.loc14_3: init %tuple.type.b6b = converted %tuple.ref, %.loc14_24.5 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %.var, %.loc14_3 +// CHECK:STDOUT: %tuple.elem0.loc14_3: ref %empty_struct_type = tuple_access %.var, element0 +// CHECK:STDOUT: %tuple.elem1.loc14_3: ref %empty_struct_type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc14_12.1: type = splice_block %.loc14_12.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc14_12.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc14_12.3: type = converted %.loc14_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %tuple.elem0.loc14_3.1 +// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %tuple.elem0.loc14_3 // CHECK:STDOUT: %.loc14_19.1: type = splice_block %.loc14_19.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc14_19.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc14_19.3: type = converted %.loc14_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc14_3.1 +// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc14_3 // CHECK:STDOUT: %impl.elem0: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] // CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %.var, %specific_fn -// CHECK:STDOUT: %tuple.elem0.loc14_3.2: ref %empty_struct_type = tuple_access %.var, element0 -// CHECK:STDOUT: %empty_struct.loc14_3.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc14_3.2: %empty_struct_type = converted %tuple.elem0.loc14_3.2, %empty_struct.loc14_3.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc14_3.2: ref %empty_struct_type = tuple_access %.var, element1 -// CHECK:STDOUT: %empty_struct.loc14_3.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc14_3.3: %empty_struct_type = converted %tuple.elem1.loc14_3.2, %empty_struct.loc14_3.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc14: %tuple.type.b6b = tuple_value (%.loc14_3.2, %.loc14_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc14_3.4: %tuple.type.b6b = converted %.var, %tuple.loc14 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc14_3.2(%.loc14_3.4) +// CHECK:STDOUT: %addr: %ptr.8fc = addr_of %.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -448,47 +415,33 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: } // CHECK:STDOUT: %.var: ref %tuple.type.b6b = var %.var_patt // CHECK:STDOUT: %MakeTuple.ref: %MakeTuple.type = name_ref MakeTuple, file.%MakeTuple.decl [concrete = constants.%MakeTuple] -// CHECK:STDOUT: %.loc22_3.1: ref %tuple.type.b6b = splice_block %.var {} -// CHECK:STDOUT: %MakeTuple.call: init %tuple.type.b6b = call %MakeTuple.ref() to %.loc22_3.1 +// CHECK:STDOUT: %.loc22_3: ref %tuple.type.b6b = splice_block %.var {} +// CHECK:STDOUT: %MakeTuple.call: init %tuple.type.b6b = call %MakeTuple.ref() to %.loc22_3 // CHECK:STDOUT: assign %.var, %MakeTuple.call -// CHECK:STDOUT: %tuple.elem0.loc22_3.1: ref %empty_struct_type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.elem1.loc22_3.1: ref %empty_struct_type = tuple_access %.var, element1 +// CHECK:STDOUT: %tuple.elem0: ref %empty_struct_type = tuple_access %.var, element0 +// CHECK:STDOUT: %tuple.elem1: ref %empty_struct_type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc22_12.1: type = splice_block %.loc22_12.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc22_12.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc22_12.3: type = converted %.loc22_12.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %tuple.elem0.loc22_3.1 +// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %tuple.elem0 // CHECK:STDOUT: %.loc22_19.1: type = splice_block %.loc22_19.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc22_19.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc22_19.3: type = converted %.loc22_19.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1.loc22_3.1 +// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %tuple.elem1 // CHECK:STDOUT: %impl.elem0.loc22_3.1: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] -// CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %.loc22_3.1, %impl.elem0.loc22_3.1 +// CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %.loc22_3, %impl.elem0.loc22_3.1 // CHECK:STDOUT: %specific_fn.loc22_3.1: = specific_function %impl.elem0.loc22_3.1, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %.loc22_3.1, %specific_fn.loc22_3.1 -// CHECK:STDOUT: %tuple.elem0.loc22_3.2: ref %empty_struct_type = tuple_access %.loc22_3.1, element0 -// CHECK:STDOUT: %empty_struct.loc22_3.1: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc22_3.2: %empty_struct_type = converted %tuple.elem0.loc22_3.2, %empty_struct.loc22_3.1 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc22_3.2: ref %empty_struct_type = tuple_access %.loc22_3.1, element1 -// CHECK:STDOUT: %empty_struct.loc22_3.2: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc22_3.3: %empty_struct_type = converted %tuple.elem1.loc22_3.2, %empty_struct.loc22_3.2 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc22_3.1: %tuple.type.b6b = tuple_value (%.loc22_3.2, %.loc22_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc22_3.4: %tuple.type.b6b = converted %.loc22_3.1, %tuple.loc22_3.1 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc22_3.1: init %empty_tuple.type = call %bound_method.loc22_3.2(%.loc22_3.4) +// CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %.loc22_3, %specific_fn.loc22_3.1 +// CHECK:STDOUT: %addr.loc22_3.1: %ptr.8fc = addr_of %.loc22_3 +// CHECK:STDOUT: %no_op.loc22_3.1: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22_3.1) // CHECK:STDOUT: %impl.elem0.loc22_3.2: %.8ce = impl_witness_access constants.%Destroy.impl_witness.9c2, element0 [concrete = constants.%Op.973] // CHECK:STDOUT: %bound_method.loc22_3.3: = bound_method %.var, %impl.elem0.loc22_3.2 // CHECK:STDOUT: %specific_fn.loc22_3.2: = specific_function %impl.elem0.loc22_3.2, @Op.2(constants.%tuple.type.b6b) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc22_3.4: = bound_method %.var, %specific_fn.loc22_3.2 -// CHECK:STDOUT: %tuple.elem0.loc22_3.3: ref %empty_struct_type = tuple_access %.var, element0 -// CHECK:STDOUT: %empty_struct.loc22_3.3: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc22_3.5: %empty_struct_type = converted %tuple.elem0.loc22_3.3, %empty_struct.loc22_3.3 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.elem1.loc22_3.3: ref %empty_struct_type = tuple_access %.var, element1 -// CHECK:STDOUT: %empty_struct.loc22_3.4: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc22_3.6: %empty_struct_type = converted %tuple.elem1.loc22_3.3, %empty_struct.loc22_3.4 [concrete = constants.%empty_struct] -// CHECK:STDOUT: %tuple.loc22_3.2: %tuple.type.b6b = tuple_value (%.loc22_3.5, %.loc22_3.6) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc22_3.7: %tuple.type.b6b = converted %.var, %tuple.loc22_3.2 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc22_3.2: init %empty_tuple.type = call %bound_method.loc22_3.4(%.loc22_3.7) +// CHECK:STDOUT: %addr.loc22_3.2: %ptr.8fc = addr_of %.var +// CHECK:STDOUT: %no_op.loc22_3.2: init %empty_tuple.type = call %bound_method.loc22_3.4(%addr.loc22_3.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/decl.carbon b/toolchain/check/testdata/var/decl.carbon index 432121144cc2..97663ff77035 100644 --- a/toolchain/check/testdata/var/decl.carbon +++ b/toolchain/check/testdata/var/decl.carbon @@ -33,10 +33,10 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -46,7 +46,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -75,9 +75,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc3_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc3_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc3_3: %empty_tuple.type = converted %x.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc3_3.2(%.loc3_3) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc3_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/decl_with_init.carbon b/toolchain/check/testdata/var/decl_with_init.carbon index 7e73d8bf6318..51c8ba7989d0 100644 --- a/toolchain/check/testdata/var/decl_with_init.carbon +++ b/toolchain/check/testdata/var/decl_with_init.carbon @@ -34,6 +34,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -46,7 +47,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -68,8 +69,8 @@ fn Main() { // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt // CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc3_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc3_3.1: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var, %.loc3_3.1 +// CHECK:STDOUT: %.loc3_3: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var, %.loc3_3 // CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -79,9 +80,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc3_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc3_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc3_3.2: %empty_tuple.type = converted %x.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc3_3.2(%.loc3_3.2) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc3_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_duplicate_decl.carbon b/toolchain/check/testdata/var/fail_duplicate_decl.carbon index 354605b426de..cd24ec28c478 100644 --- a/toolchain/check/testdata/var/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/var/fail_duplicate_decl.carbon @@ -42,6 +42,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -54,7 +55,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -76,8 +77,8 @@ fn Main() { // CHECK:STDOUT: %x.var.loc3: ref %empty_tuple.type = var %x.var_patt.loc3 // CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc3_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc3_3.1: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc3, %.loc3_3.1 +// CHECK:STDOUT: %.loc3_3: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc3, %.loc3_3 // CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -90,8 +91,8 @@ fn Main() { // CHECK:STDOUT: %x.var.loc11: ref %empty_tuple.type = var %x.var_patt.loc11 // CHECK:STDOUT: %.loc11_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc11 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_3.1: init %empty_tuple.type = converted %.loc11_16.1, %.loc11_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc11, %.loc11_3.1 +// CHECK:STDOUT: %.loc11_3: init %empty_tuple.type = converted %.loc11_16.1, %.loc11_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc11, %.loc11_3 // CHECK:STDOUT: %.loc11_11.1: type = splice_block %.loc11_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc11_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_11.3: type = converted %.loc11_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -101,16 +102,14 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc11_3.1: = bound_method %x.var.loc11, %impl.elem0.loc11 // CHECK:STDOUT: %specific_fn.loc11: = specific_function %impl.elem0.loc11, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc11_3.2: = bound_method %x.var.loc11, %specific_fn.loc11 -// CHECK:STDOUT: %tuple.loc11: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_3.2: %empty_tuple.type = converted %x.var.loc11, %tuple.loc11 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc11: init %empty_tuple.type = call %bound_method.loc11_3.2(%.loc11_3.2) +// CHECK:STDOUT: %addr.loc11: %ptr.843 = addr_of %x.var.loc11 +// CHECK:STDOUT: %no_op.loc11: init %empty_tuple.type = call %bound_method.loc11_3.2(%addr.loc11) // CHECK:STDOUT: %impl.elem0.loc3: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc3_3.1: = bound_method %x.var.loc3, %impl.elem0.loc3 // CHECK:STDOUT: %specific_fn.loc3: = specific_function %impl.elem0.loc3, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc3_3.2: = bound_method %x.var.loc3, %specific_fn.loc3 -// CHECK:STDOUT: %tuple.loc3: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc3_3.2: %empty_tuple.type = converted %x.var.loc3, %tuple.loc3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc3: init %empty_tuple.type = call %bound_method.loc3_3.2(%.loc3_3.2) +// CHECK:STDOUT: %addr.loc3: %ptr.843 = addr_of %x.var.loc3 +// CHECK:STDOUT: %no_op.loc3: init %empty_tuple.type = call %bound_method.loc3_3.2(%addr.loc3) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_init_with_self.carbon b/toolchain/check/testdata/var/fail_init_with_self.carbon index 1d50b2fe616e..dcd608907869 100644 --- a/toolchain/check/testdata/var/fail_init_with_self.carbon +++ b/toolchain/check/testdata/var/fail_init_with_self.carbon @@ -37,10 +37,10 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -50,7 +50,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -81,9 +81,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc7_3: %empty_tuple.type = converted %x.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon index 768a49167a79..25d044bb9c37 100644 --- a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon +++ b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon @@ -39,10 +39,10 @@ var y: () = x; // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -52,7 +52,7 @@ var y: () = x; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -93,9 +93,8 @@ var y: () = x; // CHECK:STDOUT: %bound_method.loc3_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc3_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc3_3: %empty_tuple.type = converted %x.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc3_3.2(%.loc3_3) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc3_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_not_copyable.carbon b/toolchain/check/testdata/var/fail_not_copyable.carbon index 6cfec0cb5671..c5934045be4c 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -41,6 +41,7 @@ fn F(x: X) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] +// CHECK:STDOUT: %ptr.a45: type = ptr_type String [concrete] // CHECK:STDOUT: %pattern_type.b05: type = pattern_type String [concrete] // CHECK:STDOUT: %str: String = string_literal "hello" [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -51,6 +52,7 @@ fn F(x: X) { // CHECK:STDOUT: %Destroy.impl_witness.599: = impl_witness imports.%Destroy.impl_witness_table, @impl(%X) [concrete] // CHECK:STDOUT: %Op.type.9e1: type = fn_type @Op.2, @impl(%X) [concrete] // CHECK:STDOUT: %Op.33a: %Op.type.9e1 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] // CHECK:STDOUT: %Destroy.facet.177: %Destroy.type = facet_value %X, (%Destroy.impl_witness.599) [concrete] // CHECK:STDOUT: %.bfc: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.177 [concrete] // CHECK:STDOUT: %Op.specific_fn.d1f: = specific_function %Op.33a, @Op.2(%X) [concrete] @@ -69,7 +71,7 @@ fn F(x: X) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/destroy, loc15_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -123,14 +125,14 @@ fn F(x: X) { // CHECK:STDOUT: %bound_method.loc31_3.1: = bound_method %y.var, %impl.elem0.loc31 // CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn.d1f] // CHECK:STDOUT: %bound_method.loc31_3.2: = bound_method %y.var, %specific_fn.loc31 -// CHECK:STDOUT: %.loc31: %X = bind_value %y.var -// CHECK:STDOUT: %no_op.loc31: init %empty_tuple.type = call %bound_method.loc31_3.2(%.loc31) +// CHECK:STDOUT: %addr.loc31: %ptr.d17 = addr_of %y.var +// CHECK:STDOUT: %no_op.loc31: init %empty_tuple.type = call %bound_method.loc31_3.2(%addr.loc31) // CHECK:STDOUT: %impl.elem0.loc24: %.c94 = impl_witness_access constants.%Destroy.impl_witness.35b, element0 [concrete = constants.%Op.5ef] // CHECK:STDOUT: %bound_method.loc24_3.1: = bound_method %s.var, %impl.elem0.loc24 // CHECK:STDOUT: %specific_fn.loc24: = specific_function %impl.elem0.loc24, @Op.2(String) [concrete = constants.%Op.specific_fn.93f] // CHECK:STDOUT: %bound_method.loc24_3.2: = bound_method %s.var, %specific_fn.loc24 -// CHECK:STDOUT: %.loc24: String = bind_value %s.var -// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%.loc24) +// CHECK:STDOUT: %addr.loc24: %ptr.a45 = addr_of %s.var +// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24_3.2(%addr.loc24) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/global_lookup_in_scope.carbon index 09ab667dea6a..3be310b9ae4c 100644 --- a/toolchain/check/testdata/var/global_lookup_in_scope.carbon +++ b/toolchain/check/testdata/var/global_lookup_in_scope.carbon @@ -39,6 +39,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.148: = impl_witness imports.%Destroy.impl_witness_table, @impl(%struct_type.v) [concrete] // CHECK:STDOUT: %Op.type.7e5: type = fn_type @Op.2, @impl(%struct_type.v) [concrete] // CHECK:STDOUT: %Op.477: %Op.type.7e5 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.ef9: type = ptr_type %struct_type.v [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %struct_type.v, (%Destroy.impl_witness.148) [concrete] // CHECK:STDOUT: %.d6c: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.477, @Op.2(%struct_type.v) [concrete] @@ -51,7 +52,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -89,8 +90,8 @@ fn Main() { // CHECK:STDOUT: %.loc5_21.3: init %empty_tuple.type = tuple_init () to %.loc5_21.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_21.4: init %empty_tuple.type = converted %.loc5_21.1, %.loc5_21.3 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_21.5: init %struct_type.v = struct_init (%.loc5_21.4) to %y.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc5_3.1: init %struct_type.v = converted %x.ref, %.loc5_21.5 [concrete = constants.%struct] -// CHECK:STDOUT: assign %y.var, %.loc5_3.1 +// CHECK:STDOUT: %.loc5_3: init %struct_type.v = converted %x.ref, %.loc5_21.5 [concrete = constants.%struct] +// CHECK:STDOUT: assign %y.var, %.loc5_3 // CHECK:STDOUT: %.loc5_17: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { // CHECK:STDOUT: %.loc5_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_16.2: type = converted %.loc5_16.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -101,12 +102,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc5_3.1: = bound_method %y.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%struct_type.v) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc5_3.2: = bound_method %y.var, %specific_fn -// CHECK:STDOUT: %.loc5_3.2: ref %empty_tuple.type = struct_access %y.var, element0 -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_3.3: %empty_tuple.type = converted %.loc5_3.2, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %struct: %struct_type.v = struct_value (%.loc5_3.3) [concrete = constants.%struct] -// CHECK:STDOUT: %.loc5_3.4: %struct_type.v = converted %y.var, %struct [concrete = constants.%struct] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_3.2(%.loc5_3.4) +// CHECK:STDOUT: %addr: %ptr.ef9 = addr_of %y.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/lookup.carbon b/toolchain/check/testdata/var/lookup.carbon index dac97de4e428..5f91fcdcc898 100644 --- a/toolchain/check/testdata/var/lookup.carbon +++ b/toolchain/check/testdata/var/lookup.carbon @@ -33,6 +33,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -45,7 +46,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -67,8 +68,8 @@ fn Main() { // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt // CHECK:STDOUT: %.loc16_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc16_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_3.1: init %empty_tuple.type = converted %.loc16_16.1, %.loc16_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var, %.loc16_3.1 +// CHECK:STDOUT: %.loc16_3: init %empty_tuple.type = converted %.loc16_16.1, %.loc16_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var, %.loc16_3 // CHECK:STDOUT: %.loc16_11.1: type = splice_block %.loc16_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc16_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc16_11.3: type = converted %.loc16_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -79,9 +80,8 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc16_3.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc16_3.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_3.2: %empty_tuple.type = converted %x.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3.2(%.loc16_3.2) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc16_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/shadowing.carbon b/toolchain/check/testdata/var/shadowing.carbon index 3a2eadc2b93c..626e95131b9f 100644 --- a/toolchain/check/testdata/var/shadowing.carbon +++ b/toolchain/check/testdata/var/shadowing.carbon @@ -46,6 +46,7 @@ fn Main() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -58,7 +59,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -82,8 +83,8 @@ fn Main() { // CHECK:STDOUT: %NS.var: ref %empty_tuple.type = var %NS.var_patt // CHECK:STDOUT: %.loc5_17.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_17.2: init %empty_tuple.type = tuple_init () to %NS.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_3.1: init %empty_tuple.type = converted %.loc5_17.1, %.loc5_17.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %NS.var, %.loc5_3.1 +// CHECK:STDOUT: %.loc5_3: init %empty_tuple.type = converted %.loc5_17.1, %.loc5_17.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %NS.var, %.loc5_3 // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -101,8 +102,8 @@ fn Main() { // CHECK:STDOUT: %x.var.loc8: ref %empty_tuple.type = var %x.var_patt.loc8 // CHECK:STDOUT: %.loc8_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc8 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_3.1: init %empty_tuple.type = converted %.loc8_16.1, %.loc8_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc8, %.loc8_3.1 +// CHECK:STDOUT: %.loc8_3: init %empty_tuple.type = converted %.loc8_16.1, %.loc8_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc8, %.loc8_3 // CHECK:STDOUT: %.loc8_11.1: type = splice_block %.loc8_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc8_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_11.3: type = converted %.loc8_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -119,8 +120,8 @@ fn Main() { // CHECK:STDOUT: %x.var.loc10: ref %empty_tuple.type = var %x.var_patt.loc10 // CHECK:STDOUT: %.loc10_18.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_18.2: init %empty_tuple.type = tuple_init () to %x.var.loc10 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc10_5.1: init %empty_tuple.type = converted %.loc10_18.1, %.loc10_18.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc10, %.loc10_5.1 +// CHECK:STDOUT: %.loc10_5: init %empty_tuple.type = converted %.loc10_18.1, %.loc10_18.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc10, %.loc10_5 // CHECK:STDOUT: %.loc10_13.1: type = splice_block %.loc10_13.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc10_13.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_13.3: type = converted %.loc10_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -138,23 +139,20 @@ fn Main() { // CHECK:STDOUT: %bound_method.loc10_5.1: = bound_method %x.var.loc10, %impl.elem0.loc10 // CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc10_5.2: = bound_method %x.var.loc10, %specific_fn.loc10 -// CHECK:STDOUT: %tuple.loc10: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc10_5.2: %empty_tuple.type = converted %x.var.loc10, %tuple.loc10 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_5.2(%.loc10_5.2) +// CHECK:STDOUT: %addr.loc10: %ptr.843 = addr_of %x.var.loc10 +// CHECK:STDOUT: %no_op.loc10: init %empty_tuple.type = call %bound_method.loc10_5.2(%addr.loc10) // CHECK:STDOUT: %impl.elem0.loc8: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc8_3.1: = bound_method %x.var.loc8, %impl.elem0.loc8 // CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_3.2: = bound_method %x.var.loc8, %specific_fn.loc8 -// CHECK:STDOUT: %tuple.loc8: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_3.2: %empty_tuple.type = converted %x.var.loc8, %tuple.loc8 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%.loc8_3.2) +// CHECK:STDOUT: %addr.loc8: %ptr.843 = addr_of %x.var.loc8 +// CHECK:STDOUT: %no_op.loc8: init %empty_tuple.type = call %bound_method.loc8_3.2(%addr.loc8) // CHECK:STDOUT: %impl.elem0.loc5: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc5_3.1: = bound_method %NS.var, %impl.elem0.loc5 // CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc5_3.2: = bound_method %NS.var, %specific_fn.loc5 -// CHECK:STDOUT: %tuple.loc5: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_3.2: %empty_tuple.type = converted %NS.var, %tuple.loc5 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc5: init %empty_tuple.type = call %bound_method.loc5_3.2(%.loc5_3.2) +// CHECK:STDOUT: %addr.loc5: %ptr.843 = addr_of %NS.var +// CHECK:STDOUT: %no_op.loc5: init %empty_tuple.type = call %bound_method.loc5_3.2(%addr.loc5) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/var_pattern.carbon b/toolchain/check/testdata/var/var_pattern.carbon index 120c39089185..821517289455 100644 --- a/toolchain/check/testdata/var/var_pattern.carbon +++ b/toolchain/check/testdata/var/var_pattern.carbon @@ -161,6 +161,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -173,7 +174,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -195,8 +196,8 @@ fn G() { // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt // CHECK:STDOUT: %.loc5_20.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_20.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_7.1: init %empty_tuple.type = converted %.loc5_20.1, %.loc5_20.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var, %.loc5_7.1 +// CHECK:STDOUT: %.loc5_7: init %empty_tuple.type = converted %.loc5_20.1, %.loc5_20.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var, %.loc5_7 // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_15.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_15.3: type = converted %.loc5_15.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -206,9 +207,8 @@ fn G() { // CHECK:STDOUT: %bound_method.loc5_7.1: = bound_method %x.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc5_7.2: = bound_method %x.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_7.2: %empty_tuple.type = converted %x.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_7.2(%.loc5_7.2) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %x.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_7.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -230,6 +230,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -242,7 +243,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,8 +276,8 @@ fn G() { // CHECK:STDOUT: %.loc5_30.2: %empty_tuple.type = converted %.loc5_30.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %.loc5_30.2 // CHECK:STDOUT: %.loc5_34.2: init %empty_tuple.type = tuple_init () to %y.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_15.1: init %empty_tuple.type = converted %.loc5_34.1, %.loc5_34.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %y.var, %.loc5_15.1 +// CHECK:STDOUT: %.loc5_15: init %empty_tuple.type = converted %.loc5_34.1, %.loc5_34.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %y.var, %.loc5_15 // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_23.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_23.3: type = converted %.loc5_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -286,9 +287,8 @@ fn G() { // CHECK:STDOUT: %bound_method.loc5_15.1: = bound_method %y.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc5_15.2: = bound_method %y.var, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_15.2: %empty_tuple.type = converted %y.var, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_15.2(%.loc5_15.2) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %y.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_15.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -301,6 +301,7 @@ fn G() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] +// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -323,7 +324,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -355,33 +356,26 @@ fn G() { // CHECK:STDOUT: %.loc5_30.2: init %empty_tuple.type = tuple_init () to %tuple.elem1.loc5_31 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_31.3: init %empty_tuple.type = converted %.loc5_30.1, %.loc5_30.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_31.4: init %tuple.type = tuple_init (%.loc5_31.2, %.loc5_31.3) to %.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc5_3.1: init %tuple.type = converted %.loc5_31.1, %.loc5_31.4 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %.var, %.loc5_3.1 -// CHECK:STDOUT: %tuple.elem0.loc5_3.1: ref %empty_tuple.type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.elem1.loc5_3.1: ref %empty_tuple.type = tuple_access %.var, element1 +// CHECK:STDOUT: %.loc5_3: init %tuple.type = converted %.loc5_31.1, %.loc5_31.4 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %.var, %.loc5_3 +// CHECK:STDOUT: %tuple.elem0.loc5_3: ref %empty_tuple.type = tuple_access %.var, element0 +// CHECK:STDOUT: %tuple.elem1.loc5_3: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %tuple.elem0.loc5_3.1 +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %tuple.elem0.loc5_3 // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_19.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_19.3: type = converted %.loc5_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1.loc5_3.1 +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1.loc5_3 // CHECK:STDOUT: %impl.elem0: %.b6c = impl_witness_access constants.%Destroy.impl_witness.585, element0 [concrete = constants.%Op.166] // CHECK:STDOUT: %bound_method.loc5_3.1: = bound_method %.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc5_3.2: = bound_method %.var, %specific_fn -// CHECK:STDOUT: %tuple.elem0.loc5_3.2: ref %empty_tuple.type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.loc5_3.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_3.2: %empty_tuple.type = converted %tuple.elem0.loc5_3.2, %tuple.loc5_3.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1.loc5_3.2: ref %empty_tuple.type = tuple_access %.var, element1 -// CHECK:STDOUT: %tuple.loc5_3.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_3.3: %empty_tuple.type = converted %tuple.elem1.loc5_3.2, %tuple.loc5_3.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc5_3.3: %tuple.type = tuple_value (%.loc5_3.2, %.loc5_3.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc5_3.4: %tuple.type = converted %.var, %tuple.loc5_3.3 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_3.2(%.loc5_3.4) +// CHECK:STDOUT: %addr: %ptr.709 = addr_of %.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_3.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -394,6 +388,7 @@ fn G() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] +// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -416,7 +411,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -448,33 +443,26 @@ fn G() { // CHECK:STDOUT: %.loc5_34.2: init %empty_tuple.type = tuple_init () to %tuple.elem1.loc5_35 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_35.3: init %empty_tuple.type = converted %.loc5_34.1, %.loc5_34.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_35.4: init %tuple.type = tuple_init (%.loc5_35.2, %.loc5_35.3) to %.var [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc5_7.1: init %tuple.type = converted %.loc5_35.1, %.loc5_35.4 [concrete = constants.%tuple] -// CHECK:STDOUT: assign %.var, %.loc5_7.1 -// CHECK:STDOUT: %tuple.elem0.loc5_7.1: ref %empty_tuple.type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.elem1.loc5_7.1: ref %empty_tuple.type = tuple_access %.var, element1 +// CHECK:STDOUT: %.loc5_7: init %tuple.type = converted %.loc5_35.1, %.loc5_35.4 [concrete = constants.%tuple] +// CHECK:STDOUT: assign %.var, %.loc5_7 +// CHECK:STDOUT: %tuple.elem0.loc5_7: ref %empty_tuple.type = tuple_access %.var, element0 +// CHECK:STDOUT: %tuple.elem1.loc5_7: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc5_16.1: type = splice_block %.loc5_16.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_16.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_16.3: type = converted %.loc5_16.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %tuple.elem0.loc5_7.1 +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %tuple.elem0.loc5_7 // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc5_23.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_23.3: type = converted %.loc5_23.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1.loc5_7.1 +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1.loc5_7 // CHECK:STDOUT: %impl.elem0: %.b6c = impl_witness_access constants.%Destroy.impl_witness.585, element0 [concrete = constants.%Op.166] // CHECK:STDOUT: %bound_method.loc5_7.1: = bound_method %.var, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc5_7.2: = bound_method %.var, %specific_fn -// CHECK:STDOUT: %tuple.elem0.loc5_7.2: ref %empty_tuple.type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.loc5_7.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_7.2: %empty_tuple.type = converted %tuple.elem0.loc5_7.2, %tuple.loc5_7.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1.loc5_7.2: ref %empty_tuple.type = tuple_access %.var, element1 -// CHECK:STDOUT: %tuple.loc5_7.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc5_7.3: %empty_tuple.type = converted %tuple.elem1.loc5_7.2, %tuple.loc5_7.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc5_7.3: %tuple.type = tuple_value (%.loc5_7.2, %.loc5_7.3) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc5_7.4: %tuple.type = converted %.var, %tuple.loc5_7.3 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_7.2(%.loc5_7.4) +// CHECK:STDOUT: %addr: %ptr.709 = addr_of %.var +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc5_7.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -496,6 +484,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -508,7 +497,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -553,8 +542,8 @@ fn G() { // CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt // CHECK:STDOUT: %.loc7_16.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_16.2: init %empty_tuple.type = tuple_init () to %v.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc7_3.1: init %empty_tuple.type = converted %.loc7_16.1, %.loc7_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %v.var, %.loc7_3.1 +// CHECK:STDOUT: %.loc7_3: init %empty_tuple.type = converted %.loc7_16.1, %.loc7_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %v.var, %.loc7_3 // CHECK:STDOUT: %.loc7_11.1: type = splice_block %.loc7_11.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_11.3: type = converted %.loc7_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -563,8 +552,8 @@ fn G() { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %v.ref: ref %empty_tuple.type = name_ref v, %v // CHECK:STDOUT: %.loc8_9.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %tuple.loc8: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_5: %empty_tuple.type = converted %v.ref, %tuple.loc8 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_5: %empty_tuple.type = converted %v.ref, %tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_13.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc8_9.2: init %empty_tuple.type = tuple_init () to %.loc4_13.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_13.2: init %empty_tuple.type = converted %.loc8_9.1, %.loc8_9.2 [concrete = constants.%empty_tuple] @@ -574,16 +563,14 @@ fn G() { // CHECK:STDOUT: %bound_method.loc4_13.1: = bound_method %.loc4_13.1, %impl.elem0.loc4 // CHECK:STDOUT: %specific_fn.loc4: = specific_function %impl.elem0.loc4, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc4_13.2: = bound_method %.loc4_13.1, %specific_fn.loc4 -// CHECK:STDOUT: %tuple.loc4: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc4_13.3: %empty_tuple.type = converted %.loc4_13.1, %tuple.loc4 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc4: init %empty_tuple.type = call %bound_method.loc4_13.2(%.loc4_13.3) +// CHECK:STDOUT: %addr.loc4: %ptr.843 = addr_of %.loc4_13.1 +// CHECK:STDOUT: %no_op.loc4: init %empty_tuple.type = call %bound_method.loc4_13.2(%addr.loc4) // CHECK:STDOUT: %impl.elem0.loc7: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %v.var, %impl.elem0.loc7 // CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %specific_fn.loc7 -// CHECK:STDOUT: %tuple.loc7: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc7_3.2: %empty_tuple.type = converted %v.var, %tuple.loc7 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%.loc7_3.2) +// CHECK:STDOUT: %addr.loc7: %ptr.843 = addr_of %v.var +// CHECK:STDOUT: %no_op.loc7: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -704,6 +691,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -721,9 +709,9 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %P.F: %F.type = import_ref P//default, F, loaded [concrete = constants.%F] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.f99: %Destroy.assoc_type = import_ref Core//prelude/parts/destroy, loc5_22, loaded [concrete = constants.%assoc0] -// CHECK:STDOUT: %Core.import_ref.725: %Op.type.bae = import_ref Core//prelude/parts/destroy, loc5_22, loaded [concrete = constants.%Op.651] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.f99: %Destroy.assoc_type = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%assoc0] +// CHECK:STDOUT: %Core.import_ref.725: %Op.type.bae = import_ref Core//prelude/parts/destroy, loc5_28, loaded [concrete = constants.%Op.651] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -756,9 +744,8 @@ fn G() { // CHECK:STDOUT: %bound_method.1: = bound_method %.1, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.2: = bound_method %.1, %specific_fn -// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.3: %empty_tuple.type = converted %.1, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.2(%.3) +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.1 +// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -776,6 +763,7 @@ fn G() { // CHECK:STDOUT: %tuple.type.a21: type = tuple_type (%empty_tuple.type, %tuple.type.bcd) [concrete] // CHECK:STDOUT: %pattern_type.c6c: type = pattern_type %tuple.type.a21 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %ptr.709: type = ptr_type %tuple.type.bcd [concrete] // CHECK:STDOUT: %tuple: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Op.type.bae: type = fn_type @Op.1 [concrete] @@ -791,6 +779,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet.926: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet.926 [concrete] // CHECK:STDOUT: %Op.specific_fn.393: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -803,7 +792,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -850,16 +839,16 @@ fn G() { // CHECK:STDOUT: %.loc9_53.4: init %tuple.type.bcd = tuple_init (%.loc9_53.2, %.loc9_53.3) to %.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc9_15.1: init %tuple.type.bcd = converted %.loc9_53.1, %.loc9_53.4 [concrete = constants.%tuple] // CHECK:STDOUT: assign %.var, %.loc9_15.1 -// CHECK:STDOUT: %tuple.elem0.loc9_15.1: ref %empty_tuple.type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.elem1.loc9_15.1: ref %empty_tuple.type = tuple_access %.var, element1 +// CHECK:STDOUT: %tuple.elem0.loc9_15: ref %empty_tuple.type = tuple_access %.var, element0 +// CHECK:STDOUT: %tuple.elem1.loc9_15: ref %empty_tuple.type = tuple_access %.var, element1 // CHECK:STDOUT: %.loc9_24.1: type = splice_block %.loc9_24.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc9_24.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_24.3: type = converted %.loc9_24.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem0.loc9_15.1 +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem0.loc9_15 // CHECK:STDOUT: %.loc9_15.2: init %empty_tuple.type = tuple_init () to %z.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc9_27.1: init %empty_tuple.type = converted %tuple.elem1.loc9_15.1, %.loc9_15.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %z.var, %.loc9_27.1 +// CHECK:STDOUT: %.loc9_27: init %empty_tuple.type = converted %tuple.elem1.loc9_15, %.loc9_15.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %z.var, %.loc9_27 // CHECK:STDOUT: %.loc9_35.1: type = splice_block %.loc9_35.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc9_35.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_35.3: type = converted %.loc9_35.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -869,22 +858,14 @@ fn G() { // CHECK:STDOUT: %bound_method.loc9_15.1: = bound_method %.var, %impl.elem0.loc9_15 // CHECK:STDOUT: %specific_fn.loc9_15: = specific_function %impl.elem0.loc9_15, @Op.2(constants.%tuple.type.bcd) [concrete = constants.%Op.specific_fn.48a] // CHECK:STDOUT: %bound_method.loc9_15.2: = bound_method %.var, %specific_fn.loc9_15 -// CHECK:STDOUT: %tuple.elem0.loc9_15.2: ref %empty_tuple.type = tuple_access %.var, element0 -// CHECK:STDOUT: %tuple.loc9_15.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc9_15.3: %empty_tuple.type = converted %tuple.elem0.loc9_15.2, %tuple.loc9_15.1 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1.loc9_15.2: ref %empty_tuple.type = tuple_access %.var, element1 -// CHECK:STDOUT: %tuple.loc9_15.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc9_15.4: %empty_tuple.type = converted %tuple.elem1.loc9_15.2, %tuple.loc9_15.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.loc9_15.3: %tuple.type.bcd = tuple_value (%.loc9_15.3, %.loc9_15.4) [concrete = constants.%tuple] -// CHECK:STDOUT: %.loc9_15.5: %tuple.type.bcd = converted %.var, %tuple.loc9_15.3 [concrete = constants.%tuple] -// CHECK:STDOUT: %no_op.loc9_15: init %empty_tuple.type = call %bound_method.loc9_15.2(%.loc9_15.5) +// CHECK:STDOUT: %addr.loc9_15: %ptr.709 = addr_of %.var +// CHECK:STDOUT: %no_op.loc9_15: init %empty_tuple.type = call %bound_method.loc9_15.2(%addr.loc9_15) // CHECK:STDOUT: %impl.elem0.loc9_27: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc9_27.1: = bound_method %z.var, %impl.elem0.loc9_27 // CHECK:STDOUT: %specific_fn.loc9_27: = specific_function %impl.elem0.loc9_27, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393] // CHECK:STDOUT: %bound_method.loc9_27.2: = bound_method %z.var, %specific_fn.loc9_27 -// CHECK:STDOUT: %tuple.loc9_27: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc9_27.2: %empty_tuple.type = converted %z.var, %tuple.loc9_27 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc9_27: init %empty_tuple.type = call %bound_method.loc9_27.2(%.loc9_27.2) +// CHECK:STDOUT: %addr.loc9_27: %ptr.843 = addr_of %z.var +// CHECK:STDOUT: %no_op.loc9_27: init %empty_tuple.type = call %bound_method.loc9_27.2(%addr.loc9_27) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -970,6 +951,7 @@ fn G() { // CHECK:STDOUT: %Destroy.impl_witness.1dc: = impl_witness imports.%Destroy.impl_witness_table, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.type.a63: type = fn_type @Op.2, @impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Op.ea3: %Op.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %empty_tuple.type, (%Destroy.impl_witness.1dc) [concrete] // CHECK:STDOUT: %.346: type = fn_type_with_self_type %Op.type.bae, %Destroy.facet [concrete] // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.ea3, @Op.2(%empty_tuple.type) [concrete] @@ -982,7 +964,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_23, loaded [symbolic = @impl.%Op (constants.%Op.46f)] +// CHECK:STDOUT: %Core.import_ref.0b9: @impl.%Op.type (%Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @impl.%Op (constants.%Op.46f)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1030,8 +1012,8 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_38.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc8_38.2: ref %empty_tuple.type = temporary %.loc8_38.1, %F.call.loc8_38 -// CHECK:STDOUT: %tuple.loc8_38.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_38.3: %empty_tuple.type = converted %F.call.loc8_38, %tuple.loc8_38.1 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %tuple.loc8_38: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_38.3: %empty_tuple.type = converted %F.call.loc8_38, %tuple.loc8_38 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %.loc8_38.3 // CHECK:STDOUT: assign %y.var, %F.call.loc8_43 // CHECK:STDOUT: %.loc8_23.1: type = splice_block %.loc8_23.3 [concrete = constants.%empty_tuple.type] { @@ -1045,30 +1027,27 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_48.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc8_48.2: ref %empty_tuple.type = temporary %.loc8_48.1, %F.call.loc8_48 -// CHECK:STDOUT: %tuple.loc8_48.1: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_48.3: %empty_tuple.type = converted %F.call.loc8_48, %tuple.loc8_48.1 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %tuple.loc8_48: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_48.3: %empty_tuple.type = converted %F.call.loc8_48, %tuple.loc8_48 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %z: %empty_tuple.type = bind_name z, %.loc8_48.3 // CHECK:STDOUT: %impl.elem0.loc8_48: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc8_48.1: = bound_method %.loc8_48.1, %impl.elem0.loc8_48 // CHECK:STDOUT: %specific_fn.loc8_48: = specific_function %impl.elem0.loc8_48, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_48.2: = bound_method %.loc8_48.1, %specific_fn.loc8_48 -// CHECK:STDOUT: %tuple.loc8_48.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_48.4: %empty_tuple.type = converted %.loc8_48.1, %tuple.loc8_48.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc8_48: init %empty_tuple.type = call %bound_method.loc8_48.2(%.loc8_48.4) +// CHECK:STDOUT: %addr.loc8_48: %ptr.843 = addr_of %.loc8_48.1 +// CHECK:STDOUT: %no_op.loc8_48: init %empty_tuple.type = call %bound_method.loc8_48.2(%addr.loc8_48) // CHECK:STDOUT: %impl.elem0.loc8_38: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc8_38.1: = bound_method %.loc8_38.1, %impl.elem0.loc8_38 // CHECK:STDOUT: %specific_fn.loc8_38: = specific_function %impl.elem0.loc8_38, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_38.2: = bound_method %.loc8_38.1, %specific_fn.loc8_38 -// CHECK:STDOUT: %tuple.loc8_38.2: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_38.4: %empty_tuple.type = converted %.loc8_38.1, %tuple.loc8_38.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc8_38: init %empty_tuple.type = call %bound_method.loc8_38.2(%.loc8_38.4) +// CHECK:STDOUT: %addr.loc8_38: %ptr.843 = addr_of %.loc8_38.1 +// CHECK:STDOUT: %no_op.loc8_38: init %empty_tuple.type = call %bound_method.loc8_38.2(%addr.loc8_38) // CHECK:STDOUT: %impl.elem0.loc8_15: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%Op.ea3] // CHECK:STDOUT: %bound_method.loc8_15.1: = bound_method %y.var, %impl.elem0.loc8_15 // CHECK:STDOUT: %specific_fn.loc8_15: = specific_function %impl.elem0.loc8_15, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn] // CHECK:STDOUT: %bound_method.loc8_15.2: = bound_method %y.var, %specific_fn.loc8_15 -// CHECK:STDOUT: %tuple.loc8_15: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc8_15: %empty_tuple.type = converted %y.var, %tuple.loc8_15 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %no_op.loc8_15: init %empty_tuple.type = call %bound_method.loc8_15.2(%.loc8_15) +// CHECK:STDOUT: %addr.loc8_15: %ptr.843 = addr_of %y.var +// CHECK:STDOUT: %no_op.loc8_15: init %empty_tuple.type = call %bound_method.loc8_15.2(%addr.loc8_15) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/array/array_in_place.carbon b/toolchain/lower/testdata/array/array_in_place.carbon index 88ca78f3e9da..aed16fb6c070 100644 --- a/toolchain/lower/testdata/array/array_in_place.carbon +++ b/toolchain/lower/testdata/array/array_in_place.carbon @@ -29,32 +29,6 @@ fn G() { // CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_47.2.array.index), !dbg !9 // CHECK:STDOUT: %.loc16_47.4.array.index = getelementptr inbounds [2 x { i32, i32, i32 }], ptr %v.var, i32 0, i64 1, !dbg !8 // CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_47.4.array.index), !dbg !10 -// CHECK:STDOUT: %tuple.elem0.loc16_47.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_47.4.array.index, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_47.7 = load i32, ptr %tuple.elem0.loc16_47.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16_47.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_47.4.array.index, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_47.8 = load i32, ptr %tuple.elem1.loc16_47.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc16_47.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_47.4.array.index, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc16_47.9 = load i32, ptr %tuple.elem2.loc16_47.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.1 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.11 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_47.1, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_47.7, ptr %tuple.loc16_47.11, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.12 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_47.1, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_47.8, ptr %tuple.loc16_47.12, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.13 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_47.1, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_47.9, ptr %tuple.loc16_47.13, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc16_47.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_47.2.array.index, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_47.11 = load i32, ptr %tuple.elem0.loc16_47.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16_47.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_47.2.array.index, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_47.12 = load i32, ptr %tuple.elem1.loc16_47.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc16_47.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_47.2.array.index, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc16_47.13 = load i32, ptr %tuple.elem2.loc16_47.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.2 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.24 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_47.2, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_47.11, ptr %tuple.loc16_47.24, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.25 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_47.2, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_47.12, ptr %tuple.loc16_47.25, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_47.26 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_47.2, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_47.13, ptr %tuple.loc16_47.26, align 4, !dbg !8 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/array/assign_return_value.carbon b/toolchain/lower/testdata/array/assign_return_value.carbon index fd21de7e4449..04607a27de70 100644 --- a/toolchain/lower/testdata/array/assign_return_value.carbon +++ b/toolchain/lower/testdata/array/assign_return_value.carbon @@ -36,23 +36,14 @@ fn Run() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %t.var), !dbg !10 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc16_28.1.temp), !dbg !11 // CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_28.1.temp), !dbg !11 -// CHECK:STDOUT: %tuple.elem0.loc16_28.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_28.1.temp, i32 0, i32 0, !dbg !11 -// CHECK:STDOUT: %.loc16_28.3 = load i32, ptr %tuple.elem0.loc16_28.1.tuple.elem, align 4, !dbg !11 +// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_28.1.temp, i32 0, i32 0, !dbg !11 +// CHECK:STDOUT: %.loc16_28.3 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !11 // CHECK:STDOUT: %.loc16_28.4.array.index = getelementptr inbounds [2 x i32], ptr %t.var, i32 0, i64 0, !dbg !11 // CHECK:STDOUT: store i32 %.loc16_28.3, ptr %.loc16_28.4.array.index, align 4, !dbg !11 -// CHECK:STDOUT: %tuple.elem1.loc16_28.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_28.1.temp, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: %.loc16_28.6 = load i32, ptr %tuple.elem1.loc16_28.1.tuple.elem, align 4, !dbg !11 +// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_28.1.temp, i32 0, i32 1, !dbg !11 +// CHECK:STDOUT: %.loc16_28.6 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !11 // CHECK:STDOUT: %.loc16_28.7.array.index = getelementptr inbounds [2 x i32], ptr %t.var, i32 0, i64 1, !dbg !11 // CHECK:STDOUT: store i32 %.loc16_28.6, ptr %.loc16_28.7.array.index, align 4, !dbg !11 -// CHECK:STDOUT: %tuple.elem0.loc16_28.2.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_28.1.temp, i32 0, i32 0, !dbg !11 -// CHECK:STDOUT: %.loc16_28.10 = load i32, ptr %tuple.elem0.loc16_28.2.tuple.elem, align 4, !dbg !11 -// CHECK:STDOUT: %tuple.elem1.loc16_28.2.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_28.1.temp, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: %.loc16_28.11 = load i32, ptr %tuple.elem1.loc16_28.2.tuple.elem, align 4, !dbg !11 -// CHECK:STDOUT: %tuple = alloca { i32, i32 }, align 8, !dbg !11 -// CHECK:STDOUT: %tuple1 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 0, !dbg !11 -// CHECK:STDOUT: store i32 %.loc16_28.10, ptr %tuple1, align 4, !dbg !11 -// CHECK:STDOUT: %tuple2 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: store i32 %.loc16_28.11, ptr %tuple2, align 4, !dbg !11 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/array/base.carbon b/toolchain/lower/testdata/array/base.carbon index 33d03ab670d3..dd15b8616f6c 100644 --- a/toolchain/lower/testdata/array/base.carbon +++ b/toolchain/lower/testdata/array/base.carbon @@ -21,10 +21,10 @@ fn Run() { // CHECK:STDOUT: ; ModuleID = 'base.carbon' // CHECK:STDOUT: source_filename = "base.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @array.237.loc14_3.1 = internal constant [1 x i32] [i32 1] -// CHECK:STDOUT: @array.6a2.loc15_3.1 = internal constant [2 x double] [double 0x4026333333333334, double 2.200000e+00] -// CHECK:STDOUT: @array.1cb.loc16_3.1 = internal constant [5 x {}] zeroinitializer -// CHECK:STDOUT: @tuple.loc17_3.1 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } +// CHECK:STDOUT: @array.237.loc14_3 = internal constant [1 x i32] [i32 1] +// CHECK:STDOUT: @array.6a2.loc15_3 = internal constant [2 x double] [double 0x4026333333333334, double 2.200000e+00] +// CHECK:STDOUT: @array.1cb.loc16_3 = internal constant [5 x {}] zeroinitializer +// CHECK:STDOUT: @tuple.loc17_3 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: define void @main() !dbg !4 { // CHECK:STDOUT: entry: @@ -35,23 +35,23 @@ fn Run() { // CHECK:STDOUT: %e.var = alloca [3 x i32], align 4, !dbg !11 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %a.var), !dbg !7 // CHECK:STDOUT: %.loc14_29.3.array.index = getelementptr inbounds [1 x i32], ptr %a.var, i32 0, i64 0, !dbg !12 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @array.237.loc14_3.1, i64 4, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @array.237.loc14_3, i64 4, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 16, ptr %b.var), !dbg !8 // CHECK:STDOUT: %.loc15_37.2.array.index = getelementptr inbounds [2 x double], ptr %b.var, i32 0, i64 0, !dbg !13 // CHECK:STDOUT: %.loc15_37.4.array.index = getelementptr inbounds [2 x double], ptr %b.var, i32 0, i64 1, !dbg !13 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %b.var, ptr align 8 @array.6a2.loc15_3.1, i64 16, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %b.var, ptr align 8 @array.6a2.loc15_3, i64 16, i1 false), !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !9 // CHECK:STDOUT: %.loc16_45.2.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 0, !dbg !14 // CHECK:STDOUT: %.loc16_45.4.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 1, !dbg !14 // CHECK:STDOUT: %.loc16_45.6.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 2, !dbg !14 // CHECK:STDOUT: %.loc16_45.8.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 3, !dbg !14 // CHECK:STDOUT: %.loc16_45.10.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 4, !dbg !14 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c.var, ptr align 1 @array.1cb.loc16_3.1, i64 0, i1 false), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c.var, ptr align 1 @array.1cb.loc16_3, i64 0, i1 false), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %d.var), !dbg !10 -// CHECK:STDOUT: %tuple.elem0.loc17_36.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !15 -// CHECK:STDOUT: %tuple.elem1.loc17_36.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 1, !dbg !15 -// CHECK:STDOUT: %tuple.elem2.loc17_36.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 2, !dbg !15 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %d.var, ptr align 4 @tuple.loc17_3.1, i64 12, i1 false), !dbg !10 +// CHECK:STDOUT: %tuple.elem0.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !15 +// CHECK:STDOUT: %tuple.elem1.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 1, !dbg !15 +// CHECK:STDOUT: %tuple.elem2.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 2, !dbg !15 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %d.var, ptr align 4 @tuple.loc17_3, i64 12, i1 false), !dbg !10 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %e.var), !dbg !11 // CHECK:STDOUT: %tuple.elem0.loc18.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !16 // CHECK:STDOUT: %.loc18_26.1 = load i32, ptr %tuple.elem0.loc18.tuple.elem, align 4, !dbg !16 @@ -65,19 +65,6 @@ fn Run() { // CHECK:STDOUT: %.loc18_26.7 = load i32, ptr %tuple.elem2.loc18.tuple.elem, align 4, !dbg !16 // CHECK:STDOUT: %.loc18_26.8.array.index = getelementptr inbounds [3 x i32], ptr %e.var, i32 0, i64 2, !dbg !16 // CHECK:STDOUT: store i32 %.loc18_26.7, ptr %.loc18_26.8.array.index, align 4, !dbg !16 -// CHECK:STDOUT: %tuple.elem0.loc17_3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !10 -// CHECK:STDOUT: %.loc17_3.2 = load i32, ptr %tuple.elem0.loc17_3.tuple.elem, align 4, !dbg !10 -// CHECK:STDOUT: %tuple.elem1.loc17_3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 1, !dbg !10 -// CHECK:STDOUT: %.loc17_3.3 = load i32, ptr %tuple.elem1.loc17_3.tuple.elem, align 4, !dbg !10 -// CHECK:STDOUT: %tuple.elem2.loc17_3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 2, !dbg !10 -// CHECK:STDOUT: %.loc17_3.4 = load i32, ptr %tuple.elem2.loc17_3.tuple.elem, align 4, !dbg !10 -// CHECK:STDOUT: %tuple = alloca { i32, i32, i32 }, align 8, !dbg !10 -// CHECK:STDOUT: %tuple1 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple, i32 0, i32 0, !dbg !10 -// CHECK:STDOUT: store i32 %.loc17_3.2, ptr %tuple1, align 4, !dbg !10 -// CHECK:STDOUT: %tuple2 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple, i32 0, i32 1, !dbg !10 -// CHECK:STDOUT: store i32 %.loc17_3.3, ptr %tuple2, align 4, !dbg !10 -// CHECK:STDOUT: %tuple3 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple, i32 0, i32 2, !dbg !10 -// CHECK:STDOUT: store i32 %.loc17_3.4, ptr %tuple3, align 4, !dbg !10 // CHECK:STDOUT: ret void, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/basics/numeric_literals.carbon b/toolchain/lower/testdata/basics/numeric_literals.carbon index 170f54c7b592..51e5f71de9a0 100644 --- a/toolchain/lower/testdata/basics/numeric_literals.carbon +++ b/toolchain/lower/testdata/basics/numeric_literals.carbon @@ -32,8 +32,8 @@ fn F() { // CHECK:STDOUT: ; ModuleID = 'numeric_literals.carbon' // CHECK:STDOUT: source_filename = "numeric_literals.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @array.712.loc16_3.1 = internal constant [4 x i32] [i32 8, i32 9, i32 8, i32 8] -// CHECK:STDOUT: @array.a2f.loc22_3.1 = internal constant [6 x double] [double 9.000000e-01, double 8.000000e+00, double 8.000000e+01, double 1.000000e+07, double 1.000000e+08, double 1.000000e-08] +// CHECK:STDOUT: @array.712.loc16_3 = internal constant [4 x i32] [i32 8, i32 9, i32 8, i32 8] +// CHECK:STDOUT: @array.a2f.loc22_3 = internal constant [6 x double] [double 9.000000e-01, double 8.000000e+00, double 8.000000e+01, double 1.000000e+07, double 1.000000e+08, double 1.000000e-08] // CHECK:STDOUT: // CHECK:STDOUT: define void @_CF.Main() !dbg !4 { // CHECK:STDOUT: entry: @@ -44,7 +44,7 @@ fn F() { // CHECK:STDOUT: %.loc21_3.6.array.index = getelementptr inbounds [4 x i32], ptr %ints.var, i32 0, i64 1, !dbg !9 // CHECK:STDOUT: %.loc21_3.9.array.index = getelementptr inbounds [4 x i32], ptr %ints.var, i32 0, i64 2, !dbg !9 // CHECK:STDOUT: %.loc21_3.12.array.index = getelementptr inbounds [4 x i32], ptr %ints.var, i32 0, i64 3, !dbg !9 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %ints.var, ptr align 4 @array.712.loc16_3.1, i64 16, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %ints.var, ptr align 4 @array.712.loc16_3, i64 16, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 48, ptr %floats.var), !dbg !8 // CHECK:STDOUT: %.loc29_3.2.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 0, !dbg !10 // CHECK:STDOUT: %.loc29_3.4.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 1, !dbg !10 @@ -52,7 +52,7 @@ fn F() { // CHECK:STDOUT: %.loc29_3.8.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 3, !dbg !10 // CHECK:STDOUT: %.loc29_3.10.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 4, !dbg !10 // CHECK:STDOUT: %.loc29_3.12.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 5, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %floats.var, ptr align 8 @array.a2f.loc22_3.1, i64 48, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %floats.var, ptr align 8 @array.a2f.loc22_3, i64 48, i1 false), !dbg !8 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/builtins/types.carbon b/toolchain/lower/testdata/builtins/types.carbon index 146c47db6f00..5d2e9613d132 100644 --- a/toolchain/lower/testdata/builtins/types.carbon +++ b/toolchain/lower/testdata/builtins/types.carbon @@ -36,9 +36,6 @@ fn F() { // CHECK:STDOUT: store double 0.000000e+00, ptr %f.var, align 8, !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 1, ptr %b.var), !dbg !9 // CHECK:STDOUT: store i1 false, ptr %b.var, align 1, !dbg !9 -// CHECK:STDOUT: %.loc22_3 = load i1, ptr %b.var, align 1, !dbg !9 -// CHECK:STDOUT: %.loc21_3 = load double, ptr %f.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc20_3 = load i32, ptr %i.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/class/convert.carbon b/toolchain/lower/testdata/class/convert.carbon index 9bf55ddb3cc6..69070a2d3191 100644 --- a/toolchain/lower/testdata/class/convert.carbon +++ b/toolchain/lower/testdata/class/convert.carbon @@ -28,7 +28,7 @@ fn DoIt() { // CHECK:STDOUT: ; ModuleID = 'convert.carbon' // CHECK:STDOUT: source_filename = "convert.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @IntWrapper.val.loc24_3.1 = internal constant { i32 } { i32 42 } +// CHECK:STDOUT: @IntWrapper.val.loc24_3 = internal constant { i32 } { i32 42 } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @"_CConvert.IntWrapper.Main:ImplicitAs.Core"(ptr %self) !dbg !4 { // CHECK:STDOUT: entry: @@ -47,7 +47,7 @@ fn DoIt() { // CHECK:STDOUT: %w.var = alloca { i32 }, align 8, !dbg !12 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %w.var), !dbg !12 // CHECK:STDOUT: %.loc24_31.3.n = getelementptr inbounds nuw { i32 }, ptr %w.var, i32 0, i32 0, !dbg !13 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %w.var, ptr align 4 @IntWrapper.val.loc24_3.1, i64 4, i1 false), !dbg !12 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %w.var, ptr align 4 @IntWrapper.val.loc24_3, i64 4, i1 false), !dbg !12 // CHECK:STDOUT: %Convert.call = call i32 @"_CConvert.IntWrapper.Main:ImplicitAs.Core"(ptr %w.var), !dbg !14 // CHECK:STDOUT: call void @_CConsume.Main(i32 %Convert.call), !dbg !15 // CHECK:STDOUT: ret void, !dbg !16 diff --git a/toolchain/lower/testdata/class/virtual.carbon b/toolchain/lower/testdata/class/virtual.carbon index d33d12240f1d..4acd5f76e60a 100644 --- a/toolchain/lower/testdata/class/virtual.carbon +++ b/toolchain/lower/testdata/class/virtual.carbon @@ -149,9 +149,9 @@ base class Base(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: @"_CIntermediate.Classes.$vtable" = external unnamed_addr constant ptr // CHECK:STDOUT: @"_CDerived.Classes.$vtable" = external unnamed_addr constant ptr -// CHECK:STDOUT: @Base.val.loc7_3.1 = internal constant {} zeroinitializer -// CHECK:STDOUT: @Intermediate.val.ec2.loc8_3.1 = internal constant { ptr, {} } { ptr @"_CIntermediate.Classes.$vtable", {} zeroinitializer } -// CHECK:STDOUT: @Derived.val.loc9_3.1 = internal constant { { ptr, {} } } { { ptr, {} } { ptr @"_CDerived.Classes.$vtable", {} zeroinitializer } } +// CHECK:STDOUT: @Base.val.loc7_3 = internal constant {} zeroinitializer +// CHECK:STDOUT: @Intermediate.val.ec2.loc8_3 = internal constant { ptr, {} } { ptr @"_CIntermediate.Classes.$vtable", {} zeroinitializer } +// CHECK:STDOUT: @Derived.val.loc9_3 = internal constant { { ptr, {} } } { { ptr, {} } { ptr @"_CDerived.Classes.$vtable", {} zeroinitializer } } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CCreate.Create() !dbg !4 { // CHECK:STDOUT: entry: @@ -160,16 +160,16 @@ base class Base(T:! type) { // CHECK:STDOUT: %d.var = alloca { { ptr, {} } }, align 8, !dbg !9 // CHECK:STDOUT: %d2.var = alloca { { ptr, {} } }, align 8, !dbg !10 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %b.var), !dbg !7 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %b.var, ptr align 1 @Base.val.loc7_3.1, i64 0, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %b.var, ptr align 1 @Base.val.loc7_3, i64 0, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %i.var), !dbg !8 // CHECK:STDOUT: %.loc8_44.2.vptr = getelementptr inbounds nuw { ptr, {} }, ptr %i.var, i32 0, i32 0, !dbg !11 // CHECK:STDOUT: %.loc8_44.4.base = getelementptr inbounds nuw { ptr, {} }, ptr %i.var, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %i.var, ptr align 8 @Intermediate.val.ec2.loc8_3.1, i64 8, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %i.var, ptr align 8 @Intermediate.val.ec2.loc8_3, i64 8, i1 false), !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %d.var), !dbg !9 // CHECK:STDOUT: %.loc9_49.2.base = getelementptr inbounds nuw { { ptr, {} } }, ptr %d.var, i32 0, i32 0, !dbg !12 // CHECK:STDOUT: %.loc9_48.2.vptr = getelementptr inbounds nuw { ptr, {} }, ptr %.loc9_49.2.base, i32 0, i32 0, !dbg !13 // CHECK:STDOUT: %.loc9_48.4.base = getelementptr inbounds nuw { ptr, {} }, ptr %.loc9_49.2.base, i32 0, i32 1, !dbg !13 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %d.var, ptr align 8 @Derived.val.loc9_3.1, i64 8, i1 false), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %d.var, ptr align 8 @Derived.val.loc9_3, i64 8, i1 false), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %d2.var), !dbg !10 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } @@ -228,7 +228,7 @@ base class Base(T:! type) { // CHECK:STDOUT: source_filename = "member_init.carbon" // CHECK:STDOUT: // CHECK:STDOUT: @"_CBase.MemberInit.$vtable" = unnamed_addr constant [1 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @_CFn.Base.MemberInit to i64), i64 ptrtoint (ptr @"_CBase.MemberInit.$vtable" to i64)) to i32)] -// CHECK:STDOUT: @Base.val.loc13_3.1 = internal constant { ptr, i32 } { ptr @"_CBase.MemberInit.$vtable", i32 3 } +// CHECK:STDOUT: @Base.val.loc13_3 = internal constant { ptr, i32 } { ptr @"_CBase.MemberInit.$vtable", i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CFn.Base.MemberInit(ptr %self) !dbg !4 { // CHECK:STDOUT: entry: @@ -253,8 +253,7 @@ base class Base(T:! type) { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 16, ptr %u.var), !dbg !11 // CHECK:STDOUT: %.loc13_24.2.vptr = getelementptr inbounds nuw { ptr, i32 }, ptr %u.var, i32 0, i32 0, !dbg !15 // CHECK:STDOUT: %.loc13_24.5.m = getelementptr inbounds nuw { ptr, i32 }, ptr %u.var, i32 0, i32 1, !dbg !15 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %u.var, ptr align 8 @Base.val.loc13_3.1, i64 16, i1 false), !dbg !11 -// CHECK:STDOUT: %.loc10_3.2 = load i32, ptr %i.var, align 4, !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %u.var, ptr align 8 @Base.val.loc13_3, i64 16, i1 false), !dbg !11 // CHECK:STDOUT: ret void, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -295,7 +294,7 @@ base class Base(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: @"_CBase.Main.$vtable" = unnamed_addr constant [1 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @_CF.Base.Main to i64), i64 ptrtoint (ptr @"_CBase.Main.$vtable" to i64)) to i32)] // CHECK:STDOUT: @"_CDerived.Main.$vtable" = unnamed_addr constant [1 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @_CF.Base.Main to i64), i64 ptrtoint (ptr @"_CDerived.Main.$vtable" to i64)) to i32)] -// CHECK:STDOUT: @Derived.val.loc13_3.1 = internal constant { { ptr } } { { ptr } { ptr @"_CDerived.Main.$vtable" } } +// CHECK:STDOUT: @Derived.val.loc13_3 = internal constant { { ptr } } { { ptr } { ptr @"_CDerived.Main.$vtable" } } // CHECK:STDOUT: // CHECK:STDOUT: declare void @_CF.Base.Main(ptr) // CHECK:STDOUT: @@ -305,7 +304,7 @@ base class Base(T:! type) { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %v.var), !dbg !7 // CHECK:STDOUT: %.loc13_32.2.base = getelementptr inbounds nuw { { ptr } }, ptr %v.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %.loc13_31.2.vptr = getelementptr inbounds nuw { ptr }, ptr %.loc13_32.2.base, i32 0, i32 0, !dbg !9 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %v.var, ptr align 8 @Derived.val.loc13_3.1, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %v.var, ptr align 8 @Derived.val.loc13_3, i64 8, i1 false), !dbg !7 // CHECK:STDOUT: ret void, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -369,7 +368,7 @@ base class Base(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: @"_CBase.Main.$vtable" = unnamed_addr constant [1 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @_CF.Base.Main to i64), i64 ptrtoint (ptr @"_CBase.Main.$vtable" to i64)) to i32)] // CHECK:STDOUT: @"_CDerived.Main.$vtable" = unnamed_addr constant [1 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @_CF.Derived.Main to i64), i64 ptrtoint (ptr @"_CDerived.Main.$vtable" to i64)) to i32)] -// CHECK:STDOUT: @Derived.val.loc14_3.1 = internal constant { { ptr } } { { ptr } { ptr @"_CDerived.Main.$vtable" } } +// CHECK:STDOUT: @Derived.val.loc14_3 = internal constant { { ptr } } { { ptr } { ptr @"_CDerived.Main.$vtable" } } // CHECK:STDOUT: // CHECK:STDOUT: declare void @_CF.Base.Main(ptr) // CHECK:STDOUT: @@ -381,7 +380,7 @@ base class Base(T:! type) { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %v.var), !dbg !7 // CHECK:STDOUT: %.loc14_32.2.base = getelementptr inbounds nuw { { ptr } }, ptr %v.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %.loc14_31.2.vptr = getelementptr inbounds nuw { ptr }, ptr %.loc14_32.2.base, i32 0, i32 0, !dbg !9 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %v.var, ptr align 8 @Derived.val.loc14_3.1, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %v.var, ptr align 8 @Derived.val.loc14_3, i64 8, i1 false), !dbg !7 // CHECK:STDOUT: %F.call.vtable = load ptr, ptr %v.var, align 8, !dbg !10 // CHECK:STDOUT: %F.call = call ptr @llvm.load.relative.i32(ptr %F.call.vtable, i32 0), !dbg !10 // CHECK:STDOUT: call void %F.call(ptr %v.var), !dbg !10 diff --git a/toolchain/lower/testdata/for/bindings.carbon b/toolchain/lower/testdata/for/bindings.carbon index 51861e0b134a..1bc71b627b01 100644 --- a/toolchain/lower/testdata/for/bindings.carbon +++ b/toolchain/lower/testdata/for/bindings.carbon @@ -32,7 +32,7 @@ fn For() { // CHECK:STDOUT: ; ModuleID = 'bindings.carbon' // CHECK:STDOUT: source_filename = "bindings.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @EmptyRange.val.loc25_3.1 = internal constant {} zeroinitializer +// CHECK:STDOUT: @EmptyRange.val.loc25_3 = internal constant {} zeroinitializer // CHECK:STDOUT: // CHECK:STDOUT: declare void @_CF.Main(i32, ptr) // CHECK:STDOUT: @@ -44,7 +44,7 @@ fn For() { // CHECK:STDOUT: %n.var = alloca i32, align 4, !dbg !9 // CHECK:STDOUT: %.loc27_33.8.temp = alloca { i32, i32 }, align 8, !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %r.var), !dbg !7 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %r.var, ptr align 1 @EmptyRange.val.loc25_3.1, i64 0, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %r.var, ptr align 1 @EmptyRange.val.loc25_3, i64 0, i1 false), !dbg !7 // CHECK:STDOUT: call void @"_CNewCursor.EmptyRange.Main:Iterate.Core.29d34654e802e24e"(ptr %r.var), !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %var), !dbg !8 // CHECK:STDOUT: br label %for.next, !dbg !8 @@ -59,25 +59,15 @@ fn For() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %n.var), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc27_33.8.temp), !dbg !8 // CHECK:STDOUT: call void @_CGet.Optional.Core.29d34654e802e24e(ptr %.loc27_33.8.temp, ptr %.loc27_33.1.temp), !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc27_33.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc27_33.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc27_33.11 = load i32, ptr %tuple.elem0.loc27_33.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %.loc27_33.12 = load i32, ptr %tuple.elem1.loc27_33.1.tuple.elem, align 4, !dbg !8 +// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 0, !dbg !8 +// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 1, !dbg !8 +// CHECK:STDOUT: %.loc27_33.11 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !8 +// CHECK:STDOUT: %.loc27_33.12 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !8 // CHECK:STDOUT: store i32 %.loc27_33.12, ptr %n.var, align 4, !dbg !9 // CHECK:STDOUT: call void @_CF.Main(i32 %.loc27_33.11, ptr %n.var), !dbg !10 // CHECK:STDOUT: br label %for.next, !dbg !11 // CHECK:STDOUT: // CHECK:STDOUT: for.done: ; preds = %for.next -// CHECK:STDOUT: %tuple.elem0.loc27_33.2.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc27_33.13 = load i32, ptr %tuple.elem0.loc27_33.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc27_33.2.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc27_33.14 = load i32, ptr %tuple.elem1.loc27_33.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple = alloca { i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple1 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc27_33.13, ptr %tuple1, align 4, !dbg !8 -// CHECK:STDOUT: %tuple2 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc27_33.14, ptr %tuple2, align 4, !dbg !8 -// CHECK:STDOUT: %.loc27_17 = load i32, ptr %n.var, align 4, !dbg !9 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/for/break_continue.carbon b/toolchain/lower/testdata/for/break_continue.carbon index b9419e4684cf..50cf26e88203 100644 --- a/toolchain/lower/testdata/for/break_continue.carbon +++ b/toolchain/lower/testdata/for/break_continue.carbon @@ -69,7 +69,6 @@ fn For() { // CHECK:STDOUT: br label %for.next, !dbg !16 // CHECK:STDOUT: // CHECK:STDOUT: for.done: ; preds = %if.then.loc19, %for.next -// CHECK:STDOUT: %.loc18_33.12 = load i32, ptr %var, align 4, !dbg !8 // CHECK:STDOUT: ret void, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/for/for.carbon b/toolchain/lower/testdata/for/for.carbon index 4d815d862677..bc4030a0f7cf 100644 --- a/toolchain/lower/testdata/for/for.carbon +++ b/toolchain/lower/testdata/for/for.carbon @@ -57,7 +57,6 @@ fn For() { // CHECK:STDOUT: // CHECK:STDOUT: for.done: ; preds = %for.next // CHECK:STDOUT: call void @_CH.Main(), !dbg !12 -// CHECK:STDOUT: %.loc19_33.12 = load i32, ptr %var, align 4, !dbg !8 // CHECK:STDOUT: ret void, !dbg !13 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/call/i32.carbon b/toolchain/lower/testdata/function/call/i32.carbon index 529809aa1dd4..80d5914bff63 100644 --- a/toolchain/lower/testdata/function/call/i32.carbon +++ b/toolchain/lower/testdata/function/call/i32.carbon @@ -32,7 +32,6 @@ fn Main() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %b.var), !dbg !9 // CHECK:STDOUT: %Echo.call = call i32 @_CEcho.Main(i32 1), !dbg !10 // CHECK:STDOUT: store i32 %Echo.call, ptr %b.var, align 4, !dbg !9 -// CHECK:STDOUT: %.loc18_3 = load i32, ptr %b.var, align 4, !dbg !9 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon b/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon index a4090ea3559e..97045f5eb2d1 100644 --- a/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon +++ b/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon @@ -44,19 +44,6 @@ fn Main() { // CHECK:STDOUT: %.loc18_21.1.temp = alloca { i32, i32, i32 }, align 8, !dbg !13 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %.loc18_21.1.temp), !dbg !13 // CHECK:STDOUT: call void @_CF.Main(ptr %.loc18_21.1.temp, { i32 } { i32 1 }, ptr @tuple.11a.loc18_20.6), !dbg !13 -// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc18_21.1.temp, i32 0, i32 0, !dbg !13 -// CHECK:STDOUT: %.loc18_21.3 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !13 -// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc18_21.1.temp, i32 0, i32 1, !dbg !13 -// CHECK:STDOUT: %.loc18_21.4 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !13 -// CHECK:STDOUT: %tuple.elem2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc18_21.1.temp, i32 0, i32 2, !dbg !13 -// CHECK:STDOUT: %.loc18_21.5 = load i32, ptr %tuple.elem2.tuple.elem, align 4, !dbg !13 -// CHECK:STDOUT: %tuple.loc18_21 = alloca { i32, i32, i32 }, align 8, !dbg !13 -// CHECK:STDOUT: %tuple.loc18_211 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc18_21, i32 0, i32 0, !dbg !13 -// CHECK:STDOUT: store i32 %.loc18_21.3, ptr %tuple.loc18_211, align 4, !dbg !13 -// CHECK:STDOUT: %tuple.loc18_212 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc18_21, i32 0, i32 1, !dbg !13 -// CHECK:STDOUT: store i32 %.loc18_21.4, ptr %tuple.loc18_212, align 4, !dbg !13 -// CHECK:STDOUT: %tuple.loc18_213 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc18_21, i32 0, i32 2, !dbg !13 -// CHECK:STDOUT: store i32 %.loc18_21.5, ptr %tuple.loc18_213, align 4, !dbg !13 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/call/var_param.carbon b/toolchain/lower/testdata/function/call/var_param.carbon index 5532e2b7646a..9cce2bd59a64 100644 --- a/toolchain/lower/testdata/function/call/var_param.carbon +++ b/toolchain/lower/testdata/function/call/var_param.carbon @@ -32,7 +32,6 @@ fn Main() { // CHECK:STDOUT: store i32 0, ptr %a.var, align 4, !dbg !9 // CHECK:STDOUT: %.loc17 = load i32, ptr %a.var, align 4, !dbg !10 // CHECK:STDOUT: call void @_CDoNothing.Main(i32 %.loc17), !dbg !11 -// CHECK:STDOUT: %.loc16_3.2 = load i32, ptr %a.var, align 4, !dbg !9 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call.carbon b/toolchain/lower/testdata/function/generic/call.carbon index 901e03cfe955..9cda80f7df75 100644 --- a/toolchain/lower/testdata/function/generic/call.carbon +++ b/toolchain/lower/testdata/function/generic/call.carbon @@ -34,8 +34,8 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: %type = type {} // CHECK:STDOUT: -// CHECK:STDOUT: @C.val.loc20_3.1 = internal constant {} zeroinitializer -// CHECK:STDOUT: @D.val.loc21_3.1 = internal constant {} zeroinitializer +// CHECK:STDOUT: @C.val.loc20_3 = internal constant {} zeroinitializer +// CHECK:STDOUT: @D.val.loc21_3 = internal constant {} zeroinitializer // CHECK:STDOUT: // CHECK:STDOUT: define void @_CG.Main() !dbg !4 { // CHECK:STDOUT: entry: @@ -44,9 +44,9 @@ fn G() { // CHECK:STDOUT: %n.var = alloca i32, align 4, !dbg !9 // CHECK:STDOUT: %m.var = alloca double, align 8, !dbg !10 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !7 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c.var, ptr align 1 @C.val.loc20_3.1, i64 0, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c.var, ptr align 1 @C.val.loc20_3, i64 0, i1 false), !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %d.var), !dbg !8 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %d.var, ptr align 1 @D.val.loc21_3.1, i64 0, i1 false), !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %d.var, ptr align 1 @D.val.loc21_3, i64 0, i1 false), !dbg !8 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %n.var), !dbg !9 // CHECK:STDOUT: store i32 0, ptr %n.var, align 4, !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %m.var), !dbg !10 @@ -58,8 +58,6 @@ fn G() { // CHECK:STDOUT: %.loc28 = load double, ptr %m.var, align 8, !dbg !15 // CHECK:STDOUT: call void @_CF.Main.66be507887ceee78(double %.loc28), !dbg !16 // CHECK:STDOUT: call void @_CF.Main.5754c7a55c7cbe4a(%type zeroinitializer), !dbg !17 -// CHECK:STDOUT: %.loc23_3 = load double, ptr %m.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc22_3.2 = load i32, ptr %n.var, align 4, !dbg !9 // CHECK:STDOUT: ret void, !dbg !18 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_basic.carbon b/toolchain/lower/testdata/function/generic/call_basic.carbon index 0b8ba920b351..0a9525b63a29 100644 --- a/toolchain/lower/testdata/function/generic/call_basic.carbon +++ b/toolchain/lower/testdata/function/generic/call_basic.carbon @@ -81,10 +81,6 @@ fn M() { // CHECK:STDOUT: %.loc54 = load double, ptr %p.var, align 8, !dbg !18 // CHECK:STDOUT: %G.call.loc54 = call double @_CG.Main.66be507887ceee78(double %.loc54), !dbg !19 // CHECK:STDOUT: store double %G.call.loc54, ptr %q.var, align 8, !dbg !20 -// CHECK:STDOUT: %.loc49_3 = load double, ptr %q.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc48_3 = load double, ptr %p.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc47_3 = load i32, ptr %m.var, align 4, !dbg !8 -// CHECK:STDOUT: %.loc46_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !21 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_basic_depth.carbon b/toolchain/lower/testdata/function/generic/call_basic_depth.carbon index f24f05fd0da8..704963df661b 100644 --- a/toolchain/lower/testdata/function/generic/call_basic_depth.carbon +++ b/toolchain/lower/testdata/function/generic/call_basic_depth.carbon @@ -50,8 +50,6 @@ fn M() { // CHECK:STDOUT: %.loc35 = load i32, ptr %n.var, align 4, !dbg !11 // CHECK:STDOUT: %G.call = call i32 @_CG.Main.b88d1103f417c6d4(i32 %.loc35), !dbg !12 // CHECK:STDOUT: store i32 %G.call, ptr %m.var, align 4, !dbg !13 -// CHECK:STDOUT: %.loc32_3 = load i32, ptr %m.var, align 4, !dbg !8 -// CHECK:STDOUT: %.loc31_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_dedup_ptr.carbon b/toolchain/lower/testdata/function/generic/call_dedup_ptr.carbon index ca96e80db515..5497cd990ea0 100644 --- a/toolchain/lower/testdata/function/generic/call_dedup_ptr.carbon +++ b/toolchain/lower/testdata/function/generic/call_dedup_ptr.carbon @@ -43,9 +43,6 @@ fn M() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i8.var), !dbg !9 // CHECK:STDOUT: %.loc26 = load ptr, ptr %ptr_i8.var, align 8, !dbg !14 // CHECK:STDOUT: %F.call.loc26 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc26), !dbg !15 -// CHECK:STDOUT: %.loc25_3 = load ptr, ptr %ptr_i8.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc23_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc21_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !7 // CHECK:STDOUT: ret void, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_deref_ptr.carbon b/toolchain/lower/testdata/function/generic/call_deref_ptr.carbon index a8157ad7b9c0..8a389a110f15 100644 --- a/toolchain/lower/testdata/function/generic/call_deref_ptr.carbon +++ b/toolchain/lower/testdata/function/generic/call_deref_ptr.carbon @@ -56,8 +56,6 @@ fn M() { // CHECK:STDOUT: call void @_CF.Main.b88d1103f417c6d4(ptr %.loc39), !dbg !10 // CHECK:STDOUT: %.loc40 = load ptr, ptr %ptr_f64.var, align 8, !dbg !11 // CHECK:STDOUT: call void @_CF.Main.66be507887ceee78(ptr %.loc40), !dbg !12 -// CHECK:STDOUT: %.loc37_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc36_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !7 // CHECK:STDOUT: ret void, !dbg !13 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon b/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon index 3b15e17af4c2..160137c6aa5d 100644 --- a/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon +++ b/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon @@ -52,7 +52,6 @@ fn H() { // CHECK:STDOUT: entry: // CHECK:STDOUT: %x.var = alloca i1, align 1, !dbg !11 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 1, ptr %x.var), !dbg !11 -// CHECK:STDOUT: %.loc23_3.1 = load i1, ptr %x.var, align 1, !dbg !11 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -60,7 +59,6 @@ fn H() { // CHECK:STDOUT: entry: // CHECK:STDOUT: %x.var = alloca i32, align 4, !dbg !14 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %x.var), !dbg !14 -// CHECK:STDOUT: %.loc23_3.1 = load i32, ptr %x.var, align 4, !dbg !14 // CHECK:STDOUT: ret void, !dbg !15 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_different_specific.carbon b/toolchain/lower/testdata/function/generic/call_different_specific.carbon index 74c038f211b4..e257886e5793 100644 --- a/toolchain/lower/testdata/function/generic/call_different_specific.carbon +++ b/toolchain/lower/testdata/function/generic/call_different_specific.carbon @@ -61,8 +61,6 @@ fn M() { // CHECK:STDOUT: call void @_CF.Main.b88d1103f417c6d4(ptr %.loc44), !dbg !10 // CHECK:STDOUT: %.loc45 = load ptr, ptr %ptr_f64.var, align 8, !dbg !11 // CHECK:STDOUT: call void @_CF.Main.66be507887ceee78(ptr %.loc45), !dbg !12 -// CHECK:STDOUT: %.loc42_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc41_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !7 // CHECK:STDOUT: ret void, !dbg !13 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon b/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon index 49b226164ec2..b0248c20821b 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_basic.carbon @@ -60,10 +60,6 @@ fn M() { // CHECK:STDOUT: %F.call.loc30 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc30_5, i32 0), !dbg !16 // CHECK:STDOUT: %.loc31_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17 // CHECK:STDOUT: %F.call.loc31 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc31_5, i32 0), !dbg !18 -// CHECK:STDOUT: %.loc26_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc25_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc24_3 = load double, ptr %m.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc23_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon b/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon index dff137f2f61c..e7624a1d0538 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon @@ -79,10 +79,6 @@ fn M() { // CHECK:STDOUT: %A.call.loc53 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc53_5, i32 0), !dbg !16 // CHECK:STDOUT: %.loc54_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17 // CHECK:STDOUT: %A.call.loc54 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc54_5, i32 0), !dbg !18 -// CHECK:STDOUT: %.loc49_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc48_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc47_3 = load double, ptr %m.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc46_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon b/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon index 332ce1fd9c8a..72e95a28764f 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon @@ -62,10 +62,6 @@ fn M() { // CHECK:STDOUT: %F.call.loc38 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc38_5, i32 0), !dbg !16 // CHECK:STDOUT: %.loc39_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17 // CHECK:STDOUT: %F.call.loc39 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc39_5, i32 0), !dbg !18 -// CHECK:STDOUT: %.loc34_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc33_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc32_3 = load double, ptr %m.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc31_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon b/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon index 76d136ba0082..facd1949389d 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon @@ -43,9 +43,6 @@ fn M() { // CHECK:STDOUT: %.loc26_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !13 // CHECK:STDOUT: %.loc26_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !14 // CHECK:STDOUT: %F.call.loc26 = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %.loc26_5, ptr %.loc26_14, i32 0), !dbg !15 -// CHECK:STDOUT: %.loc23_3 = load ptr, ptr %ptr_bool.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc22_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc21_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !7 // CHECK:STDOUT: ret void, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon b/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon index 0046458ac2d8..fdb967af63bf 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon @@ -121,15 +121,6 @@ fn M() { // CHECK:STDOUT: %.loc50_15 = load ptr, ptr %ptr_bool.var, align 8, !dbg !61 // CHECK:STDOUT: %.loc50_25 = load ptr, ptr %ptr_bool.var, align 8, !dbg !62 // CHECK:STDOUT: %F.call.loc50 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc50_5, ptr %.loc50_15, ptr %.loc50_25, i32 0), !dbg !63 -// CHECK:STDOUT: %.loc30_3 = load ptr, ptr %ptr_bool.var, align 8, !dbg !15 -// CHECK:STDOUT: %.loc29_3 = load ptr, ptr %ptr_i64.var, align 8, !dbg !14 -// CHECK:STDOUT: %.loc28_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !13 -// CHECK:STDOUT: %.loc27_3 = load ptr, ptr %ptr_i16.var, align 8, !dbg !12 -// CHECK:STDOUT: %.loc25_3 = load i1, ptr %val_bool.var, align 1, !dbg !11 -// CHECK:STDOUT: %.loc24_3 = load double, ptr %val_f64.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc23_3 = load i64, ptr %val_i64.var, align 4, !dbg !9 -// CHECK:STDOUT: %.loc22_3 = load i32, ptr %val_i32.var, align 4, !dbg !8 -// CHECK:STDOUT: %.loc21_3 = load i16, ptr %val_i16.var, align 2, !dbg !7 // CHECK:STDOUT: ret void, !dbg !64 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon b/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon index 711068efb1d3..ca47e56a472c 100644 --- a/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon +++ b/toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon @@ -106,10 +106,6 @@ fn M() { // CHECK:STDOUT: %A.call.loc79 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc79_5, i32 0), !dbg !16 // CHECK:STDOUT: %.loc80_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17 // CHECK:STDOUT: %A.call.loc80 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc80_5, i32 0), !dbg !18 -// CHECK:STDOUT: %.loc75_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !10 -// CHECK:STDOUT: %.loc74_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc73_3 = load double, ptr %m.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc72_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon b/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon index ebff41ae467d..a221460893b6 100644 --- a/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon +++ b/toolchain/lower/testdata/function/generic/call_specific_in_class.carbon @@ -76,11 +76,6 @@ fn M() { // CHECK:STDOUT: %F.call.loc42 = call double @_CF.Main.66be507887ceee78(double %.loc42), !dbg !22 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !12 // CHECK:STDOUT: %F.call.loc44 = call %type @_CF.Main.5754c7a55c7cbe4a(%type zeroinitializer), !dbg !23 -// CHECK:STDOUT: %.loc41_3 = load double, ptr %var_f64.var, align 8, !dbg !11 -// CHECK:STDOUT: %.loc39_3.2 = load i32, ptr %var_i32.var, align 4, !dbg !10 -// CHECK:STDOUT: %.loc37_3 = load ptr, ptr %ptr_i8.var, align 8, !dbg !9 -// CHECK:STDOUT: %.loc35_3 = load ptr, ptr %ptr_f64.var, align 8, !dbg !8 -// CHECK:STDOUT: %.loc33_3 = load ptr, ptr %ptr_i32.var, align 8, !dbg !7 // CHECK:STDOUT: ret void, !dbg !24 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/index/array_element_access.carbon b/toolchain/lower/testdata/index/array_element_access.carbon index 79b7336f4f96..cd0865bda910 100644 --- a/toolchain/lower/testdata/index/array_element_access.carbon +++ b/toolchain/lower/testdata/index/array_element_access.carbon @@ -53,12 +53,12 @@ fn Run() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %a.var), !dbg !13 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc17_28.1.temp), !dbg !14 // CHECK:STDOUT: call void @_CA.Main(ptr %.loc17_28.1.temp), !dbg !14 -// CHECK:STDOUT: %tuple.elem0.loc17_28.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc17_28.1.temp, i32 0, i32 0, !dbg !14 -// CHECK:STDOUT: %.loc17_28.3 = load i32, ptr %tuple.elem0.loc17_28.1.tuple.elem, align 4, !dbg !14 +// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc17_28.1.temp, i32 0, i32 0, !dbg !14 +// CHECK:STDOUT: %.loc17_28.3 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !14 // CHECK:STDOUT: %.loc17_28.4.array.index = getelementptr inbounds [2 x i32], ptr %a.var, i32 0, i64 0, !dbg !14 // CHECK:STDOUT: store i32 %.loc17_28.3, ptr %.loc17_28.4.array.index, align 4, !dbg !14 -// CHECK:STDOUT: %tuple.elem1.loc17_28.1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc17_28.1.temp, i32 0, i32 1, !dbg !14 -// CHECK:STDOUT: %.loc17_28.6 = load i32, ptr %tuple.elem1.loc17_28.1.tuple.elem, align 4, !dbg !14 +// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc17_28.1.temp, i32 0, i32 1, !dbg !14 +// CHECK:STDOUT: %.loc17_28.6 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !14 // CHECK:STDOUT: %.loc17_28.7.array.index = getelementptr inbounds [2 x i32], ptr %a.var, i32 0, i64 1, !dbg !14 // CHECK:STDOUT: store i32 %.loc17_28.6, ptr %.loc17_28.7.array.index, align 4, !dbg !14 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %b.var), !dbg !15 @@ -74,18 +74,6 @@ fn Run() { // CHECK:STDOUT: %.loc20_21.1.array.index = getelementptr inbounds [2 x i32], ptr %.loc20_18.1.temp, i32 0, i32 1, !dbg !18 // CHECK:STDOUT: %.loc20_21.2 = load i32, ptr %.loc20_21.1.array.index, align 4, !dbg !18 // CHECK:STDOUT: store i32 %.loc20_21.2, ptr %d.var, align 4, !dbg !17 -// CHECK:STDOUT: %.loc20_3 = load i32, ptr %d.var, align 4, !dbg !17 -// CHECK:STDOUT: %.loc19_3 = load i32, ptr %c.var, align 4, !dbg !16 -// CHECK:STDOUT: %.loc18_3.2 = load i32, ptr %b.var, align 4, !dbg !15 -// CHECK:STDOUT: %tuple.elem0.loc17_28.2.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc17_28.1.temp, i32 0, i32 0, !dbg !14 -// CHECK:STDOUT: %.loc17_28.10 = load i32, ptr %tuple.elem0.loc17_28.2.tuple.elem, align 4, !dbg !14 -// CHECK:STDOUT: %tuple.elem1.loc17_28.2.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc17_28.1.temp, i32 0, i32 1, !dbg !14 -// CHECK:STDOUT: %.loc17_28.11 = load i32, ptr %tuple.elem1.loc17_28.2.tuple.elem, align 4, !dbg !14 -// CHECK:STDOUT: %tuple = alloca { i32, i32 }, align 8, !dbg !14 -// CHECK:STDOUT: %tuple1 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 0, !dbg !14 -// CHECK:STDOUT: store i32 %.loc17_28.10, ptr %tuple1, align 4, !dbg !14 -// CHECK:STDOUT: %tuple2 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 1, !dbg !14 -// CHECK:STDOUT: store i32 %.loc17_28.11, ptr %tuple2, align 4, !dbg !14 // CHECK:STDOUT: ret void, !dbg !21 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/operators/assignment.carbon b/toolchain/lower/testdata/operators/assignment.carbon index a03109bb1afe..e1131fe4d8fd 100644 --- a/toolchain/lower/testdata/operators/assignment.carbon +++ b/toolchain/lower/testdata/operators/assignment.carbon @@ -30,19 +30,9 @@ fn Main() { // CHECK:STDOUT: store i32 12, ptr %a.var, align 4, !dbg !7 // CHECK:STDOUT: store i32 9, ptr %a.var, align 4, !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %b.var), !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !10 -// CHECK:STDOUT: %tuple.elem1.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !10 +// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !10 +// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !10 // CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.loc17_5, i64 8, i1 false), !dbg !11 -// CHECK:STDOUT: %tuple.elem0.loc16.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_3.1 = load i32, ptr %tuple.elem0.loc16.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_3.2 = load i32, ptr %tuple.elem1.loc16.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple = alloca { i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple1 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_3.1, ptr %tuple1, align 4, !dbg !8 -// CHECK:STDOUT: %tuple2 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_3.2, ptr %tuple2, align 4, !dbg !8 -// CHECK:STDOUT: %.loc14_3.2 = load i32, ptr %a.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/operators/increment.carbon b/toolchain/lower/testdata/operators/increment.carbon index c67b60fb8ebb..e8da4bf042ca 100644 --- a/toolchain/lower/testdata/operators/increment.carbon +++ b/toolchain/lower/testdata/operators/increment.carbon @@ -28,7 +28,6 @@ fn IncrSigned() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %from.var), !dbg !7 // CHECK:STDOUT: store i32 0, ptr %from.var, align 4, !dbg !7 // CHECK:STDOUT: call void @"_COp.Int.Core:Inc.Core.be1e879c1ad406d8"(ptr %from.var), !dbg !8 -// CHECK:STDOUT: %.loc5_3.2 = load i32, ptr %from.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !9 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/pointer/address_of_field.carbon b/toolchain/lower/testdata/pointer/address_of_field.carbon index 503eb2c787cd..17534f7d1070 100644 --- a/toolchain/lower/testdata/pointer/address_of_field.carbon +++ b/toolchain/lower/testdata/pointer/address_of_field.carbon @@ -20,7 +20,7 @@ fn F() { // CHECK:STDOUT: ; ModuleID = 'address_of_field.carbon' // CHECK:STDOUT: source_filename = "address_of_field.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @struct.loc16_3.1 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @struct.loc16_3 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: declare void @_CG.Main(ptr) // CHECK:STDOUT: @@ -30,18 +30,9 @@ fn F() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %s.var), !dbg !7 // CHECK:STDOUT: %.loc16_46.3.a = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %.loc16_46.6.b = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %s.var, ptr align 4 @struct.loc16_3.1, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %s.var, ptr align 4 @struct.loc16_3, i64 8, i1 false), !dbg !7 // CHECK:STDOUT: %.loc17.b = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 1, !dbg !9 // CHECK:STDOUT: call void @_CG.Main(ptr %.loc17.b), !dbg !10 -// CHECK:STDOUT: %.loc16_3.2.a = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %.loc16_3.3 = load i32, ptr %.loc16_3.2.a, align 4, !dbg !7 -// CHECK:STDOUT: %.loc16_3.4.b = getelementptr inbounds nuw { i32, i32 }, ptr %s.var, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %.loc16_3.5 = load i32, ptr %.loc16_3.4.b, align 4, !dbg !7 -// CHECK:STDOUT: %struct = alloca { i32, i32 }, align 8, !dbg !7 -// CHECK:STDOUT: %struct1 = getelementptr inbounds nuw { i32, i32 }, ptr %struct, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.3, ptr %struct1, align 4, !dbg !7 -// CHECK:STDOUT: %struct2 = getelementptr inbounds nuw { i32, i32 }, ptr %struct, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.5, ptr %struct2, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/pointer/address_of_unused.carbon b/toolchain/lower/testdata/pointer/address_of_unused.carbon index 3c0270c2cd1a..94d3dbf5d2db 100644 --- a/toolchain/lower/testdata/pointer/address_of_unused.carbon +++ b/toolchain/lower/testdata/pointer/address_of_unused.carbon @@ -23,7 +23,6 @@ fn F() { // CHECK:STDOUT: %n.var = alloca i32, align 4, !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %n.var), !dbg !7 // CHECK:STDOUT: store i32 0, ptr %n.var, align 4, !dbg !7 -// CHECK:STDOUT: %.loc14_3.2 = load i32, ptr %n.var, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/struct/nested_struct_in_place.carbon b/toolchain/lower/testdata/struct/nested_struct_in_place.carbon index dd0de01b40d8..ec7f96a2d19f 100644 --- a/toolchain/lower/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/lower/testdata/struct/nested_struct_in_place.carbon @@ -29,65 +29,6 @@ fn G() { // CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_74.1.a), !dbg !9 // CHECK:STDOUT: %.loc16_74.2.b = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 1, !dbg !8 // CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_74.2.b), !dbg !10 -// CHECK:STDOUT: %tuple.elem0.loc16_74.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_74.2.b, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_74.5 = load i32, ptr %tuple.elem0.loc16_74.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16_74.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_74.2.b, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_74.6 = load i32, ptr %tuple.elem1.loc16_74.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc16_74.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_74.2.b, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc16_74.7 = load i32, ptr %tuple.elem2.loc16_74.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.1 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.11 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_74.1, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_74.5, ptr %tuple.loc16_74.11, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.12 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_74.1, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_74.6, ptr %tuple.loc16_74.12, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.13 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_74.1, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_74.7, ptr %tuple.loc16_74.13, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc16_74.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_74.1.a, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_74.9 = load i32, ptr %tuple.elem0.loc16_74.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16_74.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_74.1.a, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_74.10 = load i32, ptr %tuple.elem1.loc16_74.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc16_74.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_74.1.a, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc16_74.11 = load i32, ptr %tuple.elem2.loc16_74.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.2 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.24 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_74.2, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_74.9, ptr %tuple.loc16_74.24, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.25 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_74.2, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_74.10, ptr %tuple.loc16_74.25, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_74.26 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_74.2, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_74.11, ptr %tuple.loc16_74.26, align 4, !dbg !8 -// CHECK:STDOUT: %.loc16_3.2.a = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %tuple.elem0.loc16_3.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_3.2.a, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %.loc16_3.3 = load i32, ptr %tuple.elem0.loc16_3.1.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem1.loc16_3.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_3.2.a, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %.loc16_3.4 = load i32, ptr %tuple.elem1.loc16_3.1.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem2.loc16_3.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_3.2.a, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: %.loc16_3.5 = load i32, ptr %tuple.elem2.loc16_3.1.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.1 = alloca { i32, i32, i32 }, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.17 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.1, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.3, ptr %tuple.loc16_3.17, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.18 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.1, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.4, ptr %tuple.loc16_3.18, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.19 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.1, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.5, ptr %tuple.loc16_3.19, align 4, !dbg !7 -// CHECK:STDOUT: %.loc16_3.7.b = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %tuple.elem0.loc16_3.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_3.7.b, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %.loc16_3.8 = load i32, ptr %tuple.elem0.loc16_3.2.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem1.loc16_3.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_3.7.b, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %.loc16_3.9 = load i32, ptr %tuple.elem1.loc16_3.2.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem2.loc16_3.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %.loc16_3.7.b, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: %.loc16_3.10 = load i32, ptr %tuple.elem2.loc16_3.2.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.2 = alloca { i32, i32, i32 }, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.210 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.2, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.8, ptr %tuple.loc16_3.210, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.211 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.2, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.9, ptr %tuple.loc16_3.211, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.212 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.2, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.10, ptr %tuple.loc16_3.212, align 4, !dbg !7 -// CHECK:STDOUT: %struct = alloca { ptr, ptr }, align 8, !dbg !7 -// CHECK:STDOUT: %struct13 = getelementptr inbounds nuw { ptr, ptr }, ptr %struct, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store ptr %tuple.loc16_3.1, ptr %struct13, align 8, !dbg !7 -// CHECK:STDOUT: %struct14 = getelementptr inbounds nuw { ptr, ptr }, ptr %struct, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store ptr %tuple.loc16_3.2, ptr %struct14, align 8, !dbg !7 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/tuple/access/return_value_access.carbon b/toolchain/lower/testdata/tuple/access/return_value_access.carbon index 735f8026eba6..fcf6b505b285 100644 --- a/toolchain/lower/testdata/tuple/access/return_value_access.carbon +++ b/toolchain/lower/testdata/tuple/access/return_value_access.carbon @@ -36,19 +36,9 @@ fn Run() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %t.var), !dbg !10 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc16_18.1.temp), !dbg !11 // CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_18.1.temp), !dbg !11 -// CHECK:STDOUT: %tuple.elem1.loc16_19.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_18.1.temp, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: %.loc16_19 = load i32, ptr %tuple.elem1.loc16_19.tuple.elem, align 4, !dbg !11 +// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_18.1.temp, i32 0, i32 1, !dbg !11 +// CHECK:STDOUT: %.loc16_19 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !11 // CHECK:STDOUT: store i32 %.loc16_19, ptr %t.var, align 4, !dbg !10 -// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_18.1.temp, i32 0, i32 0, !dbg !11 -// CHECK:STDOUT: %.loc16_18.3 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !11 -// CHECK:STDOUT: %tuple.elem1.loc16_18.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc16_18.1.temp, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: %.loc16_18.4 = load i32, ptr %tuple.elem1.loc16_18.tuple.elem, align 4, !dbg !11 -// CHECK:STDOUT: %tuple = alloca { i32, i32 }, align 8, !dbg !11 -// CHECK:STDOUT: %tuple1 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 0, !dbg !11 -// CHECK:STDOUT: store i32 %.loc16_18.3, ptr %tuple1, align 4, !dbg !11 -// CHECK:STDOUT: %tuple2 = getelementptr inbounds nuw { i32, i32 }, ptr %tuple, i32 0, i32 1, !dbg !11 -// CHECK:STDOUT: store i32 %.loc16_18.4, ptr %tuple2, align 4, !dbg !11 -// CHECK:STDOUT: %.loc16_3 = load i32, ptr %t.var, align 4, !dbg !10 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/tuple/nested_tuple_in_place.carbon b/toolchain/lower/testdata/tuple/nested_tuple_in_place.carbon index 348dbc4c3760..57455ea00107 100644 --- a/toolchain/lower/testdata/tuple/nested_tuple_in_place.carbon +++ b/toolchain/lower/testdata/tuple/nested_tuple_in_place.carbon @@ -25,69 +25,10 @@ fn G() { // CHECK:STDOUT: entry: // CHECK:STDOUT: %v.var = alloca { { i32, i32, i32 }, { i32, i32, i32 } }, align 8, !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 24, ptr %v.var), !dbg !7 -// CHECK:STDOUT: %tuple.elem0.loc16_56.1.tuple.elem = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: call void @_CF.Main(ptr %tuple.elem0.loc16_56.1.tuple.elem), !dbg !9 -// CHECK:STDOUT: %tuple.elem1.loc16_56.1.tuple.elem = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: call void @_CF.Main(ptr %tuple.elem1.loc16_56.1.tuple.elem), !dbg !10 -// CHECK:STDOUT: %tuple.elem0.loc16_56.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem1.loc16_56.1.tuple.elem, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_56.3 = load i32, ptr %tuple.elem0.loc16_56.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16_56.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem1.loc16_56.1.tuple.elem, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_56.4 = load i32, ptr %tuple.elem1.loc16_56.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc16_56.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem1.loc16_56.1.tuple.elem, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc16_56.5 = load i32, ptr %tuple.elem2.loc16_56.1.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.1 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.11 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_56.1, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_56.3, ptr %tuple.loc16_56.11, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.12 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_56.1, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_56.4, ptr %tuple.loc16_56.12, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.13 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_56.1, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_56.5, ptr %tuple.loc16_56.13, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc16_56.3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem0.loc16_56.1.tuple.elem, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc16_56.7 = load i32, ptr %tuple.elem0.loc16_56.3.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc16_56.3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem0.loc16_56.1.tuple.elem, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc16_56.8 = load i32, ptr %tuple.elem1.loc16_56.3.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc16_56.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem0.loc16_56.1.tuple.elem, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc16_56.9 = load i32, ptr %tuple.elem2.loc16_56.2.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.2 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.24 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_56.2, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_56.7, ptr %tuple.loc16_56.24, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.25 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_56.2, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_56.8, ptr %tuple.loc16_56.25, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc16_56.26 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_56.2, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc16_56.9, ptr %tuple.loc16_56.26, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc16_3.1.tuple.elem = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %tuple.elem0.loc16_3.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem0.loc16_3.1.tuple.elem, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %.loc16_3.2 = load i32, ptr %tuple.elem0.loc16_3.2.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem1.loc16_3.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem0.loc16_3.1.tuple.elem, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %.loc16_3.3 = load i32, ptr %tuple.elem1.loc16_3.1.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem2.loc16_3.1.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem0.loc16_3.1.tuple.elem, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: %.loc16_3.4 = load i32, ptr %tuple.elem2.loc16_3.1.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.1 = alloca { i32, i32, i32 }, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.17 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.1, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.2, ptr %tuple.loc16_3.17, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.18 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.1, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.3, ptr %tuple.loc16_3.18, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.19 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.1, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.4, ptr %tuple.loc16_3.19, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem1.loc16_3.2.tuple.elem = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %tuple.elem0.loc16_3.3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem1.loc16_3.2.tuple.elem, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %.loc16_3.6 = load i32, ptr %tuple.elem0.loc16_3.3.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem1.loc16_3.3.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem1.loc16_3.2.tuple.elem, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %.loc16_3.7 = load i32, ptr %tuple.elem1.loc16_3.3.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem2.loc16_3.2.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.elem1.loc16_3.2.tuple.elem, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: %.loc16_3.8 = load i32, ptr %tuple.elem2.loc16_3.2.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.2 = alloca { i32, i32, i32 }, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.210 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.2, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.6, ptr %tuple.loc16_3.210, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.211 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.2, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.7, ptr %tuple.loc16_3.211, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.212 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16_3.2, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.8, ptr %tuple.loc16_3.212, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.3 = alloca { ptr, ptr }, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.313 = getelementptr inbounds nuw { ptr, ptr }, ptr %tuple.loc16_3.3, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store ptr %tuple.loc16_3.1, ptr %tuple.loc16_3.313, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc16_3.314 = getelementptr inbounds nuw { ptr, ptr }, ptr %tuple.loc16_3.3, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store ptr %tuple.loc16_3.2, ptr %tuple.loc16_3.314, align 8, !dbg !7 +// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 0, !dbg !8 +// CHECK:STDOUT: call void @_CF.Main(ptr %tuple.elem0.tuple.elem), !dbg !9 +// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { { i32, i32, i32 }, { i32, i32, i32 } }, ptr %v.var, i32 0, i32 1, !dbg !8 +// CHECK:STDOUT: call void @_CF.Main(ptr %tuple.elem1.tuple.elem), !dbg !10 // CHECK:STDOUT: ret void, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/tuple/value_formation.carbon b/toolchain/lower/testdata/tuple/value_formation.carbon index 3c99b186866f..17f0a2c13e6c 100644 --- a/toolchain/lower/testdata/tuple/value_formation.carbon +++ b/toolchain/lower/testdata/tuple/value_formation.carbon @@ -61,32 +61,6 @@ fn F() { // CHECK:STDOUT: %tuple.loc18_108 = getelementptr inbounds nuw { ptr, ptr }, ptr %tuple.loc18_10, i32 0, i32 1, !dbg !11 // CHECK:STDOUT: store ptr %tuple.loc18_9, ptr %tuple.loc18_108, align 8, !dbg !11 // CHECK:STDOUT: call void @_CG.Main(ptr %tuple.loc18_10), !dbg !12 -// CHECK:STDOUT: %tuple.elem0.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: %.loc17_3.1 = load i32, ptr %tuple.elem0.loc17.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem1.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: %.loc17_3.2 = load i32, ptr %tuple.elem1.loc17.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem2.loc17.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %b.var, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: %.loc17_3.3 = load i32, ptr %tuple.elem2.loc17.tuple.elem, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc17 = alloca { i32, i32, i32 }, align 8, !dbg !8 -// CHECK:STDOUT: %tuple.loc179 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc17, i32 0, i32 0, !dbg !8 -// CHECK:STDOUT: store i32 %.loc17_3.1, ptr %tuple.loc179, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc1710 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc17, i32 0, i32 1, !dbg !8 -// CHECK:STDOUT: store i32 %.loc17_3.2, ptr %tuple.loc1710, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.loc1711 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc17, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: store i32 %.loc17_3.3, ptr %tuple.loc1711, align 4, !dbg !8 -// CHECK:STDOUT: %tuple.elem0.loc16.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: %.loc16_3.1 = load i32, ptr %tuple.elem0.loc16.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem1.loc16.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: %.loc16_3.2 = load i32, ptr %tuple.elem1.loc16.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.elem2.loc16.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: %.loc16_3.3 = load i32, ptr %tuple.elem2.loc16.tuple.elem, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc16 = alloca { i32, i32, i32 }, align 8, !dbg !7 -// CHECK:STDOUT: %tuple.loc1612 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16, i32 0, i32 0, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.1, ptr %tuple.loc1612, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc1613 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16, i32 0, i32 1, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.2, ptr %tuple.loc1613, align 4, !dbg !7 -// CHECK:STDOUT: %tuple.loc1614 = getelementptr inbounds nuw { i32, i32, i32 }, ptr %tuple.loc16, i32 0, i32 2, !dbg !7 -// CHECK:STDOUT: store i32 %.loc16_3.3, ptr %tuple.loc1614, align 4, !dbg !7 // CHECK:STDOUT: ret void, !dbg !13 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/testing/testdata/min_prelude/parts/destroy.carbon b/toolchain/testing/testdata/min_prelude/parts/destroy.carbon index 2ccf9792122a..da17c4a38308 100644 --- a/toolchain/testing/testdata/min_prelude/parts/destroy.carbon +++ b/toolchain/testing/testdata/min_prelude/parts/destroy.carbon @@ -7,8 +7,8 @@ package Core library "prelude/parts/destroy"; interface Destroy { - fn Op[self: Self](); + fn Op[addr self: Self*](); } impl forall [T:! type] T as Destroy { - fn Op[self: Self]() = "no_op"; + fn Op[addr self: Self*]() = "no_op"; }