diff --git a/toolchain/check/call.cpp b/toolchain/check/call.cpp index ba0be1e421c4..fec6a09c90b3 100644 --- a/toolchain/check/call.cpp +++ b/toolchain/check/call.cpp @@ -230,7 +230,7 @@ static auto PerformCallToFunction(Context& context, SemIR::LocId loc_id, case SemIR::InitRepr::InPlace: // Tentatively put storage for a temporary in the function's return slot. // This will be replaced if necessary when we perform initialization. - return_slot_arg_id = AddInstWithCleanup( + return_slot_arg_id = AddInst( context, loc_id, {.type_id = return_info.type_id}); break; case SemIR::InitRepr::None: diff --git a/toolchain/check/convert.cpp b/toolchain/check/convert.cpp index 216d5174b17f..f1c2a74fdb0b 100644 --- a/toolchain/check/convert.cpp +++ b/toolchain/check/convert.cpp @@ -63,12 +63,12 @@ static auto CopyValueToTemporary(Context& context, SemIR::InstId init_id) // TODO: Consider using `None` to mean that we immediately materialize and // initialize a temporary, rather than two separate instructions. auto init = context.sem_ir().insts().Get(init_id); - auto temporary_id = AddInstWithCleanup( + auto temporary_id = AddInst( context, SemIR::LocId(init_id), {.type_id = init.type_id()}); - return AddInst(context, SemIR::LocId(init_id), - {.type_id = init.type_id(), - .storage_id = temporary_id, - .init_id = init_id}); + return AddInstWithCleanup(context, SemIR::LocId(init_id), + {.type_id = init.type_id(), + .storage_id = temporary_id, + .init_id = init_id}); } // Commits to using a temporary to store the result of the initializing @@ -88,10 +88,11 @@ static auto FinalizeTemporary(Context& context, SemIR::InstId init_id, "initialized multiple times? Have {0}", sem_ir.insts().Get(return_slot_arg_id)); auto init = sem_ir.insts().Get(init_id); - return AddInst(context, SemIR::LocId(init_id), - {.type_id = init.type_id(), - .storage_id = return_slot_arg_id, - .init_id = init_id}); + return AddInstWithCleanup( + context, SemIR::LocId(init_id), + {.type_id = init.type_id(), + .storage_id = return_slot_arg_id, + .init_id = init_id}); } if (discarded) { @@ -261,9 +262,8 @@ static auto ConvertTupleToArray(Context& context, SemIR::TupleType tuple_type, // destination for the array initialization if we weren't given one. SemIR::InstId return_slot_arg_id = target.init_id; if (!target.init_id.has_value()) { - return_slot_arg_id = - target_block->AddInstWithCleanup( - value_loc_id, {.type_id = target.type_id}); + return_slot_arg_id = target_block->AddInst( + value_loc_id, {.type_id = target.type_id}); } // Initialize each element of the array from the corresponding element of the @@ -607,7 +607,7 @@ static auto ConvertStructToClass(Context& context, SemIR::StructType src_type, if (need_temporary) { target.kind = ConversionTarget::Initializer; target.init_block = &target_block; - target.init_id = target_block.AddInstWithCleanup( + target.init_id = target_block.AddInst( SemIR::LocId(value_id), {.type_id = target.type_id}); } @@ -617,10 +617,11 @@ static auto ConvertStructToClass(Context& context, SemIR::StructType src_type, if (need_temporary) { target_block.InsertHere(); - result_id = AddInst(context, SemIR::LocId(value_id), - {.type_id = target.type_id, - .storage_id = target.init_id, - .init_id = result_id}); + result_id = + AddInstWithCleanup(context, SemIR::LocId(value_id), + {.type_id = target.type_id, + .storage_id = target.init_id, + .init_id = result_id}); } return result_id; } diff --git a/toolchain/check/cpp_thunk.cpp b/toolchain/check/cpp_thunk.cpp index 14f312fa5a3b..68a17fdadaab 100644 --- a/toolchain/check/cpp_thunk.cpp +++ b/toolchain/check/cpp_thunk.cpp @@ -600,7 +600,7 @@ auto PerformCppThunkCall(Context& context, SemIR::LocId loc_id, if (thunk_takes_return_address) { // Create a temporary if the caller didn't provide a return slot. if (!return_slot_id.has_value()) { - return_slot_id = AddInstWithCleanup( + return_slot_id = AddInst( context, loc_id, {.type_id = return_type_id}); } diff --git a/toolchain/check/pattern_match.cpp b/toolchain/check/pattern_match.cpp index eb51239c7032..0ca5363a3a73 100644 --- a/toolchain/check/pattern_match.cpp +++ b/toolchain/check/pattern_match.cpp @@ -281,7 +281,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context, context.emitter().Emit(entry.scrutinee_id, AddrSelfIsNonRef); // Add fake reference expression to preserve invariants. auto scrutinee = context.insts().GetWithLocId(entry.scrutinee_id); - scrutinee_ref_id = AddInstWithCleanup( + scrutinee_ref_id = AddInst( context, scrutinee.loc_id, {.type_id = scrutinee.inst.type_id()}); } auto scrutinee_ref = context.insts().Get(scrutinee_ref_id); @@ -480,7 +480,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context, break; } case MatchKind::Caller: { - storage_id = AddInstWithCleanup( + storage_id = AddInst( context, SemIR::LocId(pattern_inst_id), {.type_id = ExtractScrutineeType(context.sem_ir(), var_pattern.type_id)}); @@ -497,10 +497,23 @@ auto MatchContext::DoEmitPatternMatch(Context& context, if (entry.scrutinee_id.has_value()) { auto init_id = Initialize(context, SemIR::LocId(pattern_inst_id), storage_id, entry.scrutinee_id); - // TODO: Consider using different instruction kinds for assignment - // versus initialization. - AddInst(context, SemIR::LocId(pattern_inst_id), - {.lhs_id = storage_id, .rhs_id = init_id}); + // If we created a `TemporaryStorage` to hold the var, create a + // corresponding `Temporary` to model that its initialization is complete. + // TODO: If the subpattern is a binding, we may want to destroy the + // parameter variable in the callee instead of the caller so that we can + // support destructive move from it. + if (kind_ == MatchKind::Caller) { + storage_id = AddInstWithCleanup( + context, SemIR::LocId(pattern_inst_id), + {.type_id = context.insts().Get(storage_id).type_id(), + .storage_id = storage_id, + .init_id = init_id}); + } else { + // TODO: Consider using different instruction kinds for assignment + // versus initialization. + AddInst(context, SemIR::LocId(pattern_inst_id), + {.lhs_id = storage_id, .rhs_id = init_id}); + } } AddWork({.pattern_id = var_pattern.subpattern_id, .scrutinee_id = storage_id, diff --git a/toolchain/check/testdata/array/basics.carbon b/toolchain/check/testdata/array/basics.carbon index c15e6d9cdc8d..c041845c076d 100644 --- a/toolchain/check/testdata/array/basics.carbon +++ b/toolchain/check/testdata/array/basics.carbon @@ -181,9 +181,6 @@ var a: array(1, 1); // 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] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.fe9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.734) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.ae1: %T.as.Destroy.impl.Op.type.fe9 = struct_value () [concrete] -// CHECK:STDOUT: %ptr.dbe: type = ptr_type %tuple.type.734 [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.type.280: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.d4f: %T.as.Destroy.impl.Op.type.280 = struct_value () [concrete] // CHECK:STDOUT: } @@ -224,21 +221,11 @@ var a: array(1, 1); // CHECK:STDOUT: %array_type: type = array_type %int_2, %.loc10_24.2 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %array_type = bind_name v, %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_41.1: = bound_method %.loc10_41.2, constants.%T.as.Destroy.impl.Op.ae1 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.d4f // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_41.1: = bound_method %.loc10_41.2, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc10_41.1: %ptr.dbe = addr_of %.loc10_41.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_41.1: init %empty_tuple.type = call %bound_method.loc10_41.1(%addr.loc10_41.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_41.2: = bound_method %.loc10_41.1, constants.%T.as.Destroy.impl.Op.ae1 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_41.2: = bound_method %.loc10_41.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc10_41.2: %ptr.dbe = addr_of %.loc10_41.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_41.2: init %empty_tuple.type = call %bound_method.loc10_41.2(%addr.loc10_41.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.d4f -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc10_3: %ptr.c6b = addr_of %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_3: init %empty_tuple.type = call %bound_method.loc10_3(%addr.loc10_3) +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.c6b = addr_of %v.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -355,10 +342,10 @@ var a: array(1, 1); // CHECK:STDOUT: %array_type: type = array_type %int_1, %.loc8_17.2 [concrete = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %t: ref %array_type = bind_name t, %t.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_27: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.f19 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_27: = bound_method %.loc8_27.2, constants.%T.as.Destroy.impl.Op.f19 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_27: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc8_27: %ptr.652 = addr_of %.loc8_27.1 +// CHECK:STDOUT: %bound_method.loc8_27: = bound_method %.loc8_27.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc8_27: %ptr.652 = addr_of %.loc8_27.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_27: init %empty_tuple.type = call %bound_method.loc8_27(%addr.loc8_27) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_3: = bound_method %t.var, constants.%T.as.Destroy.impl.Op.688 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/import.carbon b/toolchain/check/testdata/array/import.carbon index 63643352b3a6..ed63a51ea2b9 100644 --- a/toolchain/check/testdata/array/import.carbon +++ b/toolchain/check/testdata/array/import.carbon @@ -87,10 +87,10 @@ fn F() -> array(i32, 1) { // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_15.1: ref %i32 = array_index %.loc6_12.2, %n.ref // CHECK:STDOUT: %.loc6_15.2: %i32 = bind_value %.loc6_15.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc6_12.1, constants.%T.as.Destroy.impl.Op.552 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc6_12.2, constants.%T.as.Destroy.impl.Op.552 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc6_12.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.830 = addr_of %.loc6_12.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc6_12.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.830 = addr_of %.loc6_12.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc6_15.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/index_not_literal.carbon b/toolchain/check/testdata/array/index_not_literal.carbon index f145c5f65cb3..e6c3cc501a76 100644 --- a/toolchain/check/testdata/array/index_not_literal.carbon +++ b/toolchain/check/testdata/array/index_not_literal.carbon @@ -153,10 +153,10 @@ fn F(a: array({}, 3)) -> {} { // CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc10_20.15, %.loc10_23.2) // CHECK:STDOUT: %.loc10_25.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc10_25.2: %i32 = converted %F.call, %.loc10_25.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_20.3, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_20.14, constants.%T.as.Destroy.impl.Op.f0b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_20.7: = bound_method %.loc10_20.3, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.f01 = addr_of %.loc10_20.3 +// CHECK:STDOUT: %bound_method.loc10_20.7: = bound_method %.loc10_20.14, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.f01 = addr_of %.loc10_20.14 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_20.7(%addr) // CHECK:STDOUT: return %.loc10_25.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/as/basics.carbon b/toolchain/check/testdata/as/basics.carbon index 891bb89251b8..e240a14590af 100644 --- a/toolchain/check/testdata/as/basics.carbon +++ b/toolchain/check/testdata/as/basics.carbon @@ -249,11 +249,11 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %tuple: %tuple.type.b67 = tuple_value (%.loc13_25.3, %.loc13_33.3) // CHECK:STDOUT: %.loc13_34.2: %tuple.type.b67 = converted %.loc13_34.1, %tuple // CHECK:STDOUT: %a: %tuple.type.b67 = bind_name a, %.loc13_34.2 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc13_33: = bound_method %.loc13_33.1, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_33: %ptr.d17 = addr_of %.loc13_33.1 +// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc13_33: = bound_method %.loc13_33.2, constants.%X.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc13_33: %ptr.d17 = addr_of %.loc13_33.2 // CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc13_33: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc13_33(%addr.loc13_33) -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc13_25: = bound_method %.loc13_25.1, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_25: %ptr.d17 = addr_of %.loc13_25.1 +// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc13_25: = bound_method %.loc13_25.2, constants.%X.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc13_25: %ptr.d17 = addr_of %.loc13_25.2 // CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc13_25: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc13_25(%addr.loc13_25) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -286,17 +286,11 @@ let n: {.x: ()} = {.x = ()} as {.x = ()}; // CHECK:STDOUT: %.loc20_15.3: type = converted %.loc20_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.b67 = bind_name b, %b.var -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc20_34.1: = bound_method %tuple.elem1, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc20_34.1: %ptr.d17 = addr_of %tuple.elem1 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc20_34.1: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc20_34.1(%addr.loc20_34.1) -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc20_34.2: = bound_method %tuple.elem0, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc20_34.2: %ptr.d17 = addr_of %tuple.elem0 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc20_34.2: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc20_34.2(%addr.loc20_34.2) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.279 // CHECK:STDOUT: // CHECK:STDOUT: %bound_method: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc20_3: %ptr.120 = addr_of %b.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc20_3) +// CHECK:STDOUT: %addr: %ptr.120 = addr_of %b.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -360,12 +354,9 @@ let n: {.x: ()} = {.x = ()} as {.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: %X.as.Destroy.impl.Op.bound.loc24_3.1: = bound_method %.loc24, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc24_3.1: %ptr.d17 = addr_of %.loc24 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc24_3.1: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc24_3.1(%addr.loc24_3.1) -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc24_3.2: = bound_method %x.var, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc24_3.2: %ptr.d17 = addr_of %x.var -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc24_3.2: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc24_3.2(%addr.loc24_3.2) +// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%X.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.d17 = addr_of %x.var +// CHECK:STDOUT: %X.as.Destroy.impl.Op.call: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/const.carbon b/toolchain/check/testdata/as/const.carbon index 9584067e3aca..8de307210226 100644 --- a/toolchain/check/testdata/as/const.carbon +++ b/toolchain/check/testdata/as/const.carbon @@ -176,16 +176,11 @@ fn Use() { // CHECK:STDOUT: %ptr.loc17_17: type = ptr_type %const.loc17_10 [concrete = constants.%ptr.cbd] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %ptr.cbd = bind_name b, %.loc17_25.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_3.1: = bound_method %.loc14_3, constants.%T.as.Destroy.impl.Op.4e8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.4e8 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %.loc14_3, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc14_3.1: %ptr.cbd = addr_of %.loc14_3 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_3.1: init %empty_tuple.type = call %bound_method.loc14_3.1(%addr.loc14_3.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_3.2: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.4e8 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc14_3.2: %ptr.cbd = addr_of %i.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_3.2: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr.loc14_3.2) +// CHECK:STDOUT: %bound_method: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc14: %ptr.cbd = addr_of %i.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc14) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -236,12 +231,9 @@ fn Use() { // CHECK:STDOUT: %.loc13_20.2: %X = converted %value.ref, %.loc13_20.1 // CHECK:STDOUT: %X.ref.loc13_10: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %v: %X = bind_name v, %.loc13_20.2 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc12_3.1: = bound_method %.loc12_3, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_3.1: %ptr.d17 = addr_of %.loc12_3 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc12_3.1: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc12_3.1(%addr.loc12_3.1) -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc12_3.2: = bound_method %i.var, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_3.2: %ptr.d17 = addr_of %i.var -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc12_3.2: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc12_3.2(%addr.loc12_3.2) +// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound: = bound_method %i.var, constants.%X.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.d17 = addr_of %i.var +// CHECK:STDOUT: %X.as.Destroy.impl.Op.call: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/maybe_unformed.carbon b/toolchain/check/testdata/as/maybe_unformed.carbon index a1c8259de8f7..6db01a9cb8c2 100644 --- a/toolchain/check/testdata/as/maybe_unformed.carbon +++ b/toolchain/check/testdata/as/maybe_unformed.carbon @@ -212,10 +212,7 @@ fn Use() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %ptr.d17: type = ptr_type %X [concrete] -// CHECK:STDOUT: %X.as.Destroy.impl.Op.type: type = fn_type @X.as.Destroy.impl.Op [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %X.as.Destroy.impl.Op: %X.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Init.type: type = fn_type @Init [concrete] // CHECK:STDOUT: %Init: %Init.type = struct_value () [concrete] // CHECK:STDOUT: %MaybeUnformed.type: type = generic_class_type @MaybeUnformed [concrete] @@ -281,14 +278,11 @@ fn Use() { // CHECK:STDOUT: %MaybeUnformed.loc27_30: type = class_type @MaybeUnformed, @MaybeUnformed(constants.%X) [concrete = constants.%MaybeUnformed.275] // CHECK:STDOUT: } // CHECK:STDOUT: %v: %MaybeUnformed.275 = bind_name v, [concrete = ] -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound: = bound_method %.loc19_39, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc19_39: %ptr.d17 = addr_of %.loc19_39 -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound(%addr.loc19_39) // CHECK:STDOUT: %MaybeUnformed.as.Destroy.impl.Op.bound: = bound_method %i.var, constants.%MaybeUnformed.as.Destroy.impl.Op.b85 // CHECK:STDOUT: // CHECK:STDOUT: %bound_method: = bound_method %i.var, %MaybeUnformed.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc19_3: %ptr.58e = addr_of %i.var -// CHECK:STDOUT: %MaybeUnformed.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc19_3) +// CHECK:STDOUT: %addr: %ptr.58e = addr_of %i.var +// CHECK:STDOUT: %MaybeUnformed.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/partial.carbon b/toolchain/check/testdata/as/partial.carbon index 58e5c20cfc33..38baea1e333f 100644 --- a/toolchain/check/testdata/as/partial.carbon +++ b/toolchain/check/testdata/as/partial.carbon @@ -212,16 +212,11 @@ fn Use() { // CHECK:STDOUT: %ptr.loc17_19: type = ptr_type %.loc17_10 [concrete = constants.%ptr.7b2] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %ptr.7b2 = bind_name b, %.loc17_27.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_3.1: = bound_method %.loc14_3, constants.%T.as.Destroy.impl.Op.d31 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.d31 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc14_3.1: = bound_method %.loc14_3, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc14_3.1: %ptr.7b2 = addr_of %.loc14_3 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_3.1: init %empty_tuple.type = call %bound_method.loc14_3.1(%addr.loc14_3.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc14_3.2: = bound_method %i.var, constants.%T.as.Destroy.impl.Op.d31 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc14_3.2: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc14_3.2: %ptr.7b2 = addr_of %i.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc14_3.2: init %empty_tuple.type = call %bound_method.loc14_3.2(%addr.loc14_3.2) +// CHECK:STDOUT: %bound_method: = bound_method %i.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc14: %ptr.7b2 = addr_of %i.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc14) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -242,9 +237,6 @@ fn Use() { // CHECK:STDOUT: %Init.type: type = fn_type @Init [concrete] // CHECK:STDOUT: %Init: %Init.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.019: type = pattern_type %X [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.057: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%.e71) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.d31: %T.as.Destroy.impl.Op.type.057 = struct_value () [concrete] -// CHECK:STDOUT: %ptr.7b2: type = ptr_type %.e71 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -290,30 +282,15 @@ fn Use() { // CHECK:STDOUT: assign %k.var, // CHECK:STDOUT: %X.ref.loc34_10: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %k: ref %X = bind_name k, %k.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_19, constants.%T.as.Destroy.impl.Op.d31 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc34: = bound_method %.loc34_19, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc34_19: %ptr.7b2 = addr_of %.loc34_19 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %bound_method.loc34(%addr.loc34_19) // CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc34: = bound_method %k.var, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc34_3: %ptr.d17 = addr_of %k.var -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc34(%addr.loc34_3) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %.loc26_19, constants.%T.as.Destroy.impl.Op.d31 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_19, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc26_19: %ptr.7b2 = addr_of %.loc26_19 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26_19) +// CHECK:STDOUT: %addr.loc34: %ptr.d17 = addr_of %k.var +// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc34(%addr.loc34) // CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc26: = bound_method %j.var, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc26_3: %ptr.d17 = addr_of %j.var -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc26(%addr.loc26_3) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18: = bound_method %.loc18_19, constants.%T.as.Destroy.impl.Op.d31 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18: = bound_method %.loc18_19, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc18_19: %ptr.7b2 = addr_of %.loc18_19 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %bound_method.loc18(%addr.loc18_19) +// CHECK:STDOUT: %addr.loc26: %ptr.d17 = addr_of %j.var +// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc26(%addr.loc26) // CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc18: = bound_method %i.var, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc18_3: %ptr.d17 = addr_of %i.var -// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc18(%addr.loc18_3) +// CHECK:STDOUT: %addr.loc18: %ptr.d17 = addr_of %i.var +// CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc18: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc18(%addr.loc18) // 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 754645656fac..495e6651bb4c 100644 --- a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon +++ b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon @@ -287,16 +287,16 @@ library "[[@TEST_NAME]]"; // 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: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %.loc17_7.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc17: = bound_method %.loc17_7.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc17: = bound_method %.loc17_7.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc17: %ptr.843 = addr_of %.loc17_7.1 +// CHECK:STDOUT: %bound_method.loc17: = bound_method %.loc17_7.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc17: %ptr.843 = addr_of %.loc17_7.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc17: init %empty_tuple.type = call %bound_method.loc17(%addr.loc17) // CHECK:STDOUT: -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13: = bound_method %.loc13_7.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13: = bound_method %.loc13_7.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13: = bound_method %.loc13_7.1, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc13: %ptr.843 = addr_of %.loc13_7.1 +// CHECK:STDOUT: %bound_method.loc13: = bound_method %.loc13_7.2, %T.as.Destroy.impl.Op.specific_fn.3 +// CHECK:STDOUT: %addr.loc13: %ptr.843 = addr_of %.loc13_7.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13: init %empty_tuple.type = call %bound_method.loc13(%addr.loc13) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index b724d1322cad..7b0a993b664b 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -359,8 +359,8 @@ class A { // CHECK:STDOUT: %SOME_INTERNAL_CONSTANT.ref: = name_ref SOME_INTERNAL_CONSTANT, [concrete = ] // CHECK:STDOUT: %circle.ref.loc51: %Circle = name_ref circle, %circle // CHECK:STDOUT: %SomeInternalFunction.ref: = name_ref SomeInternalFunction, [concrete = ] -// CHECK:STDOUT: %Circle.as.Destroy.impl.Op.bound: = bound_method %.loc18_36.1, constants.%Circle.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.54d = addr_of %.loc18_36.1 +// CHECK:STDOUT: %Circle.as.Destroy.impl.Op.bound: = bound_method %.loc18_36.2, constants.%Circle.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.54d = addr_of %.loc18_36.2 // CHECK:STDOUT: %Circle.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Circle.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index 99aff9899d7b..3010eb17ca63 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -373,8 +373,8 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: %.loc32_59.4: ref %A = converted %.loc32_59.1, %.loc32_59.3 // CHECK:STDOUT: %.loc32_59.5: %A = bind_value %.loc32_59.4 // CHECK:STDOUT: %a: %A = bind_name a, %.loc32_59.5 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc32_57.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc32_57.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc32_57.9, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc32_57.9 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/destroy_calls.carbon b/toolchain/check/testdata/class/destroy_calls.carbon index d780fb384e3c..0a3ecb34109a 100644 --- a/toolchain/check/testdata/class/destroy_calls.carbon +++ b/toolchain/check/testdata/class/destroy_calls.carbon @@ -334,14 +334,14 @@ fn G() { F({}); } // CHECK:STDOUT: %.loc11_17.1: ref %WithAddr = temporary_storage // CHECK:STDOUT: %WithAddr.Make.call: init %WithAddr = call %Make.ref.loc11() to %.loc11_17.1 // CHECK:STDOUT: %.loc11_17.2: ref %WithAddr = temporary %.loc11_17.1, %WithAddr.Make.call -// CHECK:STDOUT: %WithAddr.as.Destroy.impl.Op.bound: = bound_method %.loc11_17.1, constants.%WithAddr.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc11: %ptr.b4e = addr_of %.loc11_17.1 +// CHECK:STDOUT: %WithAddr.as.Destroy.impl.Op.bound: = bound_method %.loc11_17.2, constants.%WithAddr.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc11: %ptr.b4e = addr_of %.loc11_17.2 // CHECK:STDOUT: %WithAddr.as.Destroy.impl.Op.call: init %empty_tuple.type = call %WithAddr.as.Destroy.impl.Op.bound(%addr.loc11) -// CHECK:STDOUT: %ExplicitReturn.as.Destroy.impl.Op.bound: = bound_method %.loc10_23.1, constants.%ExplicitReturn.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10: %ptr.b0a = addr_of %.loc10_23.1 +// CHECK:STDOUT: %ExplicitReturn.as.Destroy.impl.Op.bound: = bound_method %.loc10_23.2, constants.%ExplicitReturn.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc10: %ptr.b0a = addr_of %.loc10_23.2 // CHECK:STDOUT: %ExplicitReturn.as.Destroy.impl.Op.call: init %empty_tuple.type = call %ExplicitReturn.as.Destroy.impl.Op.bound(%addr.loc10) -// CHECK:STDOUT: %NoAddr.as.Destroy.impl.Op.bound: = bound_method %.loc9_15.1, constants.%NoAddr.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9: %ptr.4b8 = addr_of %.loc9_15.1 +// CHECK:STDOUT: %NoAddr.as.Destroy.impl.Op.bound: = bound_method %.loc9_15.2, constants.%NoAddr.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc9: %ptr.4b8 = addr_of %.loc9_15.2 // CHECK:STDOUT: %NoAddr.as.Destroy.impl.Op.call: init %empty_tuple.type = call %NoAddr.as.Destroy.impl.Op.bound(%addr.loc9) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index e5556dd97e7a..95427dd357ae 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: %Class.G.type: type = fn_type @Class.G [concrete] // CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.b40: = impl_witness @Class.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @Class.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %Class.as.Destroy.impl.Op.type: type = fn_type @Class.as.Destroy.impl.Op [concrete] // CHECK:STDOUT: %Class.as.Destroy.impl.Op: %Class.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -137,7 +137,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: impl_decl @Class.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@Class.as.Destroy.impl.%Class.as.Destroy.impl.Op.decl), @Class.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.b40] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -160,8 +160,8 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %F.ref.loc32: %Class.F.type = name_ref F, @Class.%Class.F.decl [concrete = constants.%Class.F] // CHECK:STDOUT: %Class.F.bound.loc32: = bound_method %c.ref.loc32, %F.ref.loc32 // CHECK:STDOUT: %.loc32: ref %Class = temporary_storage -// CHECK:STDOUT: %addr.loc32_3.1: %ptr.e71 = addr_of %.loc32 -// CHECK:STDOUT: %Class.F.call.loc32: init %empty_tuple.type = call %Class.F.bound.loc32(%addr.loc32_3.1) +// CHECK:STDOUT: %addr.loc32: %ptr.e71 = addr_of %.loc32 +// CHECK:STDOUT: %Class.F.call.loc32: init %empty_tuple.type = call %Class.F.bound.loc32(%addr.loc32) // CHECK:STDOUT: %c.ref.loc34: %Class = name_ref c, %c // CHECK:STDOUT: %G.ref.loc34: %Class.G.type = name_ref G, @Class.%Class.G.decl [concrete = constants.%Class.G] // CHECK:STDOUT: %Class.G.bound.loc34: = bound_method %c.ref.loc34, %G.ref.loc34 @@ -178,9 +178,6 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %Class.G.bound.loc39: = bound_method %.loc39_4.1, %G.ref.loc39 // CHECK:STDOUT: %.loc39_4.2: %Class = bind_value %.loc39_4.1 // CHECK:STDOUT: %Class.G.call.loc39: init %empty_tuple.type = call %Class.G.bound.loc39(%.loc39_4.2) -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc32, constants.%Class.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc32_3.2: %ptr.e71 = addr_of %.loc32 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Class.as.Destroy.impl.Op.bound(%addr.loc32_3.2) // 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 aaedf9e9af55..c39c3ed92e2e 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -797,16 +797,11 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.F.call: init %i32 = call %CompleteClass.F.specific_fn() // CHECK:STDOUT: %.loc7_15.1: %i32 = value_of_initializer %CompleteClass.F.call // CHECK:STDOUT: %.loc7_15.2: %i32 = converted %CompleteClass.F.call, %.loc7_15.1 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound.loc6_3.1: = bound_method %.loc6_3, constants.%CompleteClass.as.Destroy.impl.Op.6f7 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.6f7, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %CompleteClass.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc6_3.1: %ptr.a97 = addr_of %.loc6_3 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.1(%addr.loc6_3.1) -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound.loc6_3.2: = bound_method %v.var, constants.%CompleteClass.as.Destroy.impl.Op.6f7 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.6f7, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %v.var, %CompleteClass.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc6_3.2: %ptr.a97 = addr_of %v.var -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.2) +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%CompleteClass.as.Destroy.impl.Op.6f7 +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.6f7, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %CompleteClass.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.a97 = addr_of %v.var +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc7_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -851,16 +846,11 @@ class Class(U:! type) { // CHECK:STDOUT: %n.ref: %CompleteClass.elem.7fc = name_ref n, imports.%Main.import_ref.e76 [concrete = imports.%.364] // CHECK:STDOUT: %.loc12_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc12_11.2: %i32 = bind_value %.loc12_11.1 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound.loc11_3.1: = bound_method %.loc11_3, constants.%CompleteClass.as.Destroy.impl.Op.6f7 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.6f7, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11_3.1: = bound_method %.loc11_3, %CompleteClass.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc11_3.1: %ptr.a97 = addr_of %.loc11_3 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call.loc11_3.1: init %empty_tuple.type = call %bound_method.loc11_3.1(%addr.loc11_3.1) -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound.loc11_3.2: = bound_method %v.var, constants.%CompleteClass.as.Destroy.impl.Op.6f7 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.6f7, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11_3.2: = bound_method %v.var, %CompleteClass.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc11_3.2: %ptr.a97 = addr_of %v.var -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call.loc11_3.2: init %empty_tuple.type = call %bound_method.loc11_3.2(%addr.loc11_3.2) +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%CompleteClass.as.Destroy.impl.Op.6f7 +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.6f7, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %CompleteClass.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.a97 = addr_of %v.var +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc12_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -959,18 +949,12 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.d10: %CompleteClass.as.Destroy.impl.Op.type.6b5 = struct_value () [symbolic] // CHECK:STDOUT: %ptr.5b4: type = ptr_type %CompleteClass.f97 [symbolic] // CHECK:STDOUT: %pattern_type.1fe: type = pattern_type %ptr.5b4 [symbolic] -// CHECK:STDOUT: %Destroy.impl_witness.499: = impl_witness imports.%Destroy.impl_witness_table.ed1, @CompleteClass.as.Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.type.e88: type = fn_type @CompleteClass.as.Destroy.impl.Op, @CompleteClass.as.Destroy.impl(%i32) [concrete] -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.452: %CompleteClass.as.Destroy.impl.Op.type.e88 = struct_value () [concrete] -// CHECK:STDOUT: %ptr.d29: type = ptr_type %CompleteClass.a06 [concrete] -// CHECK:STDOUT: %pattern_type.329: type = pattern_type %ptr.d29 [concrete] -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.88d: = specific_function %CompleteClass.as.Destroy.impl.Op.452, @CompleteClass.as.Destroy.impl.Op(%i32) [concrete] // CHECK:STDOUT: %Destroy.impl_witness.d20: = impl_witness imports.%Destroy.impl_witness_table.ed1, @CompleteClass.as.Destroy.impl(%ptr.9e1) [concrete] // CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.type.4b6: type = fn_type @CompleteClass.as.Destroy.impl.Op, @CompleteClass.as.Destroy.impl(%ptr.9e1) [concrete] // CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.cb5: %CompleteClass.as.Destroy.impl.Op.type.4b6 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c79: type = ptr_type %CompleteClass.0fe [concrete] // CHECK:STDOUT: %pattern_type.cea: type = pattern_type %ptr.c79 [concrete] -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.8de: = specific_function %CompleteClass.as.Destroy.impl.Op.cb5, @CompleteClass.as.Destroy.impl.Op(%ptr.9e1) [concrete] +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn: = specific_function %CompleteClass.as.Destroy.impl.Op.cb5, @CompleteClass.as.Destroy.impl.Op(%ptr.9e1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1069,16 +1053,11 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%ptr.9e1) [concrete = constants.%CompleteClass.0fe] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %CompleteClass.0fe = bind_name v, %v.var -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound.loc14_34: = bound_method %.loc14_34, constants.%CompleteClass.as.Destroy.impl.Op.452 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.452, @CompleteClass.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn.88d] -// CHECK:STDOUT: %bound_method.loc14_34: = bound_method %.loc14_34, %CompleteClass.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc14_34: %ptr.d29 = addr_of %.loc14_34 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call.loc14_34: init %empty_tuple.type = call %bound_method.loc14_34(%addr.loc14_34) -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound.loc14_3: = bound_method %v.var, constants.%CompleteClass.as.Destroy.impl.Op.cb5 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.cb5, @CompleteClass.as.Destroy.impl.Op(constants.%ptr.9e1) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn.8de] -// CHECK:STDOUT: %bound_method.loc14_3: = bound_method %v.var, %CompleteClass.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc14_3: %ptr.c79 = addr_of %v.var -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call.loc14_3: init %empty_tuple.type = call %bound_method.loc14_3(%addr.loc14_3) +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%CompleteClass.as.Destroy.impl.Op.cb5 +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.specific_fn: = specific_function constants.%CompleteClass.as.Destroy.impl.Op.cb5, @CompleteClass.as.Destroy.impl.Op(constants.%ptr.9e1) [concrete = constants.%CompleteClass.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %CompleteClass.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.c79 = addr_of %v.var +// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1146,23 +1125,6 @@ class Class(U:! type) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1fe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @CompleteClass.as.Destroy.impl(constants.%i32) { -// CHECK:STDOUT: %T => constants.%i32 -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.a06 -// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.499 -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op.type => constants.%CompleteClass.as.Destroy.impl.Op.type.e88 -// CHECK:STDOUT: %CompleteClass.as.Destroy.impl.Op => constants.%CompleteClass.as.Destroy.impl.Op.452 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @CompleteClass.as.Destroy.impl.Op(constants.%i32) { -// CHECK:STDOUT: %T => constants.%i32 -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.a06 -// CHECK:STDOUT: %ptr => constants.%ptr.d29 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.329 -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass.as.Destroy.impl(constants.%ptr.9e1) { // CHECK:STDOUT: %T => constants.%ptr.9e1 // CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.0fe diff --git a/toolchain/check/testdata/class/generic/member_access.carbon b/toolchain/check/testdata/class/generic/member_access.carbon index 7f46512c978d..af4b08323b35 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -483,31 +483,25 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %pattern_type.3c1: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T) [symbolic] // CHECK:STDOUT: %Class.Make: %Class.Make.type = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.95a: = impl_witness @Class.%Destroy.impl_witness_table, @Class.as.Destroy.impl(%T) [symbolic] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @Class.%Destroy.impl_witness_table, @Class.as.Destroy.impl(%T) [symbolic] // CHECK:STDOUT: %ptr.955: type = ptr_type %Class [symbolic] // CHECK:STDOUT: %pattern_type.9e0: type = pattern_type %ptr.955 [symbolic] // CHECK:STDOUT: %Class.as.Destroy.impl.Op.type: type = fn_type @Class.as.Destroy.impl.Op, @Class.as.Destroy.impl(%T) [symbolic] // CHECK:STDOUT: %Class.as.Destroy.impl.Op: %Class.as.Destroy.impl.Op.type = struct_value () [symbolic] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class, (%Destroy.impl_witness.95a) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %require_complete.4f8: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %require_complete: = require_complete_type %Class [symbolic] // CHECK:STDOUT: %Class.val: %Class = struct_value () [symbolic] // CHECK:STDOUT: %StaticMemberFunctionCall.type: type = fn_type @StaticMemberFunctionCall [concrete] // CHECK:STDOUT: %StaticMemberFunctionCall: %StaticMemberFunctionCall.type = struct_value () [concrete] // CHECK:STDOUT: %Class.Make.specific_fn: = specific_function %Class.Make, @Class.Make(%T) [symbolic] -// CHECK:STDOUT: %.02c: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic] -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.specific_fn: = specific_function %Class.as.Destroy.impl.Op, @Class.as.Destroy.impl.Op(%T) [symbolic] -// CHECK:STDOUT: %require_complete.2ae: = require_complete_type %ptr.955 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -550,7 +544,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: generic impl @Class.as.Destroy.impl(@Class.%T.loc4_13.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @Class.%Destroy.impl_witness_table, @Class.as.Destroy.impl(%T) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.95a)] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @Class.%Destroy.impl_witness_table, @Class.as.Destroy.impl(%T) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Class.as.Destroy.impl.Op.type: type = fn_type @Class.as.Destroy.impl.Op, @Class.as.Destroy.impl(%T) [symbolic = %Class.as.Destroy.impl.Op.type (constants.%Class.as.Destroy.impl.Op.type)] @@ -597,7 +591,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [symbolic = @Class.as.Destroy.impl.%Class (constants.%Class)] // CHECK:STDOUT: impl_decl @Class.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@Class.as.Destroy.impl.%Class.as.Destroy.impl.Op.decl), @Class.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table, @Class.as.Destroy.impl(constants.%T) [symbolic = @Class.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.95a)] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table, @Class.as.Destroy.impl(constants.%T) [symbolic = @Class.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness)] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -615,7 +609,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc5_23.1 [symbolic = %pattern_type (constants.%pattern_type.3c1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc5_23.1 [symbolic = %require_complete (constants.%require_complete.4f8)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc5_23.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %Class.val: @Class.Make.%Class.loc5_23.1 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Class.Make.%Class.loc5_23.1 (%Class) { @@ -644,18 +638,10 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc8_49.1 [symbolic = %pattern_type (constants.%pattern_type.3c1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type %Class.loc8_49.1 [symbolic = %require_complete.loc9 (constants.%require_complete.4f8)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc8_49.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T.loc8_29.1) [symbolic = %Class.Make.type (constants.%Class.Make.type)] // CHECK:STDOUT: %Class.Make: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = struct_value () [symbolic = %Class.Make (constants.%Class.Make)] // CHECK:STDOUT: %Class.Make.specific_fn.loc9_18.2: = specific_function %Class.Make, @Class.Make(%T.loc8_29.1) [symbolic = %Class.Make.specific_fn.loc9_18.2 (constants.%Class.Make.specific_fn)] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @Class.%Destroy.impl_witness_table, @Class.as.Destroy.impl(%T.loc8_29.1) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.95a)] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc8_49.1, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc8_39.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc8_39.2 (constants.%.02c)] -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.type: type = fn_type @Class.as.Destroy.impl.Op, @Class.as.Destroy.impl(%T.loc8_29.1) [symbolic = %Class.as.Destroy.impl.Op.type (constants.%Class.as.Destroy.impl.Op.type)] -// CHECK:STDOUT: %Class.as.Destroy.impl.Op: @StaticMemberFunctionCall.%Class.as.Destroy.impl.Op.type (%Class.as.Destroy.impl.Op.type) = struct_value () [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.specific_fn: = specific_function %Class.as.Destroy.impl.Op, @Class.as.Destroy.impl.Op(%T.loc8_29.1) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.loc8_49.1 [symbolic = %ptr (constants.%ptr.955)] -// CHECK:STDOUT: %require_complete.loc8: = require_complete_type %ptr [symbolic = %require_complete.loc8 (constants.%require_complete.2ae)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) { // CHECK:STDOUT: !entry: @@ -665,14 +651,8 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %.loc9: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = specific_constant @Class.%Class.Make.decl, @Class(constants.%T) [symbolic = %Class.Make (constants.%Class.Make)] // CHECK:STDOUT: %Make.ref: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = name_ref Make, %.loc9 [symbolic = %Class.Make (constants.%Class.Make)] // CHECK:STDOUT: %Class.Make.specific_fn.loc9_18.1: = specific_function %Make.ref, @Class.Make(constants.%T) [symbolic = %Class.Make.specific_fn.loc9_18.2 (constants.%Class.Make.specific_fn)] -// CHECK:STDOUT: %.loc8_39.1: ref @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = splice_block %return {} -// CHECK:STDOUT: %Class.Make.call: init @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = call %Class.Make.specific_fn.loc9_18.1() to %.loc8_39.1 -// CHECK:STDOUT: %impl.elem0: @StaticMemberFunctionCall.%.loc8_39.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] -// CHECK:STDOUT: %bound_method.loc8_39.1: = bound_method %.loc8_39.1, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %bound_method.loc8_39.2: = bound_method %.loc8_39.1, %specific_fn -// CHECK:STDOUT: %addr: @StaticMemberFunctionCall.%ptr (%ptr.955) = addr_of %.loc8_39.1 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_39.2(%addr) +// CHECK:STDOUT: %.loc8: ref @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = splice_block %return {} +// CHECK:STDOUT: %Class.Make.call: init @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = call %Class.Make.specific_fn.loc9_18.1() to %.loc8 // CHECK:STDOUT: return %Class.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -691,18 +671,14 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.3c1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.4f8 +// CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: %Class.val => constants.%Class.val // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.as.Destroy.impl(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class -// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.95a -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.type => constants.%Class.as.Destroy.impl.Op.type -// CHECK:STDOUT: %Class.as.Destroy.impl.Op => constants.%Class.as.Destroy.impl.Op +// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.as.Destroy.impl.Op(constants.%T) { diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index 518b670ea641..22f130110a02 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -378,16 +378,11 @@ fn Test() -> i32 { // CHECK:STDOUT: %n.ref: %Inner.elem.6c2 = name_ref n, @Inner.%.loc6 [concrete = @Inner.%.loc6] // CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc14_11.2: %i32 = bind_value %.loc14_11.1 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.bound.loc13_3.1: = bound_method %.loc13_3, constants.%Inner.as.Destroy.impl.Op.ae2 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%Inner.as.Destroy.impl.Op.ae2, @Inner.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%Inner.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_3.1: = bound_method %.loc13_3, %Inner.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc13_3.1: %ptr.416 = addr_of %.loc13_3 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.call.loc13_3.1: init %empty_tuple.type = call %bound_method.loc13_3.1(%addr.loc13_3.1) -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.bound.loc13_3.2: = bound_method %c.var, constants.%Inner.as.Destroy.impl.Op.ae2 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%Inner.as.Destroy.impl.Op.ae2, @Inner.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%Inner.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_3.2: = bound_method %c.var, %Inner.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc13_3.2: %ptr.416 = addr_of %c.var -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.call.loc13_3.2: init %empty_tuple.type = call %bound_method.loc13_3.2(%addr.loc13_3.2) +// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%Inner.as.Destroy.impl.Op.ae2 +// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.specific_fn: = specific_function constants.%Inner.as.Destroy.impl.Op.ae2, @Inner.as.Destroy.impl.Op(constants.%i32) [concrete = constants.%Inner.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc13_3: = bound_method %c.var, %Inner.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.416 = addr_of %c.var +// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13_3(%addr) // CHECK:STDOUT: return %.loc14_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index 31bfc9bd9b2c..4ddea7dd8e5a 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -33,7 +33,6 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] // CHECK:STDOUT: %Destroy.impl_witness.b44: = impl_witness @A.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete] @@ -69,17 +68,8 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %pattern_type.9e0: type = pattern_type %ptr.955 [symbolic] // CHECK:STDOUT: %Class.as.Destroy.impl.Op.type: type = fn_type @Class.as.Destroy.impl.Op, @Class.as.Destroy.impl(%T) [symbolic] // CHECK:STDOUT: %Class.as.Destroy.impl.Op: %Class.as.Destroy.impl.Op.type = struct_value () [symbolic] -// CHECK:STDOUT: %ptr.937: type = ptr_type %tuple.type.30b [symbolic] // CHECK:STDOUT: %require_complete.fe1: = require_complete_type %tuple.type.30b [symbolic] // CHECK:STDOUT: %Class.Get.specific_fn.f73: = specific_function %Class.Get.cf9, @Class.Get(%T, %U) [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.8fa: = require_complete_type %ptr.937 [symbolic] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.30b, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.facet.1c6: %Destroy.type = facet_value %tuple.type.30b, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1c6 [symbolic] -// CHECK:STDOUT: %impl.elem0: %.1e9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.1c6) [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.536: = specific_function %Class.GetNoDeduce.c9a, @Class.GetNoDeduce(%T, %U) [symbolic] // CHECK:STDOUT: %Class.480: type = class_type @Class, @Class(%A) [concrete] @@ -93,14 +83,6 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.GetNoDeduce.type.5d6: type = fn_type @Class.GetNoDeduce, @Class(%A) [concrete] // CHECK:STDOUT: %Class.GetNoDeduce.162: %Class.GetNoDeduce.type.5d6 = struct_value () [concrete] // CHECK:STDOUT: %Class.Get.specific_fn.213: = specific_function %Class.Get.f37, @Class.Get(%A, %B) [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.ae3: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.cc6) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.87c: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.cc6) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.f13: %T.as.Destroy.impl.Op.type.87c = struct_value () [concrete] -// CHECK:STDOUT: %ptr.3b5: type = ptr_type %tuple.type.cc6 [concrete] -// CHECK:STDOUT: %complete_type.a4a: = complete_type_witness %ptr.3b5 [concrete] -// CHECK:STDOUT: %Destroy.facet.fae: %Destroy.type = facet_value %tuple.type.cc6, (%Destroy.impl_witness.ae3) [concrete] -// CHECK:STDOUT: %.c9f: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.fae [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.f13, @T.as.Destroy.impl.Op(%tuple.type.cc6) [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.type: type = fn_type @CallGenericMethodWithNonDeducedParam [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam: %CallGenericMethodWithNonDeducedParam.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] @@ -116,8 +98,6 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, 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: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -334,17 +314,10 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_20.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc19_20.1 (constants.%require_complete.fe1)] +// CHECK:STDOUT: %require_complete: = require_complete_type %tuple.type [symbolic = %require_complete (constants.%require_complete.fe1)] // CHECK:STDOUT: %Class.Get.type: type = fn_type @Class.Get, @Class(%T) [symbolic = %Class.Get.type (constants.%Class.Get.type.fd9)] // CHECK:STDOUT: %Class.Get: @Class.Get.%Class.Get.type (%Class.Get.type.fd9) = struct_value () [symbolic = %Class.Get (constants.%Class.Get.cf9)] // CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.2: = specific_function %Class.Get, @Class.Get(%T, %U.loc19_10.1) [symbolic = %Class.Get.specific_fn.loc19_39.2 (constants.%Class.Get.specific_fn.f73)] -// 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.1c6)] -// CHECK:STDOUT: %.loc19_20.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc19_20.3 (constants.%.1e9)] -// CHECK:STDOUT: %impl.elem0.loc19_20.2: @Class.Get.%.loc19_20.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc19_20.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc19_20.2: = specific_impl_function %impl.elem0.loc19_20.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc19_20.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.937)] -// CHECK:STDOUT: %require_complete.loc19_20.2: = require_complete_type %ptr [symbolic = %require_complete.loc19_20.2 (constants.%require_complete.8fa)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Class.Get.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: @@ -352,14 +325,8 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Get.ref: @Class.Get.%Class.Get.type (%Class.Get.type.fd9) = name_ref Get, %.loc19_39 [symbolic = %Class.Get (constants.%Class.Get.cf9)] // CHECK:STDOUT: %U.ref.loc19_43: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.1: = specific_function %Get.ref, @Class.Get(constants.%T, constants.%U) [symbolic = %Class.Get.specific_fn.loc19_39.2 (constants.%Class.Get.specific_fn.f73)] -// CHECK:STDOUT: %.loc19_20.1: ref @Class.Get.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %Class.Get.call: init @Class.Get.%tuple.type (%tuple.type.30b) = call %Class.Get.specific_fn.loc19_39.1() to %.loc19_20.1 -// CHECK:STDOUT: %impl.elem0.loc19_20.1: @Class.Get.%.loc19_20.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc19_20.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %bound_method.loc19_20.1: = bound_method %.loc19_20.1, %impl.elem0.loc19_20.1 -// CHECK:STDOUT: %specific_impl_fn.loc19_20.1: = specific_impl_function %impl.elem0.loc19_20.1, @Destroy.Op(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc19_20.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %bound_method.loc19_20.2: = bound_method %.loc19_20.1, %specific_impl_fn.loc19_20.1 -// CHECK:STDOUT: %addr: @Class.Get.%ptr (%ptr.937) = addr_of %.loc19_20.1 -// CHECK:STDOUT: %.loc19_20.2: init %empty_tuple.type = call %bound_method.loc19_20.2(%addr) +// CHECK:STDOUT: %.loc19_20: ref @Class.Get.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %Class.Get.call: init @Class.Get.%tuple.type (%tuple.type.30b) = call %Class.Get.specific_fn.loc19_39.1() to %.loc19_20 // CHECK:STDOUT: return %Class.Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -377,13 +344,6 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.GetNoDeduce: @Class.GetNoDeduce.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.766) = struct_value () [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.c9a)] // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2: = specific_function %Class.GetNoDeduce, @Class.GetNoDeduce(%T, %U.loc20_24.1) [symbolic = %Class.GetNoDeduce.specific_fn.loc20_53.2 (constants.%Class.GetNoDeduce.specific_fn.536)] // CHECK:STDOUT: %require_complete.loc20_70: = require_complete_type %tuple.type [symbolic = %require_complete.loc20_70 (constants.%require_complete.fe1)] -// 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.1c6)] -// CHECK:STDOUT: %.loc20_34.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc20_34.3 (constants.%.1e9)] -// CHECK:STDOUT: %impl.elem0.loc20_34.2: @Class.GetNoDeduce.%.loc20_34.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_34.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc20_34.2: = specific_impl_function %impl.elem0.loc20_34.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc20_34.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.937)] -// CHECK:STDOUT: %require_complete.loc20_34: = require_complete_type %ptr [symbolic = %require_complete.loc20_34 (constants.%require_complete.8fa)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Class.GetNoDeduce.%T (%T)) -> %return.param: @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: @@ -392,14 +352,8 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %x.ref: @Class.GetNoDeduce.%T (%T) = name_ref x, %x // CHECK:STDOUT: %U.ref.loc20_68: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.1: = specific_function %GetNoDeduce.ref, @Class.GetNoDeduce(constants.%T, constants.%U) [symbolic = %Class.GetNoDeduce.specific_fn.loc20_53.2 (constants.%Class.GetNoDeduce.specific_fn.536)] -// CHECK:STDOUT: %.loc20_34.1: ref @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %Class.GetNoDeduce.call: init @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = call %Class.GetNoDeduce.specific_fn.loc20_53.1(%x.ref) to %.loc20_34.1 -// CHECK:STDOUT: %impl.elem0.loc20_34.1: @Class.GetNoDeduce.%.loc20_34.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc20_34.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %bound_method.loc20_34.1: = bound_method %.loc20_34.1, %impl.elem0.loc20_34.1 -// CHECK:STDOUT: %specific_impl_fn.loc20_34.1: = specific_impl_function %impl.elem0.loc20_34.1, @Destroy.Op(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc20_34.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %bound_method.loc20_34.2: = bound_method %.loc20_34.1, %specific_impl_fn.loc20_34.1 -// CHECK:STDOUT: %addr: @Class.GetNoDeduce.%ptr (%ptr.937) = addr_of %.loc20_34.1 -// CHECK:STDOUT: %.loc20_34.2: init %empty_tuple.type = call %bound_method.loc20_34.2(%addr) +// CHECK:STDOUT: %.loc20_34: ref @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %Class.GetNoDeduce.call: init @Class.GetNoDeduce.%tuple.type (%tuple.type.30b) = call %Class.GetNoDeduce.specific_fn.loc20_53.1(%x.ref) to %.loc20_34 // CHECK:STDOUT: return %Class.GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -424,11 +378,6 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.Get.specific_fn: = specific_function %Get.ref, @Class.Get(constants.%A, constants.%B) [concrete = constants.%Class.Get.specific_fn.213] // CHECK:STDOUT: %.loc23_35: ref %tuple.type.cc6 = splice_block %return {} // CHECK:STDOUT: %Class.Get.call: init %tuple.type.cc6 = call %Class.Get.specific_fn() to %.loc23_35 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc23_35, constants.%T.as.Destroy.impl.Op.f13 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.f13, @T.as.Destroy.impl.Op(constants.%tuple.type.cc6) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc23_35, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.3b5 = addr_of %.loc23_35 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %Class.Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -447,14 +396,9 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %.loc28_25.5: ref %A = converted %.loc28_25.1, %.loc28_25.4 // CHECK:STDOUT: %.loc28_25.6: %A = bind_value %.loc28_25.5 // CHECK:STDOUT: %Class.GetNoDeduce.call: init %tuple.type.cc6 = call %Class.GetNoDeduce.specific_fn(%.loc28_25.6) to %.loc27_54 -// CHECK:STDOUT: %A.as.Destroy.impl.Op.bound: = bound_method %.loc28_25.2, constants.%A.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc28: %ptr.6db = addr_of %.loc28_25.2 -// CHECK:STDOUT: %A.as.Destroy.impl.Op.call: init %empty_tuple.type = call %A.as.Destroy.impl.Op.bound(%addr.loc28) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc27_54, constants.%T.as.Destroy.impl.Op.f13 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.f13, @T.as.Destroy.impl.Op(constants.%tuple.type.cc6) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc27_54, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc27: %ptr.3b5 = addr_of %.loc27_54 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc27) +// CHECK:STDOUT: %A.as.Destroy.impl.Op.bound: = bound_method %.loc28_25.4, constants.%A.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc28_25.4 +// CHECK:STDOUT: %A.as.Destroy.impl.Op.call: init %empty_tuple.type = call %A.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Class.GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -475,17 +419,10 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.65c // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_20.1 => constants.%require_complete.fe1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.fe1 // CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.fd9 // CHECK:STDOUT: %Class.Get => constants.%Class.Get.cf9 // CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.2 => constants.%Class.Get.specific_fn.f73 -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1c6 -// CHECK:STDOUT: %.loc19_20.3 => constants.%.1e9 -// CHECK:STDOUT: %impl.elem0.loc19_20.2 => constants.%impl.elem0 -// CHECK:STDOUT: %specific_impl_fn.loc19_20.2 => constants.%specific_impl_fn -// CHECK:STDOUT: %ptr => constants.%ptr.937 -// CHECK:STDOUT: %require_complete.loc19_20.2 => constants.%require_complete.8fa // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.GetNoDeduce(constants.%T, constants.%U) { @@ -501,13 +438,6 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.c9a // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.536 // CHECK:STDOUT: %require_complete.loc20_70 => constants.%require_complete.fe1 -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1c6 -// CHECK:STDOUT: %.loc20_34.3 => constants.%.1e9 -// CHECK:STDOUT: %impl.elem0.loc20_34.2 => constants.%impl.elem0 -// CHECK:STDOUT: %specific_impl_fn.loc20_34.2 => constants.%specific_impl_fn -// CHECK:STDOUT: %ptr => constants.%ptr.937 -// CHECK:STDOUT: %require_complete.loc20_34 => constants.%require_complete.8fa // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.as.Destroy.impl(constants.%T) { @@ -540,17 +470,10 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.edc // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_20.1 => constants.%complete_type.56a +// CHECK:STDOUT: %require_complete => constants.%complete_type.56a // CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.501 // CHECK:STDOUT: %Class.Get => constants.%Class.Get.f37 // CHECK:STDOUT: %Class.Get.specific_fn.loc19_39.2 => constants.%Class.Get.specific_fn.213 -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.ae3 -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.fae -// CHECK:STDOUT: %.loc19_20.3 => constants.%.c9f -// CHECK:STDOUT: %impl.elem0.loc19_20.2 => constants.%T.as.Destroy.impl.Op.f13 -// CHECK:STDOUT: %specific_impl_fn.loc19_20.2 => constants.%T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %ptr => constants.%ptr.3b5 -// CHECK:STDOUT: %require_complete.loc19_20.2 => constants.%complete_type.a4a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.GetNoDeduce(constants.%A, constants.%B) { @@ -566,12 +489,5 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.162 // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.438 // CHECK:STDOUT: %require_complete.loc20_70 => constants.%complete_type.56a -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.ae3 -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.fae -// CHECK:STDOUT: %.loc20_34.3 => constants.%.c9f -// CHECK:STDOUT: %impl.elem0.loc20_34.2 => constants.%T.as.Destroy.impl.Op.f13 -// CHECK:STDOUT: %specific_impl_fn.loc20_34.2 => constants.%T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %ptr => constants.%ptr.3b5 -// CHECK:STDOUT: %require_complete.loc20_34 => constants.%complete_type.a4a // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index 732544dd572e..9e0781a94d53 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -253,30 +253,18 @@ class Class(T:! type) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc22_12.2 [symbolic = %Class.loc21_19.2 (constants.%Class)] // CHECK:STDOUT: } // CHECK:STDOUT: %s: ref @Class.F.%Class.loc21_19.2 (%Class) = bind_name s, %s.var -// CHECK:STDOUT: %impl.elem0.loc22_5.1: @Class.F.%.loc22_5.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] -// CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %.loc22_5.1, %impl.elem0.loc22_5.1 -// CHECK:STDOUT: %specific_fn.loc22_5.1: = specific_function %impl.elem0.loc22_5.1, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %.loc22_5.1, %specific_fn.loc22_5.1 -// CHECK:STDOUT: %addr.loc22_5.1: @Class.F.%ptr (%ptr.955) = addr_of %.loc22_5.1 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call.loc22_5.1: init %empty_tuple.type = call %bound_method.loc22_5.2(%addr.loc22_5.1) -// CHECK:STDOUT: %impl.elem0.loc22_5.2: @Class.F.%.loc22_5.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] -// CHECK:STDOUT: %bound_method.loc22_5.3: = bound_method %s.var, %impl.elem0.loc22_5.2 -// CHECK:STDOUT: %specific_fn.loc22_5.2: = specific_function %impl.elem0.loc22_5.2, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %bound_method.loc22_5.4: = bound_method %s.var, %specific_fn.loc22_5.2 -// CHECK:STDOUT: %addr.loc22_5.2: @Class.F.%ptr (%ptr.955) = addr_of %s.var -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call.loc22_5.2: init %empty_tuple.type = call %bound_method.loc22_5.4(%addr.loc22_5.2) -// CHECK:STDOUT: %impl.elem0.loc21_5.1: @Class.F.%.loc22_5.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] -// CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %.loc21_5, %impl.elem0.loc21_5.1 -// CHECK:STDOUT: %specific_fn.loc21_5.1: = specific_function %impl.elem0.loc21_5.1, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %.loc21_5, %specific_fn.loc21_5.1 -// CHECK:STDOUT: %addr.loc21_5.1: @Class.F.%ptr (%ptr.955) = addr_of %.loc21_5 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call.loc21_5.1: init %empty_tuple.type = call %bound_method.loc21_5.2(%addr.loc21_5.1) -// CHECK:STDOUT: %impl.elem0.loc21_5.2: @Class.F.%.loc22_5.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] -// CHECK:STDOUT: %bound_method.loc21_5.3: = bound_method %c.var, %impl.elem0.loc21_5.2 -// CHECK:STDOUT: %specific_fn.loc21_5.2: = specific_function %impl.elem0.loc21_5.2, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %bound_method.loc21_5.4: = bound_method %c.var, %specific_fn.loc21_5.2 -// CHECK:STDOUT: %addr.loc21_5.2: @Class.F.%ptr (%ptr.955) = addr_of %c.var -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call.loc21_5.2: init %empty_tuple.type = call %bound_method.loc21_5.4(%addr.loc21_5.2) +// CHECK:STDOUT: %impl.elem0.loc22: @Class.F.%.loc22_5.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] +// CHECK:STDOUT: %bound_method.loc22_5.1: = bound_method %s.var, %impl.elem0.loc22 +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] +// CHECK:STDOUT: %bound_method.loc22_5.2: = bound_method %s.var, %specific_fn.loc22 +// CHECK:STDOUT: %addr.loc22: @Class.F.%ptr (%ptr.955) = addr_of %s.var +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %bound_method.loc22_5.2(%addr.loc22) +// CHECK:STDOUT: %impl.elem0.loc21: @Class.F.%.loc22_5.2 (%.02c) = impl_witness_access constants.%Destroy.impl_witness.95a, element0 [symbolic = %Class.as.Destroy.impl.Op (constants.%Class.as.Destroy.impl.Op)] +// CHECK:STDOUT: %bound_method.loc21_5.1: = bound_method %c.var, %impl.elem0.loc21 +// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Class.as.Destroy.impl.Op(constants.%T) [symbolic = %Class.as.Destroy.impl.Op.specific_fn (constants.%Class.as.Destroy.impl.Op.specific_fn)] +// CHECK:STDOUT: %bound_method.loc21_5.2: = bound_method %c.var, %specific_fn.loc21 +// CHECK:STDOUT: %addr.loc21: @Class.F.%ptr (%ptr.955) = addr_of %c.var +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %bound_method.loc21_5.2(%addr.loc21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index 27d1cb8e494c..8a352d751fa3 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -621,10 +621,10 @@ class B { // CHECK:STDOUT: %.loc15_44.2: ref %empty_tuple.type = temporary %.loc15_44.1, %A.F.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_45: %empty_tuple.type = converted %A.F.call, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_44.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_44.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc15_44.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc15_44.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc15_44.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc15_44.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_45 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index 6be2bb684ca9..353bd394be8e 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -169,8 +169,8 @@ fn F() -> i32 { // CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%.loc16 [concrete = @Class.%.loc16] // CHECK:STDOUT: %.loc21_37.1: ref %i32 = class_element_access %.loc21_28, element0 // CHECK:STDOUT: %.loc21_37.2: %i32 = bind_value %.loc21_37.1 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc21_26.3, constants.%Class.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc21_26.3 +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc21_26.10, constants.%Class.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc21_26.10 // CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Class.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %.loc21_37.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 7f235ed3ca1a..7dbc8e5e3dea 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -34,7 +34,6 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %Inner: type = class_type @Inner [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %i32 [concrete] @@ -192,12 +191,6 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %.loc28_45.3: %struct_type.c.d.dce = struct_literal (%MakeInner.call.loc28_26, %MakeInner.call.loc28_44) // CHECK:STDOUT: %.loc28_45.4: init %Outer = class_init (%MakeInner.call.loc28_26, %MakeInner.call.loc28_44), %return // CHECK:STDOUT: %.loc28_46: init %Outer = converted %.loc28_45.3, %.loc28_45.4 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.bound.loc28_45.1: = bound_method %.loc28_45.2, constants.%Inner.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc28_45.1: %ptr.78b = addr_of %.loc28_45.2 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.call.loc28_45.1: init %empty_tuple.type = call %Inner.as.Destroy.impl.Op.bound.loc28_45.1(%addr.loc28_45.1) -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.bound.loc28_45.2: = bound_method %.loc28_45.1, constants.%Inner.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc28_45.2: %ptr.78b = addr_of %.loc28_45.1 -// CHECK:STDOUT: %Inner.as.Destroy.impl.Op.call.loc28_45.2: init %empty_tuple.type = call %Inner.as.Destroy.impl.Op.bound.loc28_45.2(%addr.loc28_45.2) // CHECK:STDOUT: return %.loc28_46 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index a38a6a409ad8..6482544d3f97 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -195,8 +195,8 @@ class A { // CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%.loc23 [concrete = @B.%.loc23] // CHECK:STDOUT: %.loc26_20.1: ref %i32 = class_element_access %.loc26_19.2, element0 // CHECK:STDOUT: %.loc26_20.2: %i32 = bind_value %.loc26_20.1 -// CHECK:STDOUT: %B.as.Destroy.impl.Op.bound: = bound_method %.loc26_19.1, constants.%B.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.bac = addr_of %.loc26_19.1 +// CHECK:STDOUT: %B.as.Destroy.impl.Op.bound: = bound_method %.loc26_19.2, constants.%B.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.bac = addr_of %.loc26_19.2 // CHECK:STDOUT: %B.as.Destroy.impl.Op.call: init %empty_tuple.type = call %B.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %.loc26_20.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index f249a8a7f04f..42de72c758c0 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -406,8 +406,8 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%.loc39_20.2) // CHECK:STDOUT: %.loc39_33.1: %i32 = value_of_initializer %Class.F.call // CHECK:STDOUT: %.loc39_33.2: %i32 = converted %Class.F.call, %.loc39_33.1 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc39_18.3, constants.%Class.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc39_18.3 +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc39_18.7, constants.%Class.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc39_18.7 // CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Class.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %.loc39_33.2 // CHECK:STDOUT: } @@ -474,8 +474,8 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Class.F.call: init %i32 = call %Class.F.bound(%.loc58_15.3) // CHECK:STDOUT: %.loc58_20.1: %i32 = value_of_initializer %Class.F.call // CHECK:STDOUT: %.loc58_20.2: %i32 = converted %Class.F.call, %.loc58_20.1 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc58_15.1, constants.%Class.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc58_15.1 +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc58_15.2, constants.%Class.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc58_15.2 // CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Class.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %.loc58_20.2 // CHECK:STDOUT: } @@ -492,8 +492,8 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Class.G.call: init %i32 = call %Class.G.bound(%addr.loc62_15.1) // CHECK:STDOUT: %.loc62_20.1: %i32 = value_of_initializer %Class.G.call // CHECK:STDOUT: %.loc62_20.2: %i32 = converted %Class.G.call, %.loc62_20.1 -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc62_15.1, constants.%Class.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc62_15.2: %ptr.e71 = addr_of %.loc62_15.1 +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc62_15.2, constants.%Class.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc62_15.2: %ptr.e71 = addr_of %.loc62_15.2 // CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Class.as.Destroy.impl.Op.bound(%addr.loc62_15.2) // CHECK:STDOUT: return %.loc62_20.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index abce138eb2c6..267559218228 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -341,14 +341,11 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc10: %array_type.002 = bind_value %a.ref // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%.loc10) to %.loc8 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc8, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8: %ptr.019 = addr_of %.loc8 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc8) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc9: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc9) +// CHECK:STDOUT: %addr: %ptr.301 = addr_of %a.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1040,14 +1037,11 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc21: %array_type.15a = converted %a.ref, [concrete = ] // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn() to %.loc8 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc8, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8: %ptr.019 = addr_of %.loc8 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc8) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.1f9 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1f9, @T.as.Destroy.impl.Op(constants.%array_type.002) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method: = bound_method %a.var, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc10: %ptr.301 = addr_of %a.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc10) +// CHECK:STDOUT: %addr: %ptr.301 = addr_of %a.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 207bf164dd13..3e80c5ebdf0c 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -76,7 +76,6 @@ fn G() -> i32 { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -291,9 +290,6 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%D) [concrete = constants.%F.specific_fn.c4a] // CHECK:STDOUT: %.loc9_15: ref %D = splice_block %return {} // CHECK:STDOUT: %F.call: init %D = call %F.specific_fn(%p.ref) to %.loc9_15 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc9_15, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc9_15 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -353,7 +349,6 @@ fn G() -> i32 { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %I.type: type = generic_class_type @I [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.generic: %I.type = struct_value () [concrete] // CHECK:STDOUT: %I.ff1: type = class_type @I, @I(%T) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -375,7 +370,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %require_complete.1c8: = require_complete_type %I.ff1 [symbolic] +// CHECK:STDOUT: %require_complete: = require_complete_type %I.ff1 [symbolic] // CHECK:STDOUT: %F.specific_fn.ef1: = specific_function %F, @F(%T) [symbolic] // CHECK:STDOUT: %I.ed8: type = class_type @I, @I(%C) [concrete] // CHECK:STDOUT: %pattern_type.917: type = pattern_type %I.ed8 [concrete] @@ -542,7 +537,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type: type = pattern_type %I.loc7_22.1 [symbolic = %pattern_type (constants.%pattern_type.576)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %I.loc7_22.1 [symbolic = %require_complete (constants.%require_complete.1c8)] +// CHECK:STDOUT: %require_complete: = require_complete_type %I.loc7_22.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %F.specific_fn.loc7_39.2: = specific_function constants.%F, @F(%T.loc7_6.1) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.ef1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%p.param: @F.%I.loc7_22.1 (%I.ff1)) -> %return.param: %C { @@ -552,9 +547,6 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.ef1)] // CHECK:STDOUT: %.loc7_25: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn.loc7_39.1(%p.ref) to %.loc7_25 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc7_25, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc7_25 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -566,9 +558,6 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.04a] // CHECK:STDOUT: %.loc9_15: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc9_15 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc9_15, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc9_15 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -597,7 +586,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type => constants.%pattern_type.576 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1c8 +// CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.ef1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -624,7 +613,6 @@ fn G() -> i32 { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Outer.type: type = generic_class_type @Outer [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Outer.generic: %Outer.type = struct_value () [concrete] // CHECK:STDOUT: %Outer.9d6: type = class_type @Outer, @Outer(%T) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] @@ -632,7 +620,6 @@ fn G() -> i32 { // CHECK:STDOUT: %Inner.generic.137: %Inner.type.eae = struct_value () [symbolic] // CHECK:STDOUT: %Inner.c71: type = class_type @Inner, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] // CHECK:STDOUT: %Destroy.impl_witness.de8: = impl_witness @Inner.%Destroy.impl_witness_table, @Inner.as.Destroy.impl(%T, %U) [symbolic] // CHECK:STDOUT: %ptr.276: type = ptr_type %Inner.c71 [symbolic] @@ -665,18 +652,9 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.65c: type = pattern_type %tuple.type.30b [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.937: type = ptr_type %tuple.type.30b [symbolic] // CHECK:STDOUT: %require_complete.fe1: = require_complete_type %tuple.type.30b [symbolic] // CHECK:STDOUT: %require_complete.e7e: = require_complete_type %Inner.c71 [symbolic] // CHECK:STDOUT: %F.specific_fn.dd9: = specific_function %F, @F(%T, %U) [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T) [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.8fa: = require_complete_type %ptr.937 [symbolic] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.30b, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.facet.1c6: %Destroy.type = facet_value %tuple.type.30b, (%Destroy.lookup_impl_witness) [symbolic] -// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.1c6 [symbolic] -// CHECK:STDOUT: %impl.elem0: %.1e9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet.1c6) [symbolic] // CHECK:STDOUT: %Outer.7c4: type = class_type @Outer, @Outer(%C) [concrete] // CHECK:STDOUT: %Inner.type.181: type = generic_class_type @Inner, @Outer(%C) [concrete] // CHECK:STDOUT: %Inner.generic.205: %Inner.type.181 = struct_value () [concrete] @@ -687,14 +665,6 @@ fn G() -> i32 { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.4a7: = specific_function %F, @F(%C, %D) [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.2a9: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.e8a) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.290: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.e8a) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.ce2: %T.as.Destroy.impl.Op.type.290 = struct_value () [concrete] -// CHECK:STDOUT: %ptr.d45: type = ptr_type %tuple.type.e8a [concrete] -// CHECK:STDOUT: %complete_type.149: = complete_type_witness %ptr.d45 [concrete] -// CHECK:STDOUT: %Destroy.facet.5de: %Destroy.type = facet_value %tuple.type.e8a, (%Destroy.impl_witness.2a9) [concrete] -// CHECK:STDOUT: %.77c: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.5de [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.ce2, @T.as.Destroy.impl.Op(%tuple.type.e8a) [concrete] // CHECK:STDOUT: %complete_type.53b: = complete_type_witness %tuple.type.e8a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -705,8 +675,6 @@ fn G() -> i32 { // 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: @T.as.Destroy.impl.%T.as.Destroy.impl.Op.type (%T.as.Destroy.impl.Op.type.bc9) = import_ref Core//prelude/parts/destroy, loc8_29, loaded [symbolic = @T.as.Destroy.impl.%T.as.Destroy.impl.Op (constants.%T.as.Destroy.impl.Op.46f)] -// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Core.import_ref.0b9), @T.as.Destroy.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -983,30 +951,17 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.loc13_48: type = pattern_type %tuple.type [symbolic = %pattern_type.loc13_48 (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13_48.1: = require_complete_type %tuple.type [symbolic = %require_complete.loc13_48.1 (constants.%require_complete.fe1)] +// CHECK:STDOUT: %require_complete.loc13_48: = require_complete_type %tuple.type [symbolic = %require_complete.loc13_48 (constants.%require_complete.fe1)] // CHECK:STDOUT: %require_complete.loc13_27: = require_complete_type %Inner.loc13_45.1 [symbolic = %require_complete.loc13_27 (constants.%require_complete.e7e)] // CHECK:STDOUT: %F.specific_fn.loc13_67.2: = specific_function constants.%F, @F(%T.loc13_6.1, %U.loc13_16.1) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.dd9)] -// 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.1c6)] -// CHECK:STDOUT: %.loc13_48.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc13_48.3 (constants.%.1e9)] -// CHECK:STDOUT: %impl.elem0.loc13_48.2: @F.%.loc13_48.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_48.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc13_48.2: = specific_impl_function %impl.elem0.loc13_48.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc13_48.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [symbolic = %ptr (constants.%ptr.937)] -// CHECK:STDOUT: %require_complete.loc13_48.2: = require_complete_type %ptr [symbolic = %require_complete.loc13_48.2 (constants.%require_complete.8fa)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%p.param: @F.%Inner.loc13_45.1 (%Inner.c71)) -> %return.param: @F.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %p.ref: @F.%Inner.loc13_45.1 (%Inner.c71) = name_ref p, %p // CHECK:STDOUT: %F.specific_fn.loc13_67.1: = specific_function %F.ref, @F(constants.%T, constants.%U) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.dd9)] -// CHECK:STDOUT: %.loc13_48.1: ref @F.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.30b) = call %F.specific_fn.loc13_67.1(%p.ref) to %.loc13_48.1 -// CHECK:STDOUT: %impl.elem0.loc13_48.1: @F.%.loc13_48.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc13_48.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %bound_method.loc13_48.1: = bound_method %.loc13_48.1, %impl.elem0.loc13_48.1 -// CHECK:STDOUT: %specific_impl_fn.loc13_48.1: = specific_impl_function %impl.elem0.loc13_48.1, @Destroy.Op(constants.%Destroy.facet.1c6) [symbolic = %specific_impl_fn.loc13_48.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %bound_method.loc13_48.2: = bound_method %.loc13_48.1, %specific_impl_fn.loc13_48.1 -// CHECK:STDOUT: %addr: @F.%ptr (%ptr.937) = addr_of %.loc13_48.1 -// CHECK:STDOUT: %.loc13_48.2: init %empty_tuple.type = call %bound_method.loc13_48.2(%addr) +// CHECK:STDOUT: %.loc13_48: ref @F.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.30b) = call %F.specific_fn.loc13_67.1(%p.ref) to %.loc13_48 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1018,11 +973,6 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [concrete = constants.%F.specific_fn.4a7] // CHECK:STDOUT: %.loc15_28: ref %tuple.type.e8a = splice_block %return {} // CHECK:STDOUT: %F.call: init %tuple.type.e8a = call %F.specific_fn(%p.ref) to %.loc15_28 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_28, constants.%T.as.Destroy.impl.Op.ce2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ce2, @T.as.Destroy.impl.Op(constants.%tuple.type.e8a) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc15_28, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.d45 = addr_of %.loc15_28 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1081,16 +1031,9 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.65c // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13_48.1 => constants.%require_complete.fe1 +// CHECK:STDOUT: %require_complete.loc13_48 => constants.%require_complete.fe1 // CHECK:STDOUT: %require_complete.loc13_27 => constants.%require_complete.e7e // CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.dd9 -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.1c6 -// CHECK:STDOUT: %.loc13_48.3 => constants.%.1e9 -// CHECK:STDOUT: %impl.elem0.loc13_48.2 => constants.%impl.elem0 -// CHECK:STDOUT: %specific_impl_fn.loc13_48.2 => constants.%specific_impl_fn -// CHECK:STDOUT: %ptr => constants.%ptr.937 -// CHECK:STDOUT: %require_complete.loc13_48.2 => constants.%require_complete.8fa // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(constants.%C) { @@ -1120,16 +1063,9 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.9ec // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13_48.1 => constants.%complete_type.53b +// CHECK:STDOUT: %require_complete.loc13_48 => constants.%complete_type.53b // CHECK:STDOUT: %require_complete.loc13_27 => constants.%complete_type.357 // CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.4a7 -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.2a9 -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.5de -// CHECK:STDOUT: %.loc13_48.3 => constants.%.77c -// CHECK:STDOUT: %impl.elem0.loc13_48.2 => constants.%T.as.Destroy.impl.Op.ce2 -// CHECK:STDOUT: %specific_impl_fn.loc13_48.2 => constants.%T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %ptr => constants.%ptr.d45 -// CHECK:STDOUT: %require_complete.loc13_48.2 => constants.%complete_type.149 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- nontype.carbon @@ -1355,10 +1291,10 @@ fn G() -> i32 { // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn(%.loc9_15.2) // CHECK:STDOUT: %.loc9_33.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc9_33.2: %i32 = converted %F.call, %.loc9_33.1 -// CHECK:STDOUT: %WithNontype.as.Destroy.impl.Op.bound: = bound_method %.loc9_13.2, constants.%WithNontype.as.Destroy.impl.Op.002 +// CHECK:STDOUT: %WithNontype.as.Destroy.impl.Op.bound: = bound_method %.loc9_13.4, constants.%WithNontype.as.Destroy.impl.Op.002 // CHECK:STDOUT: %WithNontype.as.Destroy.impl.Op.specific_fn: = specific_function constants.%WithNontype.as.Destroy.impl.Op.002, @WithNontype.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%WithNontype.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc9_13: = bound_method %.loc9_13.2, %WithNontype.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.791 = addr_of %.loc9_13.2 +// CHECK:STDOUT: %bound_method.loc9_13: = bound_method %.loc9_13.4, %WithNontype.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.791 = addr_of %.loc9_13.4 // CHECK:STDOUT: %WithNontype.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc9_13(%addr) // CHECK:STDOUT: return %.loc9_33.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index 9dd6e1f07883..23309c77ab84 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -67,7 +67,6 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op: %C.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -254,9 +253,6 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [concrete = constants.%F.specific_fn.4a7] // CHECK:STDOUT: %.loc9_20: ref %D = splice_block %return {} // CHECK:STDOUT: %F.call: init %D = call %F.specific_fn(%pair.ref) to %.loc9_20 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc9_20, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc9_20 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index f567ad0d122a..e11cb47b5420 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -73,11 +73,10 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.edd: = impl_witness @C.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @C.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op: %C.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -174,7 +173,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.edd] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -214,9 +213,6 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.04a] // CHECK:STDOUT: %.loc8_13: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc8_13 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc8_13, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc8_13 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -250,11 +246,10 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.edd: = impl_witness @C.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @C.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op: %C.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -357,7 +352,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.edd] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -398,9 +393,6 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.04a] // CHECK:STDOUT: %.loc8_19: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc8_19 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc8_19, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc8_19 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -436,11 +428,10 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.edd: = impl_witness @C.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @C.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op: %C.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -462,10 +453,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %F.specific_fn.486: = specific_function %F, @F(%const) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.dff: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%const) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.206: %T.as.Destroy.impl.Op.type.dff = struct_value () [concrete] // CHECK:STDOUT: %complete_type.247: = complete_type_witness %ptr.801 [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.206, @T.as.Destroy.impl.Op(%const) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -545,7 +533,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.edd] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -585,11 +573,6 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%const) [concrete = constants.%F.specific_fn.486] // CHECK:STDOUT: %.loc8_19: ref %const = splice_block %return {} // CHECK:STDOUT: %F.call: init %const = call %F.specific_fn(%p.ref) to %.loc8_19 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_19, constants.%T.as.Destroy.impl.Op.206 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.206, @T.as.Destroy.impl.Op(constants.%const) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_19, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.801 = addr_of %.loc8_19 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %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 84f8b89db1b4..805422f59663 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -341,13 +341,13 @@ fn G() { // CHECK:STDOUT: %.loc13_30.5: ref %C = converted %.loc13_30.1, %.loc13_30.4 // CHECK:STDOUT: %.loc13_30.6: %C = bind_value %.loc13_30.5 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc13_8.2, %.loc13_30.6) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc13_30.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_30: %ptr.019 = addr_of %.loc13_30.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc13_30.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc13_30: %ptr.019 = addr_of %.loc13_30.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc13_30) -// CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.bound: = bound_method %.loc13_6.2, constants.%HoldsType.as.Destroy.impl.Op.26d +// CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.bound: = bound_method %.loc13_6.4, constants.%HoldsType.as.Destroy.impl.Op.26d // CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.specific_fn: = specific_function constants.%HoldsType.as.Destroy.impl.Op.26d, @HoldsType.as.Destroy.impl.Op(constants.%tuple) [concrete = constants.%HoldsType.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc13_6.2, %HoldsType.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc13_6: %ptr.79a = addr_of %.loc13_6.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc13_6.4, %HoldsType.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc13_6: %ptr.79a = addr_of %.loc13_6.4 // CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc13_6) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -649,13 +649,13 @@ fn G() { // CHECK:STDOUT: %.loc13_33.5: ref %C = converted %.loc13_33.1, %.loc13_33.4 // CHECK:STDOUT: %.loc13_33.6: %C = bind_value %.loc13_33.5 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc13_8.2, %.loc13_33.6) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc13_33.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_33: %ptr.019 = addr_of %.loc13_33.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc13_33.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc13_33: %ptr.019 = addr_of %.loc13_33.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc13_33) -// CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.bound: = bound_method %.loc13_6.2, constants.%HoldsType.as.Destroy.impl.Op.7b8 +// CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.bound: = bound_method %.loc13_6.4, constants.%HoldsType.as.Destroy.impl.Op.7b8 // CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.specific_fn: = specific_function constants.%HoldsType.as.Destroy.impl.Op.7b8, @HoldsType.as.Destroy.impl.Op(constants.%struct) [concrete = constants.%HoldsType.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc13_6.2, %HoldsType.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc13_6: %ptr.5d1 = addr_of %.loc13_6.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc13_6.4, %HoldsType.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc13_6: %ptr.5d1 = addr_of %.loc13_6.4 // CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc13_6) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1005,13 +1005,13 @@ fn G() { // CHECK:STDOUT: %.loc27_8: ref %HoldsType.f95cf2.2 = converted %.loc27_6.1, %.loc27_6.4 // CHECK:STDOUT: %.loc27_26: %empty_struct_type = struct_literal () // CHECK:STDOUT: %impl.elem0: %.e9e = impl_witness_access constants.%Destroy.impl_witness.2b4af8.2, element0 [symbolic = constants.%HoldsType.as.Destroy.impl.Op.138e7c.2] -// CHECK:STDOUT: %bound_method.loc27_6.1: = bound_method %.loc27_6.2, %impl.elem0 +// CHECK:STDOUT: %bound_method.loc27_6.1: = bound_method %.loc27_6.4, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @HoldsType.as.Destroy.impl.Op(constants.%c) [symbolic = constants.%HoldsType.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc27_6.2: = bound_method %.loc27_6.2, %specific_fn -// CHECK:STDOUT: %addr.loc27: %ptr.deb697.2 = addr_of %.loc27_6.2 +// CHECK:STDOUT: %bound_method.loc27_6.2: = bound_method %.loc27_6.4, %specific_fn +// CHECK:STDOUT: %addr.loc27: %ptr.deb697.2 = addr_of %.loc27_6.4 // CHECK:STDOUT: %HoldsType.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc27_6.2(%addr.loc27) -// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc26_26.2, constants.%Class.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc26: %ptr.e71 = addr_of %.loc26_26.2 +// CHECK:STDOUT: %Class.as.Destroy.impl.Op.bound: = bound_method %.loc26_26.6, constants.%Class.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc26: %ptr.e71 = addr_of %.loc26_26.6 // CHECK:STDOUT: %Class.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Class.as.Destroy.impl.Op.bound(%addr.loc26) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1324,10 +1324,10 @@ fn G() { // CHECK:STDOUT: %.loc24_27.2: ref %array_type = temporary %.loc24_25.2, %.loc24_27.1 // CHECK:STDOUT: %.loc24_27.3: %array_type = bind_value %.loc24_27.2 // CHECK:STDOUT: %.loc24_48: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_25.2, constants.%T.as.Destroy.impl.Op.246 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_27.2, constants.%T.as.Destroy.impl.Op.246 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.246, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc24_25.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.ea3 = addr_of %.loc24_25.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc24_27.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.ea3 = addr_of %.loc24_27.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // 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 17277507cbd4..217133bb3512 100644 --- a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon +++ b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon @@ -391,8 +391,8 @@ fn F() { // CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%facet_value) [concrete = constants.%G.specific_fn] // CHECK:STDOUT: %.loc45_8.2: %C = bind_value %.loc45_8.1 // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn(%.loc45_8.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc45_6.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc45_6.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc45_6.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc45_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } 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 6eaf97564460..22cf898c9f3b 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 @@ -665,8 +665,8 @@ fn G() { // CHECK:STDOUT: %CallGenericMethod.specific_fn: = specific_function %CallGenericMethod.ref, @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet) [concrete = constants.%CallGenericMethod.specific_fn] // CHECK:STDOUT: %.loc18_38.2: %GenericParam = bind_value %.loc18_38.1 // CHECK:STDOUT: %CallGenericMethod.call: init %empty_tuple.type = call %CallGenericMethod.specific_fn(%.loc18_38.2) -// CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.bound: = bound_method %.loc18_36.2, constants.%GenericParam.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.f73 = addr_of %.loc18_36.2 +// CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.bound: = bound_method %.loc18_36.4, constants.%GenericParam.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.f73 = addr_of %.loc18_36.4 // CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.call: init %empty_tuple.type = call %GenericParam.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // 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 0aeecce91c08..fbe183620337 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 @@ -176,8 +176,8 @@ fn F() { // CHECK:STDOUT: %WalkAnimal.specific_fn: = specific_function %WalkAnimal.ref, @WalkAnimal(constants.%Animal.facet) [concrete = constants.%WalkAnimal.specific_fn] // CHECK:STDOUT: %.loc23_17.2: %Goat = bind_value %.loc23_17.1 // CHECK:STDOUT: %WalkAnimal.call: init %empty_tuple.type = call %WalkAnimal.specific_fn(%.loc23_17.2) -// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound: = bound_method %.loc23_15.2, constants.%Goat.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc23_15.2 +// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound: = bound_method %.loc23_15.4, constants.%Goat.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc23_15.4 // CHECK:STDOUT: %Goat.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Goat.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // 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 e2fa383dcd26..978a7ce92066 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 @@ -392,11 +392,11 @@ fn B() { // CHECK:STDOUT: %.loc20_24.2: %ImplsGeneric = bind_value %.loc20_24.1 // CHECK:STDOUT: %.loc20_44.2: %GenericParam = bind_value %.loc20_44.1 // CHECK:STDOUT: %CallGenericMethod.call: init %empty_tuple.type = call %CallGenericMethod.specific_fn(%.loc20_24.2, %.loc20_44.2) -// CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.bound: = bound_method %.loc20_42.2, constants.%GenericParam.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc20_42: %ptr.f73 = addr_of %.loc20_42.2 +// CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.bound: = bound_method %.loc20_42.4, constants.%GenericParam.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc20_42: %ptr.f73 = addr_of %.loc20_42.4 // CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.call: init %empty_tuple.type = call %GenericParam.as.Destroy.impl.Op.bound(%addr.loc20_42) -// CHECK:STDOUT: %ImplsGeneric.as.Destroy.impl.Op.bound: = bound_method %.loc20_22.2, constants.%ImplsGeneric.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc20_22: %ptr.011 = addr_of %.loc20_22.2 +// CHECK:STDOUT: %ImplsGeneric.as.Destroy.impl.Op.bound: = bound_method %.loc20_22.4, constants.%ImplsGeneric.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc20_22: %ptr.011 = addr_of %.loc20_22.4 // CHECK:STDOUT: %ImplsGeneric.as.Destroy.impl.Op.call: init %empty_tuple.type = call %ImplsGeneric.as.Destroy.impl.Op.bound(%addr.loc20_22) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -673,8 +673,8 @@ fn B() { // CHECK:STDOUT: %A.specific_fn: = specific_function %A.ref, @A(constants.%I.facet) [concrete = constants.%A.specific_fn] // CHECK:STDOUT: %.loc12_8.2: %C = bind_value %.loc12_8.1 // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.specific_fn(%.loc12_8.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc12_6.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc12_6.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc12_6.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc12_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -926,8 +926,8 @@ fn B() { // CHECK:STDOUT: %.loc19_6.3: init %C = class_init (), %.loc19_6.2 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc19_6.4: ref %C = temporary %.loc19_6.2, %.loc19_6.3 // CHECK:STDOUT: %.loc19_8: ref %C = converted %.loc19_6.1, %.loc19_6.4 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc19_6.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc19_6.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc19_6.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc19_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1185,10 +1185,10 @@ fn B() { // CHECK:STDOUT: %.loc19_6.3: init %C.c74 = class_init (), %.loc19_6.2 [concrete = constants.%C.val] // CHECK:STDOUT: %.loc19_6.4: ref %C.c74 = temporary %.loc19_6.2, %.loc19_6.3 // CHECK:STDOUT: %.loc19_8: ref %C.c74 = converted %.loc19_6.1, %.loc19_6.4 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc19_6.2, constants.%C.as.Destroy.impl.Op.f25 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc19_6.4, constants.%C.as.Destroy.impl.Op.f25 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn: = specific_function constants.%C.as.Destroy.impl.Op.f25, @C.as.Destroy.impl.Op(constants.%empty_struct_type, constants.%empty_struct_type) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc19_6.2, %C.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.128 = addr_of %.loc19_6.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc19_6.4, %C.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.128 = addr_of %.loc19_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // 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 dfed68aecd33..783ae24449c0 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 @@ -442,14 +442,14 @@ fn F() { // CHECK:STDOUT: %Eat.ref.loc27: %Eats.assoc_type = name_ref Eat, @Eats.%assoc0 [concrete = constants.%assoc0.e43] // CHECK:STDOUT: %impl.elem0.loc27: %.f6e = impl_witness_access constants.%Eats.impl_witness, element0 [concrete = constants.%Goat.as.Eats.impl.Eat] // CHECK:STDOUT: %Goat.as.Eats.impl.Eat.call.loc27: init %empty_tuple.type = call %impl.elem0.loc27() -// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound.loc27: = bound_method %.loc27_6.2, constants.%Goat.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc27: %ptr.940 = addr_of %.loc27_6.2 +// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound.loc27: = bound_method %.loc27_6.4, constants.%Goat.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc27: %ptr.940 = addr_of %.loc27_6.4 // CHECK:STDOUT: %Goat.as.Destroy.impl.Op.call.loc27: init %empty_tuple.type = call %Goat.as.Destroy.impl.Op.bound.loc27(%addr.loc27) -// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound.loc26: = bound_method %.loc26_6.2, constants.%Goat.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc26: %ptr.940 = addr_of %.loc26_6.2 +// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound.loc26: = bound_method %.loc26_6.4, constants.%Goat.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc26: %ptr.940 = addr_of %.loc26_6.4 // CHECK:STDOUT: %Goat.as.Destroy.impl.Op.call.loc26: init %empty_tuple.type = call %Goat.as.Destroy.impl.Op.bound.loc26(%addr.loc26) -// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_28.2, constants.%Goat.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc22: %ptr.940 = addr_of %.loc22_28.2 +// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_28.4, constants.%Goat.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc22: %ptr.940 = addr_of %.loc22_28.4 // CHECK:STDOUT: %Goat.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %Goat.as.Destroy.impl.Op.bound.loc22(%addr.loc22) // CHECK:STDOUT: return // 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 179f1794cfae..b55061f6c7da 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 @@ -471,11 +471,11 @@ fn F() { // CHECK:STDOUT: %.loc35_19.2: %Goat = bind_value %.loc35_19.1 // CHECK:STDOUT: %.loc35_31.2: %Grass = bind_value %.loc35_31.1 // CHECK:STDOUT: %HandleAnimal.call: init %empty_tuple.type = call %HandleAnimal.specific_fn(%.loc35_19.2, %.loc35_31.2) -// CHECK:STDOUT: %Grass.as.Destroy.impl.Op.bound: = bound_method %.loc35_29.2, constants.%Grass.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc35_29: %ptr.2bd = addr_of %.loc35_29.2 +// CHECK:STDOUT: %Grass.as.Destroy.impl.Op.bound: = bound_method %.loc35_29.4, constants.%Grass.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc35_29: %ptr.2bd = addr_of %.loc35_29.4 // CHECK:STDOUT: %Grass.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Grass.as.Destroy.impl.Op.bound(%addr.loc35_29) -// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound: = bound_method %.loc35_17.2, constants.%Goat.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc35_17: %ptr.940 = addr_of %.loc35_17.2 +// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound: = bound_method %.loc35_17.4, constants.%Goat.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc35_17: %ptr.940 = addr_of %.loc35_17.4 // CHECK:STDOUT: %Goat.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Goat.as.Destroy.impl.Op.bound(%addr.loc35_17) // CHECK:STDOUT: return // 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 2ffd17e09252..cc1e24aa55f3 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 @@ -222,8 +222,8 @@ fn F() { // CHECK:STDOUT: %HandleAnimal.specific_fn: = specific_function %HandleAnimal.ref, @HandleAnimal(constants.%Animal.facet) [concrete = constants.%HandleAnimal.specific_fn] // CHECK:STDOUT: %.loc25_19.2: %Goat = bind_value %.loc25_19.1 // CHECK:STDOUT: %HandleAnimal.call: init %empty_tuple.type = call %HandleAnimal.specific_fn(%.loc25_19.2) -// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound: = bound_method %.loc25_17.2, constants.%Goat.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc25_17.2 +// CHECK:STDOUT: %Goat.as.Destroy.impl.Op.bound: = bound_method %.loc25_17.4, constants.%Goat.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.940 = addr_of %.loc25_17.4 // CHECK:STDOUT: %Goat.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Goat.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // 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 ed9a50058222..2c3d354540e7 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 @@ -382,11 +382,11 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) { // CHECK:STDOUT: %.loc41_19.4: %RuntimeConvertTo = bind_value %.loc41_19.3 // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%tuple, ) [concrete = ] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%holds_to.ref) -// CHECK:STDOUT: %RuntimeConvertTo.as.Destroy.impl.Op.bound: = bound_method %.loc41_19.1, constants.%RuntimeConvertTo.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc41: %ptr.339 = addr_of %.loc41_19.1 +// CHECK:STDOUT: %RuntimeConvertTo.as.Destroy.impl.Op.bound: = bound_method %.loc41_19.3, constants.%RuntimeConvertTo.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc41: %ptr.339 = addr_of %.loc41_19.3 // CHECK:STDOUT: %RuntimeConvertTo.as.Destroy.impl.Op.call: init %empty_tuple.type = call %RuntimeConvertTo.as.Destroy.impl.Op.bound(%addr.loc41) -// CHECK:STDOUT: %RuntimeConvertFrom.as.Destroy.impl.Op.bound: = bound_method %.loc30_36.2, constants.%RuntimeConvertFrom.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc30: %ptr.415 = addr_of %.loc30_36.2 +// CHECK:STDOUT: %RuntimeConvertFrom.as.Destroy.impl.Op.bound: = bound_method %.loc30_36.4, constants.%RuntimeConvertFrom.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc30: %ptr.415 = addr_of %.loc30_36.4 // CHECK:STDOUT: %RuntimeConvertFrom.as.Destroy.impl.Op.call: init %empty_tuple.type = call %RuntimeConvertFrom.as.Destroy.impl.Op.bound(%addr.loc30) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index 2cfa6712adbb..2b24be1b5b9b 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -95,21 +95,18 @@ fn Read() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.956: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.035 = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.956, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] -// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type.764: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%T.8b3) [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bf8: %Optional.as.Destroy.impl.Op.type.764 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.1fb: = impl_witness imports.%ImplicitAs.impl_witness_table.2b9, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] +// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Destroy.impl_witness.3a2: = impl_witness imports.%Destroy.impl_witness_table.1b4, @Int.as.Destroy.impl(%N.c80) [symbolic] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.type: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N.c80) [symbolic] // CHECK:STDOUT: %Int.as.Destroy.impl.Op: %Int.as.Destroy.impl.Op.type = struct_value () [symbolic] // CHECK:STDOUT: %ptr.784: type = ptr_type %Int.49d0e6.1 [symbolic] // CHECK:STDOUT: %pattern_type.4dc: type = pattern_type %ptr.784 [symbolic] +// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] // CHECK:STDOUT: %M: Core.IntLiteral = bind_symbolic_name M, 1 [symbolic] // CHECK:STDOUT: %Other: type = bind_symbolic_name Other, 0 [symbolic] // CHECK:STDOUT: %require_complete.b4f426.3: = require_complete_type %Int.49d0e6.1 [symbolic] @@ -138,11 +135,12 @@ fn Read() { // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N.c80) [symbolic] // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: %IntRange.as.Iterate.impl.Next.type = struct_value () [symbolic] // CHECK:STDOUT: %IntRange.elem.e7c: type = unbound_element_type %IntRange.349, %Int.49d0e6.1 [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // CHECK:STDOUT: %Destroy.impl_witness.0ef: = impl_witness @IntRange.%Destroy.impl_witness_table, @IntRange.as.Destroy.impl(%N.c80) [symbolic] // CHECK:STDOUT: %ptr.710: type = ptr_type %IntRange.349 [symbolic] // CHECK:STDOUT: %pattern_type.99f: type = pattern_type %ptr.710 [symbolic] -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.type.3e7: type = fn_type @IntRange.as.Destroy.impl.Op, @IntRange.as.Destroy.impl(%N.c80) [symbolic] -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.8a1: %IntRange.as.Destroy.impl.Op.type.3e7 = struct_value () [symbolic] +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.type: type = fn_type @IntRange.as.Destroy.impl.Op, @IntRange.as.Destroy.impl(%N.c80) [symbolic] +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op: %IntRange.as.Destroy.impl.Op.type = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.start.end.78d: type = struct_type {.start: %Int.49d0e6.1, .end: %Int.49d0e6.1} [symbolic] // CHECK:STDOUT: %complete_type.9d5: = complete_type_witness %struct_type.start.end.78d [symbolic] // CHECK:STDOUT: %require_complete.524: = require_complete_type %IntRange.349 [symbolic] @@ -165,14 +163,6 @@ fn Read() { // CHECK:STDOUT: %impl.elem0.437: %.a0d = impl_witness_access %Inc.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.a5f: = specific_impl_function %impl.elem0.437, @Inc.Op(%Inc.facet) [symbolic] // CHECK:STDOUT: %Optional.Some.specific_fn.6f1: = specific_function %Optional.Some.58a, @Optional.Some(%Int.49d0e6.1) [symbolic] -// CHECK:STDOUT: %Destroy.impl_witness.98d: = impl_witness imports.%Destroy.impl_witness_table.2ff, @Optional.as.Destroy.impl(%Int.49d0e6.1) [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type.cb8: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%Int.49d0e6.1) [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.041: %Optional.as.Destroy.impl.Op.type.cb8 = struct_value () [symbolic] -// CHECK:STDOUT: %Destroy.facet.2ef: %Destroy.type = facet_value %Optional.708, (%Destroy.impl_witness.98d) [symbolic] -// CHECK:STDOUT: %.14d: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.2ef [symbolic] -// CHECK:STDOUT: %ptr.2aa: type = ptr_type %Optional.708 [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.specific_fn.a92: = specific_function %Optional.as.Destroy.impl.Op.041, @Optional.as.Destroy.impl.Op(%Int.49d0e6.1) [symbolic] -// CHECK:STDOUT: %require_complete.a5e: = require_complete_type %ptr.2aa [symbolic] // CHECK:STDOUT: %Destroy.facet.d3b: %Destroy.type = facet_value %Int.49d0e6.1, (%Destroy.impl_witness.3a2) [symbolic] // CHECK:STDOUT: %.ffb: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.d3b [symbolic] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function %Int.as.Destroy.impl.Op, @Int.as.Destroy.impl.Op(%N.c80) [symbolic] @@ -193,12 +183,6 @@ fn Read() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.d04: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.956 [concrete] // CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.378: = impl_witness @IntRange.%Destroy.impl_witness_table, @IntRange.as.Destroy.impl(%int_32) [concrete] -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.type.10e: type = fn_type @IntRange.as.Destroy.impl.Op, @IntRange.as.Destroy.impl(%int_32) [concrete] -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.920: %IntRange.as.Destroy.impl.Op.type.10e = struct_value () [concrete] -// CHECK:STDOUT: %ptr.049: type = ptr_type %IntRange.365 [concrete] -// CHECK:STDOUT: %pattern_type.37a: type = pattern_type %ptr.049 [concrete] -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.specific_fn: = specific_function %IntRange.as.Destroy.impl.Op.920, @IntRange.as.Destroy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -222,8 +206,6 @@ fn Read() { // CHECK:STDOUT: %Core.import_ref.9e6: type = import_ref Core//prelude/iterate, loc13_17, loaded [concrete = %CursorType] // CHECK:STDOUT: %Core.import_ref.f49: @Optional.%Optional.None.type (%Optional.None.type.ef2) = import_ref Core//prelude/iterate, inst137 [indirect], loaded [symbolic = @Optional.%Optional.None (constants.%Optional.None.fd6)] // CHECK:STDOUT: %Core.import_ref.1a8: @Optional.%Optional.Some.type (%Optional.Some.type.b2c) = import_ref Core//prelude/iterate, inst138 [indirect], loaded [symbolic = @Optional.%Optional.Some (constants.%Optional.Some.d0d)] -// CHECK:STDOUT: %Core.import_ref.36a9: @Optional.as.Destroy.impl.%Optional.as.Destroy.impl.Op.type (%Optional.as.Destroy.impl.Op.type.764) = import_ref Core//prelude/iterate, inst6900 [indirect], loaded [symbolic = @Optional.as.Destroy.impl.%Optional.as.Destroy.impl.Op (constants.%Optional.as.Destroy.impl.Op.bf8)] -// CHECK:STDOUT: %Destroy.impl_witness_table.2ff = impl_witness_table (%Core.import_ref.36a9), @Optional.as.Destroy.impl [concrete] // CHECK:STDOUT: %Core.import_ref.cf4: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9) = import_ref Core//prelude/iterate, inst482 [indirect], loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.2b9 = impl_witness_table (%Core.import_ref.cf4), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.import_ref.741: @Int.as.Destroy.impl.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type) = import_ref Core//prelude/iterate, inst450 [indirect], loaded [symbolic = @Int.as.Destroy.impl.%Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op)] @@ -368,11 +350,11 @@ fn Read() { // CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @IntRange.%Destroy.impl_witness_table, @IntRange.as.Destroy.impl(%N) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.0ef)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.type: type = fn_type @IntRange.as.Destroy.impl.Op, @IntRange.as.Destroy.impl(%N) [symbolic = %IntRange.as.Destroy.impl.Op.type (constants.%IntRange.as.Destroy.impl.Op.type.3e7)] -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op: @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op.type (%IntRange.as.Destroy.impl.Op.type.3e7) = struct_value () [symbolic = %IntRange.as.Destroy.impl.Op (constants.%IntRange.as.Destroy.impl.Op.8a1)] +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.type: type = fn_type @IntRange.as.Destroy.impl.Op, @IntRange.as.Destroy.impl(%N) [symbolic = %IntRange.as.Destroy.impl.Op.type (constants.%IntRange.as.Destroy.impl.Op.type)] +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op: @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op.type (%IntRange.as.Destroy.impl.Op.type) = struct_value () [symbolic = %IntRange.as.Destroy.impl.Op (constants.%IntRange.as.Destroy.impl.Op)] // CHECK:STDOUT: // CHECK:STDOUT: impl: @IntRange.%Self.ref as constants.%Destroy.type { -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.decl: @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op.type (%IntRange.as.Destroy.impl.Op.type.3e7) = fn_decl @IntRange.as.Destroy.impl.Op [symbolic = @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op (constants.%IntRange.as.Destroy.impl.Op.8a1)] { +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.decl: @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op.type (%IntRange.as.Destroy.impl.Op.type) = fn_decl @IntRange.as.Destroy.impl.Op [symbolic = @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op (constants.%IntRange.as.Destroy.impl.Op)] { // CHECK:STDOUT: %self.patt: @IntRange.as.Destroy.impl.Op.%pattern_type (%pattern_type.99f) = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: @IntRange.as.Destroy.impl.Op.%pattern_type (%pattern_type.99f) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.loc4_39.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] @@ -553,7 +535,7 @@ fn Read() { // CHECK:STDOUT: %pattern_type.loc11_47: type = pattern_type %Optional.loc11_75.1 [symbolic = %pattern_type.loc11_47 (constants.%pattern_type.4b1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc11_47.1: = require_complete_type %Optional.loc11_75.1 [symbolic = %require_complete.loc11_47.1 (constants.%require_complete.b74)] +// CHECK:STDOUT: %require_complete.loc11_47: = require_complete_type %Optional.loc11_75.1 [symbolic = %require_complete.loc11_47 (constants.%require_complete.b74)] // CHECK:STDOUT: %require_complete.loc11_17: = require_complete_type %IntRange [symbolic = %require_complete.loc11_17 (constants.%require_complete.524)] // CHECK:STDOUT: %require_complete.loc11_31: = require_complete_type %ptr.loc11_44.1 [symbolic = %require_complete.loc11_31 (constants.%require_complete.0f5)] // CHECK:STDOUT: %require_complete.loc12: = require_complete_type %Int.loc11_43.1 [symbolic = %require_complete.loc12 (constants.%require_complete.b4f426.3)] @@ -578,17 +560,9 @@ fn Read() { // CHECK:STDOUT: %Optional.Some.type: type = fn_type @Optional.Some, @Optional(%Int.loc11_43.1) [symbolic = %Optional.Some.type (constants.%Optional.Some.type.185)] // CHECK:STDOUT: %Optional.Some: @IntRange.as.Iterate.impl.Next.%Optional.Some.type (%Optional.Some.type.185) = struct_value () [symbolic = %Optional.Some (constants.%Optional.Some.58a)] // CHECK:STDOUT: %Optional.Some.specific_fn.loc15_42.2: = specific_function %Optional.Some, @Optional.Some(%Int.loc11_43.1) [symbolic = %Optional.Some.specific_fn.loc15_42.2 (constants.%Optional.Some.specific_fn.6f1)] -// CHECK:STDOUT: %Destroy.impl_witness.loc11: = impl_witness imports.%Destroy.impl_witness_table.2ff, @Optional.as.Destroy.impl(%Int.loc11_43.1) [symbolic = %Destroy.impl_witness.loc11 (constants.%Destroy.impl_witness.98d)] -// CHECK:STDOUT: %Destroy.facet.loc11: %Destroy.type = facet_value %Optional.loc11_75.1, (%Destroy.impl_witness.loc11) [symbolic = %Destroy.facet.loc11 (constants.%Destroy.facet.2ef)] -// CHECK:STDOUT: %.loc11_47.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc11 [symbolic = %.loc11_47.3 (constants.%.14d)] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%Int.loc11_43.1) [symbolic = %Optional.as.Destroy.impl.Op.type (constants.%Optional.as.Destroy.impl.Op.type.cb8)] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op: @IntRange.as.Iterate.impl.Next.%Optional.as.Destroy.impl.Op.type (%Optional.as.Destroy.impl.Op.type.cb8) = struct_value () [symbolic = %Optional.as.Destroy.impl.Op (constants.%Optional.as.Destroy.impl.Op.041)] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.specific_fn: = specific_function %Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl.Op(%Int.loc11_43.1) [symbolic = %Optional.as.Destroy.impl.Op.specific_fn (constants.%Optional.as.Destroy.impl.Op.specific_fn.a92)] -// CHECK:STDOUT: %ptr.loc11_47: type = ptr_type %Optional.loc11_75.1 [symbolic = %ptr.loc11_47 (constants.%ptr.2aa)] -// CHECK:STDOUT: %require_complete.loc11_47.2: = require_complete_type %ptr.loc11_47 [symbolic = %require_complete.loc11_47.2 (constants.%require_complete.a5e)] -// CHECK:STDOUT: %Destroy.impl_witness.loc12: = impl_witness imports.%Destroy.impl_witness_table.1b4, @Int.as.Destroy.impl(%N) [symbolic = %Destroy.impl_witness.loc12 (constants.%Destroy.impl_witness.3a2)] -// CHECK:STDOUT: %Destroy.facet.loc12: %Destroy.type = facet_value %Int.loc11_43.1, (%Destroy.impl_witness.loc12) [symbolic = %Destroy.facet.loc12 (constants.%Destroy.facet.d3b)] -// CHECK:STDOUT: %.loc12_7: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.loc12 [symbolic = %.loc12_7 (constants.%.ffb)] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness imports.%Destroy.impl_witness_table.1b4, @Int.as.Destroy.impl(%N) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.3a2)] +// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Int.loc11_43.1, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.d3b)] +// CHECK:STDOUT: %.loc12_7: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc12_7 (constants.%.ffb)] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.type: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N) [symbolic = %Int.as.Destroy.impl.Op.type (constants.%Int.as.Destroy.impl.Op.type)] // CHECK:STDOUT: %Int.as.Destroy.impl.Op: @IntRange.as.Iterate.impl.Next.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type) = struct_value () [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op)] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function %Int.as.Destroy.impl.Op, @Int.as.Destroy.impl.Op(%N) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn)] @@ -655,12 +629,6 @@ fn Read() { // CHECK:STDOUT: %.loc11_47.1: ref @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = splice_block %return {} // CHECK:STDOUT: %.loc15_48: @IntRange.as.Iterate.impl.Next.%Int.loc11_43.1 (%Int.49d0e6.1) = bind_value %value.ref.loc15 // CHECK:STDOUT: %Optional.Some.call: init @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = call %Optional.Some.specific_fn.loc15_42.1(%.loc15_48) to %.loc11_47.1 -// CHECK:STDOUT: %impl.elem0.loc11_47.1: @IntRange.as.Iterate.impl.Next.%.loc11_47.3 (%.14d) = impl_witness_access constants.%Destroy.impl_witness.98d, element0 [symbolic = %Optional.as.Destroy.impl.Op (constants.%Optional.as.Destroy.impl.Op.041)] -// CHECK:STDOUT: %bound_method.loc11_47.1: = bound_method %.loc11_47.1, %impl.elem0.loc11_47.1 -// CHECK:STDOUT: %specific_fn.loc11_47.1: = specific_function %impl.elem0.loc11_47.1, @Optional.as.Destroy.impl.Op(constants.%Int.49d0e6.1) [symbolic = %Optional.as.Destroy.impl.Op.specific_fn (constants.%Optional.as.Destroy.impl.Op.specific_fn.a92)] -// CHECK:STDOUT: %bound_method.loc11_47.2: = bound_method %.loc11_47.1, %specific_fn.loc11_47.1 -// CHECK:STDOUT: %addr.loc11_47.1: @IntRange.as.Iterate.impl.Next.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.1 -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call.loc11_47.1: init %empty_tuple.type = call %bound_method.loc11_47.2(%addr.loc11_47.1) // CHECK:STDOUT: %impl.elem0.loc12_7.1: @IntRange.as.Iterate.impl.Next.%.loc12_7 (%.ffb) = impl_witness_access constants.%Destroy.impl_witness.3a2, element0 [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op)] // CHECK:STDOUT: %bound_method.loc12_7.1: = bound_method %value.var, %impl.elem0.loc12_7.1 // CHECK:STDOUT: %specific_fn.loc12_7.1: = specific_function %impl.elem0.loc12_7.1, @Int.as.Destroy.impl.Op(constants.%N.c80) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn)] @@ -682,18 +650,6 @@ fn Read() { // CHECK:STDOUT: %Optional.None.specific_fn.loc17_42.1: = specific_function %None.ref, @Optional.None(constants.%Int.49d0e6.1) [symbolic = %Optional.None.specific_fn.loc17_42.2 (constants.%Optional.None.specific_fn.82b)] // CHECK:STDOUT: %.loc11_47.2: ref @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = splice_block %return {} // CHECK:STDOUT: %Optional.None.call: init @IntRange.as.Iterate.impl.Next.%Optional.loc11_75.1 (%Optional.708) = call %Optional.None.specific_fn.loc17_42.1() to %.loc11_47.2 -// CHECK:STDOUT: %impl.elem0.loc11_47.2: @IntRange.as.Iterate.impl.Next.%.loc11_47.3 (%.14d) = impl_witness_access constants.%Destroy.impl_witness.98d, element0 [symbolic = %Optional.as.Destroy.impl.Op (constants.%Optional.as.Destroy.impl.Op.041)] -// CHECK:STDOUT: %bound_method.loc11_47.3: = bound_method %.loc11_47.2, %impl.elem0.loc11_47.2 -// CHECK:STDOUT: %specific_fn.loc11_47.2: = specific_function %impl.elem0.loc11_47.2, @Optional.as.Destroy.impl.Op(constants.%Int.49d0e6.1) [symbolic = %Optional.as.Destroy.impl.Op.specific_fn (constants.%Optional.as.Destroy.impl.Op.specific_fn.a92)] -// CHECK:STDOUT: %bound_method.loc11_47.4: = bound_method %.loc11_47.2, %specific_fn.loc11_47.2 -// CHECK:STDOUT: %addr.loc11_47.2: @IntRange.as.Iterate.impl.Next.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.2 -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call.loc11_47.2: init %empty_tuple.type = call %bound_method.loc11_47.4(%addr.loc11_47.2) -// CHECK:STDOUT: %impl.elem0.loc11_47.3: @IntRange.as.Iterate.impl.Next.%.loc11_47.3 (%.14d) = impl_witness_access constants.%Destroy.impl_witness.98d, element0 [symbolic = %Optional.as.Destroy.impl.Op (constants.%Optional.as.Destroy.impl.Op.041)] -// CHECK:STDOUT: %bound_method.loc11_47.5: = bound_method %.loc11_47.1, %impl.elem0.loc11_47.3 -// CHECK:STDOUT: %specific_fn.loc11_47.3: = specific_function %impl.elem0.loc11_47.3, @Optional.as.Destroy.impl.Op(constants.%Int.49d0e6.1) [symbolic = %Optional.as.Destroy.impl.Op.specific_fn (constants.%Optional.as.Destroy.impl.Op.specific_fn.a92)] -// CHECK:STDOUT: %bound_method.loc11_47.6: = bound_method %.loc11_47.1, %specific_fn.loc11_47.3 -// CHECK:STDOUT: %addr.loc11_47.3: @IntRange.as.Iterate.impl.Next.%ptr.loc11_47 (%ptr.2aa) = addr_of %.loc11_47.1 -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call.loc11_47.3: init %empty_tuple.type = call %bound_method.loc11_47.6(%addr.loc11_47.3) // CHECK:STDOUT: %impl.elem0.loc12_7.2: @IntRange.as.Iterate.impl.Next.%.loc12_7 (%.ffb) = impl_witness_access constants.%Destroy.impl_witness.3a2, element0 [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op)] // CHECK:STDOUT: %bound_method.loc12_7.3: = bound_method %value.var, %impl.elem0.loc12_7.2 // CHECK:STDOUT: %specific_fn.loc12_7.2: = specific_function %impl.elem0.loc12_7.2, @Int.as.Destroy.impl.Op(constants.%N.c80) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn)] @@ -734,11 +690,6 @@ fn Read() { // CHECK:STDOUT: %.loc27_28.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc27_28.2: %i32 = converted %int_0, %.loc27_28.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %IntRange.Make.call: init %IntRange.365 = call %IntRange.Make.specific_fn(%.loc27_28.2, %end.ref) to %.loc26_20 -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.bound: = bound_method %.loc26_20, constants.%IntRange.as.Destroy.impl.Op.920 -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.specific_fn: = specific_function constants.%IntRange.as.Destroy.impl.Op.920, @IntRange.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%IntRange.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc26: = bound_method %.loc26_20, %IntRange.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.049 = addr_of %.loc26_20 -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc26(%addr) // CHECK:STDOUT: return %IntRange.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -838,23 +789,6 @@ fn Read() { // CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.d0a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @IntRange.as.Destroy.impl(constants.%int_32) { -// CHECK:STDOUT: %N => constants.%int_32 -// CHECK:STDOUT: %IntRange => constants.%IntRange.365 -// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.378 -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.type => constants.%IntRange.as.Destroy.impl.Op.type.10e -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op => constants.%IntRange.as.Destroy.impl.Op.920 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @IntRange.as.Destroy.impl.Op(constants.%int_32) { -// CHECK:STDOUT: %N => constants.%int_32 -// CHECK:STDOUT: %IntRange => constants.%IntRange.365 -// CHECK:STDOUT: %ptr => constants.%ptr.049 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.37a -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- trivial.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { @@ -954,14 +888,6 @@ fn Read() { // CHECK:STDOUT: %Optional.Some.type.fe1: type = fn_type @Optional.Some, @Optional(%Int.7ff11f.1) [symbolic] // CHECK:STDOUT: %Optional.Some.aae: %Optional.Some.type.fe1 = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Some.specific_fn.b8a: = specific_function %Optional.Some.aae, @Optional.Some(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %Destroy.impl_witness.e98: = impl_witness imports.%Destroy.impl_witness_table.954, @Optional.as.Destroy.impl(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %Destroy.facet.dc8: %Destroy.type = facet_value %Optional.e9f, (%Destroy.impl_witness.e98) [symbolic] -// CHECK:STDOUT: %.351: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.dc8 [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type.80d: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.e91: %Optional.as.Destroy.impl.Op.type.80d = struct_value () [symbolic] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.specific_fn.ade: = specific_function %Optional.as.Destroy.impl.Op.e91, @Optional.as.Destroy.impl.Op(%Int.7ff11f.1) [symbolic] -// CHECK:STDOUT: %ptr.d1d: type = ptr_type %Optional.e9f [symbolic] -// CHECK:STDOUT: %require_complete.c68: = require_complete_type %ptr.d1d [symbolic] // CHECK:STDOUT: %Destroy.facet.168: %Destroy.type = facet_value %Int.7ff11f.1, (%Destroy.impl_witness.382) [symbolic] // CHECK:STDOUT: %.a07: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.168 [symbolic] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function %Int.as.Destroy.impl.Op, @Int.as.Destroy.impl.Op(%N.c80) [symbolic] @@ -1010,8 +936,6 @@ fn Read() { // CHECK:STDOUT: %Core.import_ref.c4c = import_ref Core//prelude/types/int, loc55_61, unloaded // CHECK:STDOUT: %OrderedWith.impl_witness_table.0e1 = impl_witness_table (%Core.import_ref.e33, %Core.import_ref.a58, %Core.import_ref.a39, %Core.import_ref.c4c), @Int.as.OrderedWith.impl.5b6 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Main.import_ref.03a = import_ref Main//lib, inst310 [indirect], unloaded -// CHECK:STDOUT: %Destroy.impl_witness_table.954 = impl_witness_table (%Main.import_ref.03a), @Optional.as.Destroy.impl [concrete] // CHECK:STDOUT: %Main.import_ref.0c8 = import_ref Main//lib, loc9_87, unloaded // CHECK:STDOUT: %Main.import_ref.f1e294.3: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N.c80)] // CHECK:STDOUT: %Main.import_ref.daedfd.1: type = import_ref Main//lib, loc9_8, loaded [symbolic = @IntRange.as.Iterate.impl.%IntRange (constants.%IntRange.349)] @@ -1023,11 +947,11 @@ fn Read() { // CHECK:STDOUT: %Iterate.impl_witness_table.b32 = impl_witness_table (%Main.import_ref.e3faa9.1, %Main.import_ref.e3faa9.2, %Main.import_ref.11c, %Main.import_ref.f97), @IntRange.as.Iterate.impl [concrete] // CHECK:STDOUT: %Main.import_ref.f1e294.4: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N.c80)] // CHECK:STDOUT: %Main.import_ref.f1e294.5: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N.c80)] -// CHECK:STDOUT: %Main.import_ref.026 = import_ref Main//lib, inst1898 [indirect], unloaded +// CHECK:STDOUT: %Main.import_ref.026 = import_ref Main//lib, inst1846 [indirect], unloaded // CHECK:STDOUT: %Main.import_ref.bdb: = import_ref Main//lib, loc4_39, loaded [symbolic = @IntRange.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.45d)] // CHECK:STDOUT: %Main.import_ref.f1e294.6: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N.c80)] // CHECK:STDOUT: %Main.import_ref.daedfd.2: type = import_ref Main//lib, loc4_39, loaded [symbolic = @IntRange.as.Destroy.impl.%IntRange (constants.%IntRange.349)] -// CHECK:STDOUT: %Main.import_ref.cb9: type = import_ref Main//lib, inst300 [no loc], loaded [concrete = constants.%Destroy.type] +// CHECK:STDOUT: %Main.import_ref.cb9: type = import_ref Main//lib, inst401 [no loc], loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Main.import_ref.967: @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op.type (%IntRange.as.Destroy.impl.Op.type.3e7) = import_ref Main//lib, loc4_39, loaded [symbolic = @IntRange.as.Destroy.impl.%IntRange.as.Destroy.impl.Op (constants.%IntRange.as.Destroy.impl.Op.8a1)] // CHECK:STDOUT: %Destroy.impl_witness_table.68d = impl_witness_table (%Main.import_ref.967), @IntRange.as.Destroy.impl [concrete] // CHECK:STDOUT: %Main.import_ref.f1e294.7: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N.c80)] @@ -1142,16 +1066,11 @@ fn Read() { // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(constants.%int_32) [concrete = constants.%IntRange.365] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %IntRange.365 = bind_name x, %x.var -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.bound.loc6_3.1: = bound_method %.loc6_3, constants.%IntRange.as.Destroy.impl.Op.920 -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%IntRange.as.Destroy.impl.Op.920, @IntRange.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%IntRange.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_3.1: = bound_method %.loc6_3, %IntRange.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc6_3.1: %ptr.049 = addr_of %.loc6_3 -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.call.loc6_3.1: init %empty_tuple.type = call %bound_method.loc6_3.1(%addr.loc6_3.1) -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.bound.loc6_3.2: = bound_method %x.var, constants.%IntRange.as.Destroy.impl.Op.920 -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%IntRange.as.Destroy.impl.Op.920, @IntRange.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%IntRange.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc6_3.2: = bound_method %x.var, %IntRange.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc6_3.2: %ptr.049 = addr_of %x.var -// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.call.loc6_3.2: init %empty_tuple.type = call %bound_method.loc6_3.2(%addr.loc6_3.2) +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.bound: = bound_method %x.var, constants.%IntRange.as.Destroy.impl.Op.920 +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.specific_fn: = specific_function constants.%IntRange.as.Destroy.impl.Op.920, @IntRange.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%IntRange.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method.loc6_3: = bound_method %x.var, %IntRange.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.049 = addr_of %x.var +// CHECK:STDOUT: %IntRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc6_3(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1192,15 +1111,15 @@ fn Read() { // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.349)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %IntRange [symbolic = %pattern_type.1 (constants.%pattern_type.dcd)] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.7ff11f.1)] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Int [symbolic = %ptr.1 (constants.%ptr.58a)] -// CHECK:STDOUT: %pattern_type.2: type = pattern_type %ptr.1 [symbolic = %pattern_type.2 (constants.%pattern_type.6d0)] +// CHECK:STDOUT: %ptr: type = ptr_type %Int [symbolic = %ptr (constants.%ptr.58a)] +// CHECK:STDOUT: %pattern_type.2: type = pattern_type %ptr [symbolic = %pattern_type.2 (constants.%pattern_type.6d0)] // CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(%Int) [symbolic = %Optional (constants.%Optional.e9f)] // CHECK:STDOUT: %pattern_type.3: type = pattern_type %Optional [symbolic = %pattern_type.3 (constants.%pattern_type.fd8)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.1: = require_complete_type %Optional [symbolic = %require_complete.1 (constants.%require_complete.5a1)] // CHECK:STDOUT: %require_complete.2: = require_complete_type %IntRange [symbolic = %require_complete.2 (constants.%require_complete.524)] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %ptr.1 [symbolic = %require_complete.3 (constants.%require_complete.656)] +// CHECK:STDOUT: %require_complete.3: = require_complete_type %ptr [symbolic = %require_complete.3 (constants.%require_complete.656)] // CHECK:STDOUT: %require_complete.4: = require_complete_type %Int [symbolic = %require_complete.4 (constants.%require_complete.ffde5f.1)] // CHECK:STDOUT: %pattern_type.4: type = pattern_type %Int [symbolic = %pattern_type.4 (constants.%pattern_type.0ede7b.1)] // CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int [symbolic = %IntRange.elem (constants.%IntRange.elem.ecb)] @@ -1223,17 +1142,9 @@ fn Read() { // CHECK:STDOUT: %Optional.Some.type: type = fn_type @Optional.Some, @Optional(%Int) [symbolic = %Optional.Some.type (constants.%Optional.Some.type.fe1)] // CHECK:STDOUT: %Optional.Some: @IntRange.as.Iterate.impl.Next.%Optional.Some.type (%Optional.Some.type.fe1) = struct_value () [symbolic = %Optional.Some (constants.%Optional.Some.aae)] // CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Optional.Some, @Optional.Some(%Int) [symbolic = %Optional.Some.specific_fn (constants.%Optional.Some.specific_fn.b8a)] -// CHECK:STDOUT: %Destroy.impl_witness.1: = impl_witness imports.%Destroy.impl_witness_table.954, @Optional.as.Destroy.impl(%Int) [symbolic = %Destroy.impl_witness.1 (constants.%Destroy.impl_witness.e98)] -// CHECK:STDOUT: %Destroy.facet.1: %Destroy.type = facet_value %Optional, (%Destroy.impl_witness.1) [symbolic = %Destroy.facet.1 (constants.%Destroy.facet.dc8)] -// CHECK:STDOUT: %.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.1 [symbolic = %.3 (constants.%.351)] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%Int) [symbolic = %Optional.as.Destroy.impl.Op.type (constants.%Optional.as.Destroy.impl.Op.type.80d)] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op: @IntRange.as.Iterate.impl.Next.%Optional.as.Destroy.impl.Op.type (%Optional.as.Destroy.impl.Op.type.80d) = struct_value () [symbolic = %Optional.as.Destroy.impl.Op (constants.%Optional.as.Destroy.impl.Op.e91)] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.specific_fn: = specific_function %Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl.Op(%Int) [symbolic = %Optional.as.Destroy.impl.Op.specific_fn (constants.%Optional.as.Destroy.impl.Op.specific_fn.ade)] -// CHECK:STDOUT: %ptr.2: type = ptr_type %Optional [symbolic = %ptr.2 (constants.%ptr.d1d)] -// CHECK:STDOUT: %require_complete.6: = require_complete_type %ptr.2 [symbolic = %require_complete.6 (constants.%require_complete.c68)] -// CHECK:STDOUT: %Destroy.impl_witness.2: = impl_witness imports.%Destroy.impl_witness_table.14b, @Int.as.Destroy.impl(%N) [symbolic = %Destroy.impl_witness.2 (constants.%Destroy.impl_witness.382)] -// CHECK:STDOUT: %Destroy.facet.2: %Destroy.type = facet_value %Int, (%Destroy.impl_witness.2) [symbolic = %Destroy.facet.2 (constants.%Destroy.facet.168)] -// CHECK:STDOUT: %.4: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet.2 [symbolic = %.4 (constants.%.a07)] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness imports.%Destroy.impl_witness_table.14b, @Int.as.Destroy.impl(%N) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.382)] +// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Int, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.168)] +// CHECK:STDOUT: %.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.3 (constants.%.a07)] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.type: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N) [symbolic = %Int.as.Destroy.impl.Op.type (constants.%Int.as.Destroy.impl.Op.type)] // CHECK:STDOUT: %Int.as.Destroy.impl.Op: @IntRange.as.Iterate.impl.Next.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type) = struct_value () [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op)] // CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function %Int.as.Destroy.impl.Op, @Int.as.Destroy.impl.Op(%N) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn)] @@ -1319,7 +1230,7 @@ fn Read() { // CHECK:STDOUT: %IntRange => constants.%IntRange.349 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.dcd // CHECK:STDOUT: %Int => constants.%Int.7ff11f.1 -// CHECK:STDOUT: %ptr.1 => constants.%ptr.58a +// CHECK:STDOUT: %ptr => constants.%ptr.58a // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.6d0 // CHECK:STDOUT: %Optional => constants.%Optional.e9f // CHECK:STDOUT: %pattern_type.3 => constants.%pattern_type.fd8 diff --git a/toolchain/check/testdata/for/basic.carbon b/toolchain/check/testdata/for/basic.carbon index aa8151337ef5..83252f8b0f38 100644 --- a/toolchain/check/testdata/for/basic.carbon +++ b/toolchain/check/testdata/for/basic.carbon @@ -85,9 +85,6 @@ fn Run() { // CHECK:STDOUT: %Optional.HasValue.ada: %Optional.HasValue.type.b7a = struct_value () [concrete] // CHECK:STDOUT: %Optional.Get.type.130: type = fn_type @Optional.Get, @Optional(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Optional.Get.6e8: %Optional.Get.type.130 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type.0d8: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%empty_tuple.type) [concrete] -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.160: %Optional.as.Destroy.impl.Op.type.0d8 = struct_value () [concrete] -// CHECK:STDOUT: %ptr.511: type = ptr_type %Optional.f9a [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.type.a63: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.ea3: %T.as.Destroy.impl.Op.type.a63 = struct_value () [concrete] @@ -100,6 +97,9 @@ fn Run() { // CHECK:STDOUT: %.708: type = fn_type_with_self_type %Iterate.Next.type, %Iterate.facet.d50 [concrete] // CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.ada, @Optional.HasValue(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.6e8, @Optional.Get(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.type.0d8: type = fn_type @Optional.as.Destroy.impl.Op, @Optional.as.Destroy.impl(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.160: %Optional.as.Destroy.impl.Op.type.0d8 = struct_value () [concrete] +// CHECK:STDOUT: %ptr.511: type = ptr_type %Optional.f9a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -171,23 +171,23 @@ fn Run() { // CHECK:STDOUT: !for.done: // CHECK:STDOUT: %AfterLoop.ref: %AfterLoop.type = name_ref AfterLoop, file.%AfterLoop.decl [concrete = constants.%AfterLoop] // CHECK:STDOUT: %AfterLoop.call: init %empty_tuple.type = call %AfterLoop.ref() -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_35.1: = bound_method %.loc18_35.9, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_35.1: = bound_method %.loc18_35.10, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_35.5: = bound_method %.loc18_35.9, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc18_35.2: %ptr.843 = addr_of %.loc18_35.9 +// CHECK:STDOUT: %bound_method.loc18_35.5: = bound_method %.loc18_35.10, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc18_35.2: %ptr.843 = addr_of %.loc18_35.10 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_35.1: init %empty_tuple.type = call %bound_method.loc18_35.5(%addr.loc18_35.2) -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc18_35.1, constants.%Optional.as.Destroy.impl.Op.160 +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc18_35.2, constants.%Optional.as.Destroy.impl.Op.160 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc18_35.6: = bound_method %.loc18_35.1, %Optional.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc18_35.3: %ptr.511 = addr_of %.loc18_35.1 +// CHECK:STDOUT: %bound_method.loc18_35.6: = bound_method %.loc18_35.2, %Optional.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc18_35.3: %ptr.511 = addr_of %.loc18_35.2 // CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc18_35.6(%addr.loc18_35.3) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_35.2: = bound_method %var, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: // CHECK:STDOUT: %bound_method.loc18_35.7: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc18_35.4: %ptr.843 = addr_of %var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_35.2: init %empty_tuple.type = call %bound_method.loc18_35.7(%addr.loc18_35.4) -// CHECK:STDOUT: %TrivialRange.as.Destroy.impl.Op.bound: = bound_method %.loc18_18.2, constants.%TrivialRange.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc18_18: %ptr.41d = addr_of %.loc18_18.2 +// CHECK:STDOUT: %TrivialRange.as.Destroy.impl.Op.bound: = bound_method %.loc18_18.4, constants.%TrivialRange.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc18_18: %ptr.41d = addr_of %.loc18_18.4 // CHECK:STDOUT: %TrivialRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %TrivialRange.as.Destroy.impl.Op.bound(%addr.loc18_18) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/for/pattern.carbon b/toolchain/check/testdata/for/pattern.carbon index f371af26bc8d..85bc7e87048b 100644 --- a/toolchain/check/testdata/for/pattern.carbon +++ b/toolchain/check/testdata/for/pattern.carbon @@ -254,23 +254,23 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc12_36.8, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_36.2: %ptr.019 = addr_of %.loc12_36.8 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc12_36.10, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc12_36.2: %ptr.019 = addr_of %.loc12_36.10 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc12_36.2) -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc12_36.1, constants.%Optional.as.Destroy.impl.Op.793 +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc12_36.2, constants.%Optional.as.Destroy.impl.Op.793 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_36.7: = bound_method %.loc12_36.1, %Optional.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc12_36.3: %ptr.8e6 = addr_of %.loc12_36.1 +// CHECK:STDOUT: %bound_method.loc12_36.7: = bound_method %.loc12_36.2, %Optional.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc12_36.3: %ptr.8e6 = addr_of %.loc12_36.2 // CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_36.7(%addr.loc12_36.3) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %var, constants.%T.as.Destroy.impl.Op.d5a // CHECK:STDOUT: // CHECK:STDOUT: %bound_method.loc12_36.8: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc12_36.4: %ptr.c28 = addr_of %var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_36.8(%addr.loc12_36.4) -// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc12_35.1, constants.%EmptyRange.as.Destroy.impl.Op.256 +// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc12_35.2, constants.%EmptyRange.as.Destroy.impl.Op.256 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_35: = bound_method %.loc12_35.1, %EmptyRange.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc12_35: %ptr.35d = addr_of %.loc12_35.1 +// CHECK:STDOUT: %bound_method.loc12_35: = bound_method %.loc12_35.2, %EmptyRange.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc12_35: %ptr.35d = addr_of %.loc12_35.2 // CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_35(%addr.loc12_35) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -413,26 +413,23 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_8.1: = bound_method %.loc12_8, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_8.1: %ptr.019 = addr_of %.loc12_8 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc12_8.1: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc12_8.1(%addr.loc12_8.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_8.2: = bound_method %c.var, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_8.2: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc12_8.2: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc12_8.2(%addr.loc12_8.2) -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc12_40.1, constants.%Optional.as.Destroy.impl.Op.793 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc12_8: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc12_8) +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc12_40.2, constants.%Optional.as.Destroy.impl.Op.793 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_40.7: = bound_method %.loc12_40.1, %Optional.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc12_40.2: %ptr.8e6 = addr_of %.loc12_40.1 +// CHECK:STDOUT: %bound_method.loc12_40.7: = bound_method %.loc12_40.2, %Optional.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc12_40.2: %ptr.8e6 = addr_of %.loc12_40.2 // CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_40.7(%addr.loc12_40.2) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %var, constants.%T.as.Destroy.impl.Op.d5a // CHECK:STDOUT: // CHECK:STDOUT: %bound_method.loc12_40.8: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc12_40.3: %ptr.c28 = addr_of %var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_40.8(%addr.loc12_40.3) -// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc12_39.1, constants.%EmptyRange.as.Destroy.impl.Op.256 +// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc12_39.2, constants.%EmptyRange.as.Destroy.impl.Op.256 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_39: = bound_method %.loc12_39.1, %EmptyRange.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc12_39: %ptr.35d = addr_of %.loc12_39.1 +// CHECK:STDOUT: %bound_method.loc12_39: = bound_method %.loc12_39.2, %EmptyRange.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc12_39: %ptr.35d = addr_of %.loc12_39.2 // CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_39(%addr.loc12_39) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -600,25 +597,25 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_61.1: = bound_method %.loc10_61.8, constants.%T.as.Destroy.impl.Op.149 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_61.1: = bound_method %.loc10_61.10, constants.%T.as.Destroy.impl.Op.149 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_61.7: = bound_method %.loc10_61.8, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc10_61.2: %ptr.b85 = addr_of %.loc10_61.8 +// CHECK:STDOUT: %bound_method.loc10_61.7: = bound_method %.loc10_61.10, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc10_61.2: %ptr.b85 = addr_of %.loc10_61.10 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_61.1: init %empty_tuple.type = call %bound_method.loc10_61.7(%addr.loc10_61.2) -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc10_61.1, constants.%Optional.as.Destroy.impl.Op.060 +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc10_61.2, constants.%Optional.as.Destroy.impl.Op.060 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_61.8: = bound_method %.loc10_61.1, %Optional.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc10_61.3: %ptr.07d = addr_of %.loc10_61.1 +// CHECK:STDOUT: %bound_method.loc10_61.8: = bound_method %.loc10_61.2, %Optional.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc10_61.3: %ptr.07d = addr_of %.loc10_61.2 // CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_61.8(%addr.loc10_61.3) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_61.2: = bound_method %var, constants.%T.as.Destroy.impl.Op.ca6 // CHECK:STDOUT: // CHECK:STDOUT: %bound_method.loc10_61.9: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc10_61.4: %ptr.c28 = addr_of %var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_61.2: init %empty_tuple.type = call %bound_method.loc10_61.9(%addr.loc10_61.4) -// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc10_60.1, constants.%EmptyRange.as.Destroy.impl.Op.fb4 +// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc10_60.2, constants.%EmptyRange.as.Destroy.impl.Op.fb4 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_60: = bound_method %.loc10_60.1, %EmptyRange.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc10_60: %ptr.5cf = addr_of %.loc10_60.1 +// CHECK:STDOUT: %bound_method.loc10_60: = bound_method %.loc10_60.2, %EmptyRange.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc10_60: %ptr.5cf = addr_of %.loc10_60.2 // CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_60(%addr.loc10_60) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -773,25 +770,25 @@ fn Run() { // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.done: -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_49.1: = bound_method %.loc12_49.8, constants.%T.as.Destroy.impl.Op.34b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_49.1: = bound_method %.loc12_49.10, constants.%T.as.Destroy.impl.Op.34b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_49.7: = bound_method %.loc12_49.8, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc12_49.2: %ptr.9f0 = addr_of %.loc12_49.8 +// CHECK:STDOUT: %bound_method.loc12_49.7: = bound_method %.loc12_49.10, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc12_49.2: %ptr.9f0 = addr_of %.loc12_49.10 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_49.1: init %empty_tuple.type = call %bound_method.loc12_49.7(%addr.loc12_49.2) -// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc12_49.1, constants.%Optional.as.Destroy.impl.Op.7d3 +// CHECK:STDOUT: %Optional.as.Destroy.impl.Op.bound: = bound_method %.loc12_49.2, constants.%Optional.as.Destroy.impl.Op.7d3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_49.8: = bound_method %.loc12_49.1, %Optional.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc12_49.3: %ptr.036 = addr_of %.loc12_49.1 +// CHECK:STDOUT: %bound_method.loc12_49.8: = bound_method %.loc12_49.2, %Optional.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc12_49.3: %ptr.036 = addr_of %.loc12_49.2 // CHECK:STDOUT: %Optional.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_49.8(%addr.loc12_49.3) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12_49.2: = bound_method %var, constants.%T.as.Destroy.impl.Op.d5a // CHECK:STDOUT: // CHECK:STDOUT: %bound_method.loc12_49.9: = bound_method %var, %T.as.Destroy.impl.Op.specific_fn.2 // CHECK:STDOUT: %addr.loc12_49.4: %ptr.c28 = addr_of %var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12_49.2: init %empty_tuple.type = call %bound_method.loc12_49.9(%addr.loc12_49.4) -// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc12_48.1, constants.%EmptyRange.as.Destroy.impl.Op.e9a +// CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.bound: = bound_method %.loc12_48.2, constants.%EmptyRange.as.Destroy.impl.Op.e9a // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12_48: = bound_method %.loc12_48.1, %EmptyRange.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc12_48: %ptr.f9b = addr_of %.loc12_48.1 +// CHECK:STDOUT: %bound_method.loc12_48: = bound_method %.loc12_48.2, %EmptyRange.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc12_48: %ptr.f9b = addr_of %.loc12_48.2 // CHECK:STDOUT: %EmptyRange.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc12_48(%addr.loc12_48) // 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 b8ef05fc3291..773c8ec7ab22 100644 --- a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon @@ -325,11 +325,11 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %.loc34_15.1: ref %D.b3dde2.1 = temporary_storage // CHECK:STDOUT: %ReturnDUsed.call: init %D.b3dde2.1 = call %ReturnDUsed.ref() to %.loc34_15.1 // CHECK:STDOUT: %.loc34_15.2: ref %D.b3dde2.1 = temporary %.loc34_15.1, %ReturnDUsed.call -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_15.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc34: %ptr.19c = addr_of %.loc34_15.1 +// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_15.2, constants.%D.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc34: %ptr.19c = addr_of %.loc34_15.2 // CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc34(%addr.loc34) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc33: = bound_method %.loc33_17.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc33: %ptr.19c = addr_of %.loc33_17.1 +// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc33: = bound_method %.loc33_17.2, constants.%D.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc33: %ptr.19c = addr_of %.loc33_17.2 // CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc33: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc33(%addr.loc33) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/call.carbon b/toolchain/check/testdata/function/generic/call.carbon index f4897e6e8615..046d616a3c31 100644 --- a/toolchain/check/testdata/function/generic/call.carbon +++ b/toolchain/check/testdata/function/generic/call.carbon @@ -64,7 +64,6 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [concrete] @@ -79,7 +78,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.edd: = impl_witness @C.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @C.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] @@ -199,7 +198,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.edd] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -275,9 +274,6 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [concrete = constants.%Function.specific_fn.1b5] // CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} // CHECK:STDOUT: %Function.call: init %C = call %Function.specific_fn(%x.ref) to %.loc18 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc18, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc18 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Function.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -324,7 +320,6 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.7dc: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [concrete] @@ -339,7 +334,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.edd: = impl_witness @C.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @C.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] @@ -459,7 +454,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.edd] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -531,9 +526,6 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [concrete = constants.%Function.specific_fn.1b5] // CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} // CHECK:STDOUT: %Function.call: init %C = call %Function.specific_fn(%x.ref) to %.loc18 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc18, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc18 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Function.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 748c45a20047..acf8c37ff1cf 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -658,8 +658,8 @@ fn F() { // CHECK:STDOUT: %ExplicitAndAlsoDeduced.call: init %ptr.6db = call %ExplicitAndAlsoDeduced.specific_fn(%.loc11_37.6) // CHECK:STDOUT: %.loc11_39.1: %ptr.6db = value_of_initializer %ExplicitAndAlsoDeduced.call // CHECK:STDOUT: %.loc11_39.2: %ptr.6db = converted %ExplicitAndAlsoDeduced.call, %.loc11_39.1 -// CHECK:STDOUT: %A.as.Destroy.impl.Op.bound: = bound_method %.loc11_37.2, constants.%A.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc11_37.2 +// CHECK:STDOUT: %A.as.Destroy.impl.Op.bound: = bound_method %.loc11_37.4, constants.%A.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc11_37.4 // CHECK:STDOUT: %A.as.Destroy.impl.Op.call: init %empty_tuple.type = call %A.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %.loc11_39.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 27a94debb5a3..d8c9642bb29f 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -306,12 +306,9 @@ fn G() { // CHECK:STDOUT: assign %c.var, %Wrap.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: %C.as.Destroy.impl.Op.bound.loc24_3.1: = bound_method %.loc24_3, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc24_3.1: %ptr.019 = addr_of %.loc24_3 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc24_3.1: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc24_3.1(%addr.loc24_3.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc24_3.2: = bound_method %c.var, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc24_3.2: %ptr.019 = addr_of %c.var -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc24_3.2: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc24_3.2(%addr.loc24_3.2) +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %c.var, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc24: %ptr.019 = addr_of %c.var +// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc24) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc23: = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn diff --git a/toolchain/check/testdata/generic/template_dependence.carbon b/toolchain/check/testdata/generic/template_dependence.carbon index e83b32cb3895..8df41a7f43e3 100644 --- a/toolchain/check/testdata/generic/template_dependence.carbon +++ b/toolchain/check/testdata/generic/template_dependence.carbon @@ -112,35 +112,23 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic_self] -// CHECK:STDOUT: %T.8b3d5d.1: type = bind_symbolic_name T, 0, template [template] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, template [template] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] -// CHECK:STDOUT: %tuple.type.30b: type = tuple_type (%T.8b3d5d.1, %U) [template] +// CHECK:STDOUT: %tuple.type.30b: type = tuple_type (%T, %U) [template] // CHECK:STDOUT: %pattern_type.65c: type = pattern_type %tuple.type.30b [template] // 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.937: type = ptr_type %tuple.type.30b [template] -// CHECK:STDOUT: %require_complete.fe1: = require_complete_type %tuple.type.30b [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T.8b3d5d.1, %U) [template] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] -// CHECK:STDOUT: %require_complete.8fa: = require_complete_type %ptr.937 [template] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.30b, @Destroy [template] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.30b, (%Destroy.lookup_impl_witness) [template] -// CHECK:STDOUT: %.1e9: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [template] -// CHECK:STDOUT: %impl.elem0: %.1e9 = impl_witness_access %Destroy.lookup_impl_witness, element0 [template] -// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [template] +// CHECK:STDOUT: %require_complete: = require_complete_type %tuple.type.30b [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T, %U) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Destroy = %Core.Destroy // CHECK:STDOUT: import Core//prelude // 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: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -155,12 +143,12 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.65c) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.65c) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_15.2 [template = %T.loc4_15.1 (constants.%T.8b3d5d.1)] +// CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_15.2 [template = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc4: type = name_ref U, %U.loc4_25.2 [symbolic = %U.loc4_25.1 (constants.%U)] // CHECK:STDOUT: %.loc4_43.1: %tuple.type.24b = tuple_literal (%T.ref.loc4, %U.ref.loc4) // CHECK:STDOUT: %.loc4_43.2: type = converted %.loc4_43.1, constants.%tuple.type.30b [template = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %.Self.1: type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0, template [template = %T.loc4_15.1 (constants.%T.8b3d5d.1)] +// CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0, template [template = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: %.Self.2: type = bind_symbolic_name .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc4_25.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_25.1 (constants.%U)] // CHECK:STDOUT: %return.param: ref @F.%tuple.type (%tuple.type.30b) = out_param call_param0 @@ -169,55 +157,35 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc4_15.2: type, %U.loc4_25.2: type) { -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, template [template = %T.loc4_15.1 (constants.%T.8b3d5d.1)] +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, template [template = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: %U.loc4_25.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_25.1 (constants.%U)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc4_15.1, %U.loc4_25.1) [template = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [template = %pattern_type (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc4_35.1: = require_complete_type %tuple.type [template = %require_complete.loc4_35.1 (constants.%require_complete.fe1)] +// CHECK:STDOUT: %require_complete: = require_complete_type %tuple.type [template = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %F.specific_fn.loc5_10.2: = specific_function constants.%F, @F(%T.loc4_15.1, %U.loc4_25.1) [template = %F.specific_fn.loc5_10.2 (constants.%F.specific_fn)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type, @Destroy [template = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type, (%Destroy.lookup_impl_witness) [template = %Destroy.facet (constants.%Destroy.facet)] -// CHECK:STDOUT: %.loc4_35.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [template = %.loc4_35.3 (constants.%.1e9)] -// CHECK:STDOUT: %impl.elem0.loc4_35.2: @F.%.loc4_35.3 (%.1e9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc4_35.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc4_35.2: = specific_impl_function %impl.elem0.loc4_35.2, @Destroy.Op(%Destroy.facet) [template = %specific_impl_fn.loc4_35.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type [template = %ptr (constants.%ptr.937)] -// CHECK:STDOUT: %require_complete.loc4_35.2: = require_complete_type %ptr [template = %require_complete.loc4_35.2 (constants.%require_complete.8fa)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @F.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %T.ref.loc5: type = name_ref T, %T.loc4_15.2 [template = %T.loc4_15.1 (constants.%T.8b3d5d.1)] +// CHECK:STDOUT: %T.ref.loc5: type = name_ref T, %T.loc4_15.2 [template = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc5: type = name_ref U, %U.loc4_25.2 [symbolic = %U.loc4_25.1 (constants.%U)] -// CHECK:STDOUT: %F.specific_fn.loc5_10.1: = specific_function %F.ref, @F(constants.%T.8b3d5d.1, constants.%U) [template = %F.specific_fn.loc5_10.2 (constants.%F.specific_fn)] -// CHECK:STDOUT: %.loc4_35.1: ref @F.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.30b) = call %F.specific_fn.loc5_10.1() to %.loc4_35.1 -// CHECK:STDOUT: %impl.elem0.loc4_35.1: @F.%.loc4_35.3 (%.1e9) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [template = %impl.elem0.loc4_35.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %bound_method.loc4_35.1: = bound_method %.loc4_35.1, %impl.elem0.loc4_35.1 -// CHECK:STDOUT: %specific_impl_fn.loc4_35.1: = specific_impl_function %impl.elem0.loc4_35.1, @Destroy.Op(constants.%Destroy.facet) [template = %specific_impl_fn.loc4_35.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %bound_method.loc4_35.2: = bound_method %.loc4_35.1, %specific_impl_fn.loc4_35.1 -// CHECK:STDOUT: %addr: @F.%ptr (%ptr.937) = addr_of %.loc4_35.1 -// CHECK:STDOUT: %.loc4_35.2: init %empty_tuple.type = call %bound_method.loc4_35.2(%addr) +// CHECK:STDOUT: %F.specific_fn.loc5_10.1: = specific_function %F.ref, @F(constants.%T, constants.%U) [template = %F.specific_fn.loc5_10.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %.loc4_35: ref @F.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.30b) = call %F.specific_fn.loc5_10.1() to %.loc4_35 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.8b3d5d.1, constants.%U) { -// CHECK:STDOUT: %T.loc4_15.1 => constants.%T.8b3d5d.1 +// CHECK:STDOUT: specific @F(constants.%T, constants.%U) { +// CHECK:STDOUT: %T.loc4_15.1 => constants.%T // CHECK:STDOUT: %U.loc4_25.1 => constants.%U // CHECK:STDOUT: %tuple.type => constants.%tuple.type.30b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.65c // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc4_35.1 => constants.%require_complete.fe1 +// CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: %F.specific_fn.loc5_10.2 => constants.%F.specific_fn -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet -// CHECK:STDOUT: %.loc4_35.3 => constants.%.1e9 -// CHECK:STDOUT: %impl.elem0.loc4_35.2 => constants.%impl.elem0 -// CHECK:STDOUT: %specific_impl_fn.loc4_35.2 => constants.%specific_impl_fn -// CHECK:STDOUT: %ptr => constants.%ptr.937 -// CHECK:STDOUT: %require_complete.loc4_35.2 => constants.%require_complete.8fa // 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 a1f07bd4d64f..df8287e85300 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -362,16 +362,16 @@ class X(U:! type) { // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var -// CHECK:STDOUT: %Param.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_20.1, constants.%Param.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc22_20: %ptr.756 = addr_of %.loc22_20.1 +// CHECK:STDOUT: %Param.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_20.2, constants.%Param.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc22_20: %ptr.756 = addr_of %.loc22_20.2 // CHECK:STDOUT: %Param.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %Param.as.Destroy.impl.Op.bound.loc22(%addr.loc22_20) // CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %b.var, constants.%Int.as.Destroy.impl.Op.715 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function constants.%Int.as.Destroy.impl.Op.715, @Int.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Destroy.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method: = bound_method %b.var, %Int.as.Destroy.impl.Op.specific_fn // CHECK:STDOUT: %addr.loc22_3: %ptr.235 = addr_of %b.var // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc22_3) -// CHECK:STDOUT: %Param.as.Destroy.impl.Op.bound.loc21: = bound_method %.loc21_20.1, constants.%Param.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc21: %ptr.756 = addr_of %.loc21_20.1 +// CHECK:STDOUT: %Param.as.Destroy.impl.Op.bound.loc21: = bound_method %.loc21_20.2, constants.%Param.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc21: %ptr.756 = addr_of %.loc21_20.2 // CHECK:STDOUT: %Param.as.Destroy.impl.Op.call.loc21: init %empty_tuple.type = call %Param.as.Destroy.impl.Op.bound.loc21(%addr.loc21) // CHECK:STDOUT: return // 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 a5a69fcf0476..7aa19ff37ea6 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -323,8 +323,8 @@ fn F() { // CHECK:STDOUT: %Zero.ref: %Z.assoc_type = name_ref Zero, @Z.%assoc0 [concrete = constants.%assoc0.534] // CHECK:STDOUT: %impl.elem0: %.766 = impl_witness_access constants.%Z.impl_witness, element0 [concrete = constants.%Point.as.Z.impl.Zero] // CHECK:STDOUT: %Point.as.Z.impl.Zero.call: init %empty_tuple.type = call %impl.elem0() -// CHECK:STDOUT: %Point.as.Destroy.impl.Op.bound: = bound_method %.loc25_5.2, constants.%Point.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc25_5.2 +// CHECK:STDOUT: %Point.as.Destroy.impl.Op.bound: = bound_method %.loc25_5.4, constants.%Point.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc25_5.4 // CHECK:STDOUT: %Point.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Point.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // 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 e5318d313890..ea94379bd7a2 100644 --- a/toolchain/check/testdata/impl/fail_impl_as_scope.carbon +++ b/toolchain/check/testdata/impl/fail_impl_as_scope.carbon @@ -464,8 +464,8 @@ class X { // CHECK:STDOUT: %bound_method: = bound_method %.loc29_7.1, %impl.elem1 // CHECK:STDOUT: %.loc29_7.2: %Point = bind_value %.loc29_7.1 // CHECK:STDOUT: %Point.as.Z.impl.Method.call: init %empty_tuple.type = call %bound_method(%.loc29_7.2) -// CHECK:STDOUT: %Point.as.Destroy.impl.Op.bound: = bound_method %.loc29_5.2, constants.%Point.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc29_5.2 +// CHECK:STDOUT: %Point.as.Destroy.impl.Op.bound: = bound_method %.loc29_5.4, constants.%Point.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.536 = addr_of %.loc29_5.4 // CHECK:STDOUT: %Point.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Point.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon index 2609e8a5485a..15a08c853d37 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -438,10 +438,6 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %pattern_type.2a7: type = pattern_type %ptr.4cd [concrete] // CHECK:STDOUT: %SelfNestedBadParam.as.Destroy.impl.Op.type: type = fn_type @SelfNestedBadParam.as.Destroy.impl.Op [concrete] // CHECK:STDOUT: %SelfNestedBadParam.as.Destroy.impl.Op: %SelfNestedBadParam.as.Destroy.impl.Op.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.f40: type = ptr_type %array_type.a41 [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.ba3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%array_type.a41) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.d25: %T.as.Destroy.impl.Op.type.ba3 = struct_value () [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.d25, @T.as.Destroy.impl.Op(%array_type.a41) [concrete] // CHECK:STDOUT: %SelfNestedBadReturnType: type = class_type @SelfNestedBadReturnType [concrete] // CHECK:STDOUT: %SelfNested.impl_witness.d5e: = impl_witness @SelfNestedBadReturnType.%SelfNested.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.612: type = ptr_type %SelfNestedBadReturnType [concrete] @@ -1669,9 +1665,6 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %.loc200_38.1: ref %FDifferentReturnType = temporary_storage // CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.call: init %FDifferentReturnType = call %FDifferentReturnType.as.J.impl.F.bound(%self.ref, %b.ref) to %.loc200_38.1 // CHECK:STDOUT: %.loc200_38.2: bool = converted %FDifferentReturnType.as.J.impl.F.call, [concrete = ] -// CHECK:STDOUT: %FDifferentReturnType.as.Destroy.impl.Op.bound: = bound_method %.loc200_38.1, constants.%FDifferentReturnType.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.954 = addr_of %.loc200_38.1 -// CHECK:STDOUT: %FDifferentReturnType.as.Destroy.impl.Op.call: init %empty_tuple.type = call %FDifferentReturnType.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1703,11 +1696,6 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %.loc211_9.1: %SelfNestedBadParam = struct_access %tuple.elem1, element0 // CHECK:STDOUT: %.loc211_9.2: %i32 = converted %.loc211_9.1, [concrete = ] // CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.call: init %array_type.a41 = call %F.ref() to %.loc211_41 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc211_41, constants.%T.as.Destroy.impl.Op.d25 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d25, @T.as.Destroy.impl.Op(constants.%array_type.a41) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc211_41, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.f40 = addr_of %.loc211_41 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %SelfNestedBadParam.as.SelfNested.impl.F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1723,11 +1711,6 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %.loc239_112.1: ref %array_type.a41 = temporary_storage // CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.call: init %array_type.a41 = call %F.ref(%x.ref) to %.loc239_112.1 // CHECK:STDOUT: %.loc239_112.2: %array_type.126 = converted %SelfNestedBadReturnType.as.SelfNested.impl.F.call, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc239_112.1, constants.%T.as.Destroy.impl.Op.d25 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d25, @T.as.Destroy.impl.Op(constants.%array_type.a41) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc239_112.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.f40 = addr_of %.loc239_112.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/generic_redeclaration.carbon b/toolchain/check/testdata/impl/generic_redeclaration.carbon index 30cf788de7bb..7d71618cc9f6 100644 --- a/toolchain/check/testdata/impl/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/generic_redeclaration.carbon @@ -759,10 +759,10 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc21_14.2: ref %empty_tuple.type = temporary %.loc21_14.1, %T.as.I.impl.C.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc21_15: %empty_tuple.type = converted %T.as.I.impl.C.call, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc21_14.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc21_14.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc21_14.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc21_14.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc21_14.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc21_14.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc21_15 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/impl_thunk.carbon b/toolchain/check/testdata/impl/impl_thunk.carbon index 53daf3285219..a20c70f8e45d 100644 --- a/toolchain/check/testdata/impl/impl_thunk.carbon +++ b/toolchain/check/testdata/impl/impl_thunk.carbon @@ -392,10 +392,10 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_48.10: init %empty_struct_type = converted %.loc10_48.7, %.loc10_48.9 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_48.11: init %struct_type.c.d.15a = struct_init (%.loc10_48.6, %.loc10_48.10) to %return [concrete = constants.%struct] // CHECK:STDOUT: %.loc10_48.12: init %struct_type.c.d.15a = converted %empty_tuple.type.as.I.impl.F.call, %.loc10_48.11 [concrete = constants.%struct] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_48.1, constants.%T.as.Destroy.impl.Op.742 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_48.2, constants.%T.as.Destroy.impl.Op.742 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc10_48.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.eab = addr_of %.loc10_48.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc10_48.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.eab = addr_of %.loc10_48.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_48.12 to %return // CHECK:STDOUT: } @@ -664,8 +664,8 @@ impl () as I({}) { // CHECK:STDOUT: %.loc20_14.3: ref %A = class_element_access %.loc20_14.2, element0 // CHECK:STDOUT: %.loc20_14.4: ref %A = converted %A.as.X.impl.F.call, %.loc20_14.3 // CHECK:STDOUT: %.loc20_14.5: %A = bind_value %.loc20_14.4 -// CHECK:STDOUT: %B.as.Destroy.impl.Op.bound: = bound_method %.loc20_14.1, constants.%B.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc20_14.1 +// CHECK:STDOUT: %B.as.Destroy.impl.Op.bound: = bound_method %.loc20_14.2, constants.%B.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc20_14.2 // CHECK:STDOUT: %B.as.Destroy.impl.Op.call: init %empty_tuple.type = call %B.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } @@ -931,10 +931,10 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_29.10: init %empty_struct_type = converted %.loc10_29.7, %.loc10_29.9 [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_29.11: init %struct_type.a.b.f95 = struct_init (%.loc10_29.6, %.loc10_29.10) to %return [concrete = constants.%struct] // CHECK:STDOUT: %.loc10_29.12: init %struct_type.a.b.f95 = converted %empty_tuple.type.as.I.impl.F.call, %.loc10_29.11 [concrete = constants.%struct] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_29.1, constants.%T.as.Destroy.impl.Op.eab +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc10_29.2, constants.%T.as.Destroy.impl.Op.eab // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc10_29.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.30d = addr_of %.loc10_29.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc10_29.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.30d = addr_of %.loc10_29.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc10_29.12 to %return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/import_self.carbon b/toolchain/check/testdata/impl/import_self.carbon index 06c5f616a476..bc97e306509a 100644 --- a/toolchain/check/testdata/impl/import_self.carbon +++ b/toolchain/check/testdata/impl/import_self.carbon @@ -261,10 +261,10 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %.loc11_22.2: ref %empty_tuple.type = temporary %.loc11_22.1, %empty_tuple.type.as.Add.impl.Op.call // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_23: %empty_tuple.type = converted %empty_tuple.type.as.Add.impl.Op.call, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc11_22.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc11_22.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc11_22: = bound_method %.loc11_22.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc11_22.1 +// CHECK:STDOUT: %bound_method.loc11_22: = bound_method %.loc11_22.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.loc11_22.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc11_22(%addr) // CHECK:STDOUT: return %.loc11_23 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index 650848558e7c..f2a773cfa840 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -355,10 +355,10 @@ fn G() { // CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %C.as.I.impl.F.specific_fn.loc8_17.1(%.5) // CHECK:STDOUT: %Op.ref: %Destroy.assoc_type = name_ref Op, imports.%Core.import_ref.f99 [concrete = constants.%assoc0] // CHECK:STDOUT: %impl.elem0: @C.as.I.impl.F.loc8_17.2.%.6 (%.926) = impl_witness_access constants.%Destroy.impl_witness.35ec57.2, element0 [symbolic = %C.as.Destroy.impl.Op (constants.%C.as.Destroy.impl.Op.c1f409.2)] -// CHECK:STDOUT: %bound_method.1: = bound_method %.1, %impl.elem0 +// CHECK:STDOUT: %bound_method.1: = bound_method %.3, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.Destroy.impl.Op(constants.%Y) [symbolic = %C.as.Destroy.impl.Op.specific_fn (constants.%C.as.Destroy.impl.Op.specific_fn)] -// CHECK:STDOUT: %bound_method.2: = bound_method %.1, %specific_fn -// CHECK:STDOUT: %addr: @C.as.I.impl.F.loc8_17.2.%ptr (%ptr.40dc71.2) = addr_of %.1 +// CHECK:STDOUT: %bound_method.2: = bound_method %.3, %specific_fn +// CHECK:STDOUT: %addr: @C.as.I.impl.F.loc8_17.2.%ptr (%ptr.40dc71.2) = addr_of %.3 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -627,10 +627,10 @@ fn G() { // CHECK:STDOUT: %.loc7_16.6: ref %C.607 = converted %.loc7_16.2, %.loc7_16.5 // CHECK:STDOUT: %.loc7_16.7: %C.607 = bind_value %.loc7_16.6 // CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %C.as.I.impl.F.specific_fn(%.loc7_16.7) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc7_16.3, constants.%C.as.Destroy.impl.Op.8db +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc7_16.5, constants.%C.as.Destroy.impl.Op.8db // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn: = specific_function constants.%C.as.Destroy.impl.Op.8db, @C.as.Destroy.impl.Op(constants.%empty_tuple) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.e84] -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_16.3, %C.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.2ce = addr_of %.loc7_16.3 +// CHECK:STDOUT: %bound_method: = bound_method %.loc7_16.5, %C.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.2ce = addr_of %.loc7_16.5 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/interface_args.carbon b/toolchain/check/testdata/impl/interface_args.carbon index c2f19f04ebb8..d201680924b6 100644 --- a/toolchain/check/testdata/impl/interface_args.carbon +++ b/toolchain/check/testdata/impl/interface_args.carbon @@ -1262,7 +1262,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %Factory.type.c96: type = facet_type <@Factory, @Factory(%T)> [symbolic] @@ -1275,8 +1274,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc0.46d25f.1: %Factory.assoc_type.207 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [symbolic] // CHECK:STDOUT: %Factory.Method.type.7ee: type = fn_type @Factory.Method, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Method.a71: %Factory.Method.type.7ee = struct_value () [symbolic] -// CHECK:STDOUT: %Self.as_type.56c: type = facet_access_type %Self.9ba [symbolic] -// CHECK:STDOUT: %pattern_type.5ea: type = pattern_type %Self.as_type.56c [symbolic] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.9ba [symbolic] +// CHECK:STDOUT: %pattern_type.5ea: type = pattern_type %Self.as_type [symbolic] // CHECK:STDOUT: %assoc1.16541d.1: %Factory.assoc_type.207 = assoc_entity element1, imports.%Main.import_ref.46fc3c.1 [symbolic] // CHECK:STDOUT: %Self.187: %Factory.type.a5d = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Factory.Make.type.c59: type = fn_type @Factory.Make, @Factory(%B) [concrete] @@ -1295,10 +1294,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %.711: type = fn_type_with_self_type %Factory.Make.type.c59, %Factory.facet [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Make.type: type = fn_type @A.as.Factory.impl.Make [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Make: %A.as.Factory.impl.Make.type = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.5cf: = impl_witness imports.%Destroy.impl_witness_table.f6b [concrete] -// CHECK:STDOUT: %B.as.Destroy.impl.Op.type: type = fn_type @B.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %B.as.Destroy.impl.Op: %B.as.Destroy.impl.Op.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] // CHECK:STDOUT: %InstanceB.type: type = fn_type @InstanceB [concrete] // CHECK:STDOUT: %InstanceB: %InstanceB.type = struct_value () [concrete] @@ -1313,7 +1308,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.B: type = import_ref Main//factory, B, loaded [concrete = constants.%B] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Destroy = %Core.Destroy // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1323,7 +1317,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.e1c: type = import_ref Main//factory, loc11_9, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.cb9298.1: type = import_ref Main//factory, inst85 [no loc], loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %Main.import_ref.2d5 = import_ref Main//factory, loc11_9, unloaded -// CHECK:STDOUT: %Main.import_ref.6c7: = import_ref Main//factory, loc12_9, loaded [concrete = constants.%Destroy.impl_witness.5cf] +// CHECK:STDOUT: %Main.import_ref.ae7 = import_ref Main//factory, loc12_9, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst126 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.0e2: type = import_ref Main//factory, loc12_9, loaded [concrete = constants.%B] @@ -1352,9 +1346,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.9ec: %A.as.Factory.impl.Make.type = import_ref Main//factory, loc15_17, loaded [concrete = constants.%A.as.Factory.impl.Make] // CHECK:STDOUT: %Main.import_ref.7dd: %A.as.Factory.impl.Method.type = import_ref Main//factory, loc16_31, loaded [concrete = constants.%A.as.Factory.impl.Method] // CHECK:STDOUT: %Factory.impl_witness_table = impl_witness_table (%Main.import_ref.9ec, %Main.import_ref.7dd), @A.as.Factory.impl [concrete] -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %Main.import_ref.82a: %B.as.Destroy.impl.Op.type = import_ref Main//factory, loc12_9, loaded [concrete = constants.%B.as.Destroy.impl.Op] -// CHECK:STDOUT: %Destroy.impl_witness_table.f6b = impl_witness_table (%Main.import_ref.82a), @B.as.Destroy.impl [concrete] // CHECK:STDOUT: %Main.import_ref.46fc3c.2 = import_ref Main//factory, loc8_31, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1425,7 +1416,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: impl @B.as.Destroy.impl: imports.%Main.import_ref.0e2 as imports.%Main.import_ref.cb9298.2 [from "factory.carbon"] { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Op = imports.%Main.import_ref.fc3 -// CHECK:STDOUT: witness = imports.%Main.import_ref.6c7 +// CHECK:STDOUT: witness = imports.%Main.import_ref.ae7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @A.as.Factory.impl: imports.%Main.import_ref.984 as imports.%Main.import_ref.bd2 [from "factory.carbon"] { @@ -1460,7 +1451,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.c96)] // CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.c96) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.9ba)] -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.56c)] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.5ea)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.7dc)] // CHECK:STDOUT: @@ -1480,16 +1471,11 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %impl.elem0: %.711 = impl_witness_access constants.%Factory.impl_witness, element0 [concrete = constants.%A.as.Factory.impl.Make] // CHECK:STDOUT: %.loc4: ref %B = splice_block %return {} // CHECK:STDOUT: %A.as.Factory.impl.Make.call: init %B = call %impl.elem0() to %.loc4 -// CHECK:STDOUT: %B.as.Destroy.impl.Op.bound: = bound_method %.loc4, constants.%B.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc4 -// CHECK:STDOUT: %B.as.Destroy.impl.Op.call: init %empty_tuple.type = call %B.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %A.as.Factory.impl.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A.as.Factory.impl.Make [from "factory.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @B.as.Destroy.impl.Op = "no_op" [from "factory.carbon"]; -// CHECK:STDOUT: // CHECK:STDOUT: fn @InstanceB(%a.param: %A) -> %return.param: %B { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %A = name_ref a, %a @@ -1502,9 +1488,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: %.loc7: ref %B = splice_block %return {} // CHECK:STDOUT: %A.as.Factory.impl.Method.call: init %B = call %bound_method(%a.ref) to %.loc7 -// CHECK:STDOUT: %B.as.Destroy.impl.Op.bound: = bound_method %.loc7, constants.%B.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc7 -// CHECK:STDOUT: %B.as.Destroy.impl.Op.call: init %empty_tuple.type = call %B.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %A.as.Factory.impl.Method.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1538,7 +1521,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Factory.type => constants.%Factory.type.c96 // CHECK:STDOUT: %Self => constants.%Self.9ba -// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.56c +// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.5ea // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.7dc // 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 33ca4614082f..1829aa9bb978 100644 --- a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon +++ b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon @@ -411,11 +411,11 @@ fn G() { // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%facet_value) [concrete = constants.%F.specific_fn] // CHECK:STDOUT: %.loc46_11.2: %C = bind_value %.loc46_11.1 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn(%.loc46_11.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc46: = bound_method %.loc46_9.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc46: %ptr.8e6 = addr_of %.loc46_9.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc46: = bound_method %.loc46_9.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc46: %ptr.8e6 = addr_of %.loc46_9.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc46: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc46(%addr.loc46) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc40: = bound_method %.loc40_6.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc40: %ptr.8e6 = addr_of %.loc40_6.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc40: = bound_method %.loc40_6.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc40: %ptr.8e6 = addr_of %.loc40_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc40: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc40(%addr.loc40) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index e90f7cf9be13..79c73b63a855 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -503,10 +503,10 @@ fn G(x: A) { // CHECK:STDOUT: %.loc13_21.2: ref %empty_struct_type = temporary %.loc13_21.1, %T.as.HasF.impl.F.call // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_22: %empty_struct_type = converted %T.as.HasF.impl.F.call, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc13_21.1, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc13_21.2, constants.%T.as.Destroy.impl.Op.d5a // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_21.2: = bound_method %.loc13_21.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %.loc13_21.1 +// CHECK:STDOUT: %bound_method.loc13_21.2: = bound_method %.loc13_21.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %.loc13_21.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13_21.2(%addr) // CHECK:STDOUT: return %.loc13_22 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index 1b6dca9d5945..01c302075298 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -461,10 +461,10 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %.loc22_22.2: ref %empty_struct_type = temporary %.loc22_22.1, %A.as.I.impl.F.call // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc22_23: %empty_struct_type = converted %A.as.I.impl.F.call, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc22_22.1, constants.%T.as.Destroy.impl.Op.d5a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc22_22.2, constants.%T.as.Destroy.impl.Op.d5a // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.d5a, @T.as.Destroy.impl.Op(constants.%empty_struct_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_22.2: = bound_method %.loc22_22.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %.loc22_22.1 +// CHECK:STDOUT: %bound_method.loc22_22.2: = bound_method %.loc22_22.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.c28 = addr_of %.loc22_22.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc22_22.2(%addr) // CHECK:STDOUT: return %.loc22_23 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index f5575a332937..c7d03a9afa41 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -401,8 +401,8 @@ fn Call() { // CHECK:STDOUT: %.loc9_7.2: ref %C = temporary %.loc9_7.1, %Get.call // CHECK:STDOUT: %.loc9_7.3: %C = bind_value %.loc9_7.2 // CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %bound_method(%.loc9_7.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc9_7.1, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc9_7.1 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc9_7.2, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc9_7.2 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/use_assoc_const.carbon b/toolchain/check/testdata/impl/use_assoc_const.carbon index a20087e7f7b1..72c9d28b7267 100644 --- a/toolchain/check/testdata/impl/use_assoc_const.carbon +++ b/toolchain/check/testdata/impl/use_assoc_const.carbon @@ -4103,10 +4103,10 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12_23.2: %C.131 = bind_value %.loc12_23.1 // CHECK:STDOUT: %a: %C.131 = bind_name a, %.loc12_23.2 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc12_21.2, constants.%C.as.Destroy.impl.Op.e2a +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc12_21.4, constants.%C.as.Destroy.impl.Op.e2a // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn: = specific_function constants.%C.as.Destroy.impl.Op.e2a, @C.as.Destroy.impl.Op(constants.%D) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc12_21.2, %C.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.aaa = addr_of %.loc12_21.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc12_21.4, %C.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.aaa = addr_of %.loc12_21.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index e6a26eede54a..0223d6f32982 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -356,10 +356,10 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %.loc32_7.2: %i32 = converted %int_0.loc32, %.loc32_7.1 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc32_8.1: ref %i32 = array_index %.loc32_5.2, %.loc32_7.2 // CHECK:STDOUT: %.loc32_8.2: %i32 = bind_value %.loc32_8.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc32: = bound_method %.loc32_5.1, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc32: = bound_method %.loc32_5.2, constants.%T.as.Destroy.impl.Op.f0b // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc32_5: = bound_method %.loc32_5.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc32: %ptr.f01 = addr_of %.loc32_5.1 +// CHECK:STDOUT: %bound_method.loc32_5: = bound_method %.loc32_5.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc32: %ptr.f01 = addr_of %.loc32_5.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc32: init %empty_tuple.type = call %bound_method.loc32_5(%addr.loc32) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc26: = bound_method %a.var, constants.%T.as.Destroy.impl.Op.f0b // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index 476f03907ab1..70d7c2ddf2da 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -244,15 +244,15 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41_10: init %i32 = call %bound_method.loc41_10.2(%int_4.loc41) [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc41_10: init %i32 = converted %int_4.loc41, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41_10 [concrete = constants.%int_4.940] // CHECK:STDOUT: assign %.loc41_8.2, %.loc41_10 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc41: = bound_method %.loc41_5.1, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc41: = bound_method %.loc41_5.2, constants.%T.as.Destroy.impl.Op.f0b // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc41_5: = bound_method %.loc41_5.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc41: %ptr.f01 = addr_of %.loc41_5.1 +// CHECK:STDOUT: %bound_method.loc41_5: = bound_method %.loc41_5.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc41: %ptr.f01 = addr_of %.loc41_5.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc41: init %empty_tuple.type = call %bound_method.loc41_5(%addr.loc41) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36_21: = bound_method %.loc36_21.1, constants.%T.as.Destroy.impl.Op.f0b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36_21: = bound_method %.loc36_21.2, constants.%T.as.Destroy.impl.Op.f0b // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.f0b, @T.as.Destroy.impl.Op(constants.%array_type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c51] -// CHECK:STDOUT: %bound_method.loc36_21: = bound_method %.loc36_21.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc36_21: %ptr.f01 = addr_of %.loc36_21.1 +// CHECK:STDOUT: %bound_method.loc36_21: = bound_method %.loc36_21.2, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc36_21: %ptr.f01 = addr_of %.loc36_21.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc36_21: init %empty_tuple.type = call %bound_method.loc36_21(%addr.loc36_21) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc36_3: = bound_method %pf.var, constants.%T.as.Destroy.impl.Op.649 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.649, @T.as.Destroy.impl.Op(constants.%ptr.235) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.829] diff --git a/toolchain/check/testdata/interface/compound_member_access.carbon b/toolchain/check/testdata/interface/compound_member_access.carbon index 82f0a65b7d44..ff5755604633 100644 --- a/toolchain/check/testdata/interface/compound_member_access.carbon +++ b/toolchain/check/testdata/interface/compound_member_access.carbon @@ -1430,14 +1430,14 @@ fn Works() { // CHECK:STDOUT: %A.ref.loc38_34: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %G.ref.loc38: %A.assoc_type = name_ref G, @A.%assoc0 [concrete = constants.%assoc0.d52] // CHECK:STDOUT: %.loc38_32: %A.type = converted %.loc38_8, [concrete = ] -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc38: = bound_method %.loc38_6.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc38: %ptr.019 = addr_of %.loc38_6.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc38: = bound_method %.loc38_6.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc38: %ptr.019 = addr_of %.loc38_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc38: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc38(%addr.loc38) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc30: = bound_method %.loc30_6.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc30: %ptr.019 = addr_of %.loc30_6.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc30: = bound_method %.loc30_6.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc30: %ptr.019 = addr_of %.loc30_6.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc30: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc30(%addr.loc30) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_5.2, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc22: %ptr.019 = addr_of %.loc22_5.2 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc22: = bound_method %.loc22_5.4, constants.%C.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc22: %ptr.019 = addr_of %.loc22_5.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc22: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound.loc22(%addr.loc22) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index 4873a7bda325..9963c89097db 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -480,14 +480,14 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc22_21.6: %Z = bind_value %.loc22_21.5 // CHECK:STDOUT: %Y.as.A.impl.F.call: init %tuple.type.f6b = call %specific_fn(%.loc22_21.6) to %.loc22_22.1 // CHECK:STDOUT: %.loc22_22.2: ref %tuple.type.f6b = temporary %.loc22_22.1, %Y.as.A.impl.F.call -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc22_21.2, constants.%Z.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc22_21: %ptr.fb6 = addr_of %.loc22_21.2 -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc22_21) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc22_22.1, constants.%T.as.Destroy.impl.Op.51a +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc22_22.2, constants.%T.as.Destroy.impl.Op.51a // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.51a, @T.as.Destroy.impl.Op(constants.%tuple.type.f6b) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc22_22.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc22_22: %ptr.959 = addr_of %.loc22_22.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc22_22.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc22_22: %ptr.959 = addr_of %.loc22_22.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc22_22) +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc22_21.4, constants.%Z.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc22_21: %ptr.fb6 = addr_of %.loc22_21.4 +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc22_21) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -530,15 +530,15 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc26_11.6: %Z = bind_value %.loc26_11.5 // CHECK:STDOUT: %.loc26_12.2: init @CallGeneric.%tuple.type (%tuple.type.e28) = call %specific_impl_fn.loc26_4.1(%.loc26_11.6) to %.loc26_12.1 // CHECK:STDOUT: %.loc26_12.3: ref @CallGeneric.%tuple.type (%tuple.type.e28) = temporary %.loc26_12.1, %.loc26_12.2 -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc26_11.2, constants.%Z.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc26_11: %ptr.fb6 = addr_of %.loc26_11.2 -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%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: %bound_method.loc26_12.1: = bound_method %.loc26_12.3, %impl.elem0.loc26_12.1 // CHECK:STDOUT: %specific_impl_fn.loc26_12.1: = specific_impl_function %impl.elem0.loc26_12.1, @Destroy.Op(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: %addr.loc26_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc26_12.1 +// CHECK:STDOUT: %bound_method.loc26_12.2: = bound_method %.loc26_12.3, %specific_impl_fn.loc26_12.1 +// CHECK:STDOUT: %addr.loc26_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc26_12.3 // CHECK:STDOUT: %.loc26_12.4: init %empty_tuple.type = call %bound_method.loc26_12.2(%addr.loc26_12) +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc26_11.4, constants.%Z.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc26_11: %ptr.fb6 = addr_of %.loc26_11.4 +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc26_11) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -737,15 +737,6 @@ fn CallIndirect() { // CHECK:STDOUT: %require_complete.d4d: = require_complete_type %tuple.type.8ae [symbolic] // CHECK:STDOUT: %require_complete.ed4: = require_complete_type %U.753 [symbolic] // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.7d9: = specific_function %tuple.type.as.A.impl.F.d79, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.753) [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T.8b3) [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] -// CHECK:STDOUT: %ptr.ab5: type = ptr_type %tuple.type.8ae [symbolic] -// CHECK:STDOUT: %require_complete.293: = require_complete_type %ptr.ab5 [symbolic] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.0d1: = lookup_impl_witness %tuple.type.8ae, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.facet.3f0: %Destroy.type = facet_value %tuple.type.8ae, (%Destroy.lookup_impl_witness.0d1) [symbolic] -// CHECK:STDOUT: %.a93: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.3f0 [symbolic] -// CHECK:STDOUT: %impl.elem0.9fc: %.a93 = impl_witness_access %Destroy.lookup_impl_witness.0d1, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.2c6: = specific_impl_function %impl.elem0.9fc, @Destroy.Op(%Destroy.facet.3f0) [symbolic] // CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete] // CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.a46: type = tuple_type (%Y1, %Y2) [concrete] @@ -766,6 +757,8 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.0b2: type = pattern_type %tuple.type.415 [concrete] // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.79b: = specific_function %tuple.type.as.A.impl.F.93b, @tuple.type.as.A.impl.F(%Y1, %Y2, %X, %Z) [concrete] // CHECK:STDOUT: %Z.val: %Z = struct_value () [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.bc9: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%T.8b3) [symbolic] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.46f: %T.as.Destroy.impl.Op.type.bc9 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.impl_witness.c80: = impl_witness imports.%Destroy.impl_witness_table, @T.as.Destroy.impl(%tuple.type.415) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.type.2a3: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.415) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.66e: %T.as.Destroy.impl.Op.type.2a3 = struct_value () [concrete] @@ -790,10 +783,10 @@ fn CallIndirect() { // 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.1a2: = lookup_impl_witness %tuple.type.e28, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.facet.1a6: %Destroy.type = facet_value %tuple.type.e28, (%Destroy.lookup_impl_witness.1a2) [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 %Destroy.Op.type, %Destroy.facet.1a6 [symbolic] -// CHECK:STDOUT: %impl.elem0.305: %.efa = impl_witness_access %Destroy.lookup_impl_witness.1a2, element0 [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, @Destroy.Op(%Destroy.facet.1a6) [symbolic] // CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [concrete] // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete] @@ -1109,18 +1102,11 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.loc17_24: type = pattern_type %tuple.type.loc17_42.2 [symbolic = %pattern_type.loc17_24 (constants.%pattern_type.d4a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc17_24.1: = require_complete_type %tuple.type.loc17_42.2 [symbolic = %require_complete.loc17_24.1 (constants.%require_complete.d4d)] +// CHECK:STDOUT: %require_complete.loc17_24: = require_complete_type %tuple.type.loc17_42.2 [symbolic = %require_complete.loc17_24 (constants.%require_complete.d4d)] // CHECK:STDOUT: %require_complete.loc17_19: = require_complete_type %U.loc17_8.1 [symbolic = %require_complete.loc17_19 (constants.%require_complete.ed4)] // CHECK:STDOUT: %tuple.type.as.A.impl.F.type: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic = %tuple.type.as.A.impl.F.type (constants.%tuple.type.as.A.impl.F.type.b3e)] // CHECK:STDOUT: %tuple.type.as.A.impl.F: @tuple.type.as.A.impl.F.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.b3e) = struct_value () [symbolic = %tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.d79)] // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2: = specific_function %tuple.type.as.A.impl.F, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.loc17_8.1) [symbolic = %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 (constants.%tuple.type.as.A.impl.F.specific_fn.7d9)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %tuple.type.loc17_42.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.0d1)] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %tuple.type.loc17_42.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.3f0)] -// CHECK:STDOUT: %.loc17_24.3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc17_24.3 (constants.%.a93)] -// CHECK:STDOUT: %impl.elem0.loc17_24.2: @tuple.type.as.A.impl.F.%.loc17_24.3 (%.a93) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc17_24.2 (constants.%impl.elem0.9fc)] -// CHECK:STDOUT: %specific_impl_fn.loc17_24.2: = specific_impl_function %impl.elem0.loc17_24.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc17_24.2 (constants.%specific_impl_fn.2c6)] -// CHECK:STDOUT: %ptr: type = ptr_type %tuple.type.loc17_42.2 [symbolic = %ptr (constants.%ptr.ab5)] -// CHECK:STDOUT: %require_complete.loc17_24.2: = require_complete_type %ptr [symbolic = %require_complete.loc17_24.2 (constants.%require_complete.293)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.753)) -> %return.param: @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) { // CHECK:STDOUT: !entry: @@ -1129,14 +1115,8 @@ fn CallIndirect() { // CHECK:STDOUT: %U.ref.loc18: type = name_ref U, %U.loc17_8.2 [symbolic = %U.loc17_8.1 (constants.%U.753)] // CHECK:STDOUT: %u.ref: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.753) = name_ref u, %u // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.1: = specific_function %F.ref, @tuple.type.as.A.impl.F(constants.%V1, constants.%V2, constants.%W, constants.%U.753) [symbolic = %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 (constants.%tuple.type.as.A.impl.F.specific_fn.7d9)] -// CHECK:STDOUT: %.loc17_24.1: ref @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = splice_block %return {} -// CHECK:STDOUT: %tuple.type.as.A.impl.F.call: init @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = call %tuple.type.as.A.impl.F.specific_fn.loc18_12.1(%u.ref) to %.loc17_24.1 -// CHECK:STDOUT: %impl.elem0.loc17_24.1: @tuple.type.as.A.impl.F.%.loc17_24.3 (%.a93) = impl_witness_access constants.%Destroy.lookup_impl_witness.0d1, element0 [symbolic = %impl.elem0.loc17_24.2 (constants.%impl.elem0.9fc)] -// CHECK:STDOUT: %bound_method.loc17_24.1: = bound_method %.loc17_24.1, %impl.elem0.loc17_24.1 -// CHECK:STDOUT: %specific_impl_fn.loc17_24.1: = specific_impl_function %impl.elem0.loc17_24.1, @Destroy.Op(constants.%Destroy.facet.3f0) [symbolic = %specific_impl_fn.loc17_24.2 (constants.%specific_impl_fn.2c6)] -// CHECK:STDOUT: %bound_method.loc17_24.2: = bound_method %.loc17_24.1, %specific_impl_fn.loc17_24.1 -// CHECK:STDOUT: %addr: @tuple.type.as.A.impl.F.%ptr (%ptr.ab5) = addr_of %.loc17_24.1 -// CHECK:STDOUT: %.loc17_24.2: init %empty_tuple.type = call %bound_method.loc17_24.2(%addr) +// CHECK:STDOUT: %.loc17_24: ref @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = splice_block %return {} +// CHECK:STDOUT: %tuple.type.as.A.impl.F.call: init @tuple.type.as.A.impl.F.%tuple.type.loc17_42.2 (%tuple.type.8ae) = call %tuple.type.as.A.impl.F.specific_fn.loc18_12.1(%u.ref) to %.loc17_24 // CHECK:STDOUT: return %tuple.type.as.A.impl.F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1168,14 +1148,14 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc24_38.6: %Z = bind_value %.loc24_38.5 // CHECK:STDOUT: %tuple.type.as.A.impl.F.call: init %tuple.type.415 = call %specific_fn(%.loc24_38.6) to %.loc24_39.1 // CHECK:STDOUT: %.loc24_39.2: ref %tuple.type.415 = temporary %.loc24_39.1, %tuple.type.as.A.impl.F.call -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc24_38.2, constants.%Z.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc24_38: %ptr.fb6 = addr_of %.loc24_38.2 -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc24_38) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_39.1, constants.%T.as.Destroy.impl.Op.66e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_39.2, constants.%T.as.Destroy.impl.Op.66e // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.66e, @T.as.Destroy.impl.Op(constants.%tuple.type.415) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc24_39.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc24_39: %ptr.ad9 = addr_of %.loc24_39.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc24_39.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc24_39: %ptr.ad9 = addr_of %.loc24_39.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc24_39) +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc24_38.4, constants.%Z.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc24_38: %ptr.fb6 = addr_of %.loc24_38.4 +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc24_38) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1191,7 +1171,7 @@ fn CallIndirect() { // CHECK:STDOUT: %specific_impl_fn.loc28_4.2: = specific_impl_function %impl.elem0.loc28_4.2, @A.F(constants.%X, %A.facet, constants.%Z) [symbolic = %specific_impl_fn.loc28_4.2 (constants.%specific_impl_fn.e7e)] // CHECK:STDOUT: %tuple.type: type = tuple_type (constants.%X, %T.as_type.loc28_4.2, constants.%Z) [symbolic = %tuple.type (constants.%tuple.type.e28)] // 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.1a2)] +// 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.5: type = fn_type_with_self_type constants.%Destroy.Op.type, %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)] @@ -1218,15 +1198,15 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc28_11.6: %Z = bind_value %.loc28_11.5 // CHECK:STDOUT: %.loc28_12.2: init @CallGeneric.%tuple.type (%tuple.type.e28) = call %specific_impl_fn.loc28_4.1(%.loc28_11.6) to %.loc28_12.1 // CHECK:STDOUT: %.loc28_12.3: ref @CallGeneric.%tuple.type (%tuple.type.e28) = temporary %.loc28_12.1, %.loc28_12.2 -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc28_11.2, constants.%Z.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc28_11: %ptr.fb6 = addr_of %.loc28_11.2 -// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc28_11) -// CHECK:STDOUT: %impl.elem0.loc28_12.1: @CallGeneric.%.loc28_12.5 (%.efa) = impl_witness_access constants.%Destroy.lookup_impl_witness.1a2, 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: %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.3, %impl.elem0.loc28_12.1 // CHECK:STDOUT: %specific_impl_fn.loc28_12.1: = specific_impl_function %impl.elem0.loc28_12.1, @Destroy.Op(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: %addr.loc28_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc28_12.1 +// CHECK:STDOUT: %bound_method.loc28_12.2: = bound_method %.loc28_12.3, %specific_impl_fn.loc28_12.1 +// CHECK:STDOUT: %addr.loc28_12: @CallGeneric.%ptr (%ptr.103) = addr_of %.loc28_12.3 // CHECK:STDOUT: %.loc28_12.4: init %empty_tuple.type = call %bound_method.loc28_12.2(%addr.loc28_12) +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.bound: = bound_method %.loc28_11.4, constants.%Z.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc28_11: %ptr.fb6 = addr_of %.loc28_11.4 +// CHECK:STDOUT: %Z.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Z.as.Destroy.impl.Op.bound(%addr.loc28_11) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1298,18 +1278,11 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.d4a // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc17_24.1 => constants.%require_complete.d4d +// CHECK:STDOUT: %require_complete.loc17_24 => constants.%require_complete.d4d // CHECK:STDOUT: %require_complete.loc17_19 => constants.%require_complete.ed4 // CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.b3e // CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.d79 // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 => constants.%tuple.type.as.A.impl.F.specific_fn.7d9 -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness.0d1 -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.3f0 -// CHECK:STDOUT: %.loc17_24.3 => constants.%.a93 -// CHECK:STDOUT: %impl.elem0.loc17_24.2 => constants.%impl.elem0.9fc -// CHECK:STDOUT: %specific_impl_fn.loc17_24.2 => constants.%specific_impl_fn.2c6 -// CHECK:STDOUT: %ptr => constants.%ptr.ab5 -// CHECK:STDOUT: %require_complete.loc17_24.2 => constants.%require_complete.293 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A.F(constants.%W, constants.%A.facet.461, constants.%U.753) { @@ -1361,18 +1334,11 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.0b2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc17_24.1 => constants.%complete_type.aa8 +// CHECK:STDOUT: %require_complete.loc17_24 => constants.%complete_type.aa8 // CHECK:STDOUT: %require_complete.loc17_19 => constants.%complete_type.357 // CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.bf7 // CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.93b // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 => constants.%tuple.type.as.A.impl.F.specific_fn.79b -// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.impl_witness.c80 -// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.2b1 -// CHECK:STDOUT: %.loc17_24.3 => constants.%.1b7 -// CHECK:STDOUT: %impl.elem0.loc17_24.2 => constants.%T.as.Destroy.impl.Op.66e -// CHECK:STDOUT: %specific_impl_fn.loc17_24.2 => constants.%T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %ptr => constants.%ptr.ad9 -// CHECK:STDOUT: %require_complete.loc17_24.2 => constants.%complete_type.e23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGeneric(constants.%T.9c2) { diff --git a/toolchain/check/testdata/interop/cpp/class/abstract.carbon b/toolchain/check/testdata/interop/cpp/class/abstract.carbon index 6b93cd5a515a..688f5dd19cde 100644 --- a/toolchain/check/testdata/interop/cpp/class/abstract.carbon +++ b/toolchain/check/testdata/interop/cpp/class/abstract.carbon @@ -94,13 +94,9 @@ fn F() -> Cpp.AbstractFinal { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %AbstractFinal: type = class_type @AbstractFinal [concrete] -// CHECK:STDOUT: %pattern_type.2e0: type = pattern_type %AbstractFinal [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %AbstractFinal [concrete] // 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: %T.as.Destroy.impl.Op.type.4da: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%AbstractFinal) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.0fa: %T.as.Destroy.impl.Op.type.4da = struct_value () [concrete] -// CHECK:STDOUT: %ptr.d4c: type = ptr_type %AbstractFinal [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -113,8 +109,8 @@ fn F() -> Cpp.AbstractFinal { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %return.patt: %pattern_type.2e0 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.2e0 = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %AbstractFinal.ref: type = name_ref AbstractFinal, imports.%AbstractFinal.decl [concrete = constants.%AbstractFinal] @@ -128,11 +124,6 @@ fn F() -> Cpp.AbstractFinal { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %.loc11: ref %AbstractFinal = splice_block %return {} // CHECK:STDOUT: %F.call: init %AbstractFinal = call %F.ref() to %.loc11 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc11, constants.%T.as.Destroy.impl.Op.0fa -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc11, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.d4c = addr_of %.loc11 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/constructor.carbon b/toolchain/check/testdata/interop/cpp/class/constructor.carbon index e3fdb48fc5c2..62a47631c014 100644 --- a/toolchain/check/testdata/interop/cpp/class/constructor.carbon +++ b/toolchain/check/testdata/interop/cpp/class/constructor.carbon @@ -265,10 +265,10 @@ fn F() { // CHECK:STDOUT: %.loc8_26.3: ref %C = temporary %.loc8_26.1, %.loc8_26.2 // CHECK:STDOUT: %.loc8_26.4: %C = bind_value %.loc8_26.3 // CHECK:STDOUT: %c: %C = bind_name c, %.loc8_26.4 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_26.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_26.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_26.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_26.2: %ptr.d9e = addr_of %.loc8_26.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_26.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_26.2: %ptr.d9e = addr_of %.loc8_26.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_26.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -364,10 +364,10 @@ fn F() { // CHECK:STDOUT: %.loc8_34.3: ref %C = temporary %.loc8_34.1, %.loc8_34.2 // CHECK:STDOUT: %.loc8_34.4: %C = bind_value %.loc8_34.3 // CHECK:STDOUT: %c: %C = bind_name c, %.loc8_34.4 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_34.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_34.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_34: = bound_method %.loc8_34.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_34.2: %ptr.d9e = addr_of %.loc8_34.1 +// CHECK:STDOUT: %bound_method.loc8_34: = bound_method %.loc8_34.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_34.2: %ptr.d9e = addr_of %.loc8_34.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_34(%addr.loc8_34.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -521,10 +521,10 @@ fn F() { // CHECK:STDOUT: %C.ref.loc14_14: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c2: %C = bind_name c2, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_31.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_31.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_31: = bound_method %.loc8_31.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_31.2: %ptr.d9e = addr_of %.loc8_31.1 +// CHECK:STDOUT: %bound_method.loc8_31: = bound_method %.loc8_31.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_31.2: %ptr.d9e = addr_of %.loc8_31.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_31(%addr.loc8_31.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -641,10 +641,10 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16_21.3: %C = converted %.loc16_21.2, [concrete = ] // CHECK:STDOUT: %c2: %C = bind_name c2, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_28.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_28.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_28: = bound_method %.loc8_28.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_28.2: %ptr.d9e = addr_of %.loc8_28.1 +// CHECK:STDOUT: %bound_method.loc8_28: = bound_method %.loc8_28.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_28.2: %ptr.d9e = addr_of %.loc8_28.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_28(%addr.loc8_28.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -785,10 +785,10 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22_21.3: %C = converted %.loc22_21.2, [concrete = ] // CHECK:STDOUT: %c3: %C = bind_name c3, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_31.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_31.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_31: = bound_method %.loc8_31.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_31.2: %ptr.d9e = addr_of %.loc8_31.1 +// CHECK:STDOUT: %bound_method.loc8_31: = bound_method %.loc8_31.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_31.2: %ptr.d9e = addr_of %.loc8_31.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_31(%addr.loc8_31.2) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/enum/anonymous.carbon b/toolchain/check/testdata/interop/cpp/enum/anonymous.carbon index 64a91fe4ae93..e83102764ffb 100644 --- a/toolchain/check/testdata/interop/cpp/enum/anonymous.carbon +++ b/toolchain/check/testdata/interop/cpp/enum/anonymous.carbon @@ -145,20 +145,20 @@ fn G() { // CHECK:STDOUT: %.loc10_20.2: ref %.bb7 = temporary %.loc10_20.1, %e.ref // CHECK:STDOUT: %addr.loc10_22: %ptr.73d = addr_of %.loc10_20.2 // CHECK:STDOUT: %F__carbon_thunk.call.loc10: init %empty_tuple.type = call imports.%F__carbon_thunk.decl.e1b8ec.2(%addr.loc10_11.2, %addr.loc10_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_20: = bound_method %.loc10_20.1, constants.%T.as.Destroy.impl.Op.e52 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_20: = bound_method %.loc10_20.2, constants.%T.as.Destroy.impl.Op.e52 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_20: = bound_method %.loc10_20.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc10_20: %ptr.73d = addr_of %.loc10_20.1 +// CHECK:STDOUT: %bound_method.loc10_20: = bound_method %.loc10_20.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc10_20: %ptr.73d = addr_of %.loc10_20.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_20: init %empty_tuple.type = call %bound_method.loc10_20(%addr.loc10_20) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_11: = bound_method %.loc10_11.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_11: = bound_method %.loc10_11.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_11: = bound_method %.loc10_11.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc10_11.3: %ptr.d9e = addr_of %.loc10_11.1 +// CHECK:STDOUT: %bound_method.loc10_11: = bound_method %.loc10_11.3, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc10_11.3: %ptr.d9e = addr_of %.loc10_11.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_11: init %empty_tuple.type = call %bound_method.loc10_11(%addr.loc10_11.3) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.1, constants.%T.as.Destroy.impl.Op.002 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.002 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.1, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc8_12: %ptr.793 = addr_of %.loc8_12.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.3 +// CHECK:STDOUT: %addr.loc8_12: %ptr.793 = addr_of %.loc8_12.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon b/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon index 95f5993589c5..b09c5e673c72 100644 --- a/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon +++ b/toolchain/check/testdata/interop/cpp/function/arithmetic_types_bridged.carbon @@ -724,10 +724,10 @@ fn F() { // CHECK:STDOUT: %.loc8_11.2: ref bool = temporary %.loc8_11.1, %true // CHECK:STDOUT: %addr.loc8_15: %ptr.bb2 = addr_of %.loc8_11.2 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_15) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.2, constants.%T.as.Destroy.impl.Op.8b7 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11: %ptr.bb2 = addr_of %.loc8_11.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11: %ptr.bb2 = addr_of %.loc8_11.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -772,10 +772,10 @@ fn F() { // CHECK:STDOUT: %.loc8_11.2: ref bool = temporary %.loc8_11.1, %false // CHECK:STDOUT: %addr.loc8_16: %ptr.bb2 = addr_of %.loc8_11.2 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_16) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.8b7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.2, constants.%T.as.Destroy.impl.Op.8b7 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11: %ptr.bb2 = addr_of %.loc8_11.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11: %ptr.bb2 = addr_of %.loc8_11.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -862,10 +862,10 @@ fn F() { // CHECK:STDOUT: %.loc8_11.6: ref %i8 = temporary %.loc8_11.5, %.loc8_11.4 // CHECK:STDOUT: %addr.loc8_13: %ptr.5c1 = addr_of %.loc8_11.6 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_13) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.5, constants.%Int.as.Destroy.impl.Op.945 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.6, constants.%Int.as.Destroy.impl.Op.945 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_11.4: = bound_method %.loc8_11.5, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11: %ptr.5c1 = addr_of %.loc8_11.5 +// CHECK:STDOUT: %bound_method.loc8_11.4: = bound_method %.loc8_11.6, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11: %ptr.5c1 = addr_of %.loc8_11.6 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_11.4(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -935,10 +935,10 @@ fn F() { // CHECK:STDOUT: %.loc8_11.4: ref %u8 = temporary %.loc8_11.3, %.loc8_11.2 // CHECK:STDOUT: %addr.loc8_12: %ptr.3e8 = addr_of %.loc8_11.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_12) -// CHECK:STDOUT: %UInt.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.3, constants.%UInt.as.Destroy.impl.Op.ad9 +// CHECK:STDOUT: %UInt.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.4, constants.%UInt.as.Destroy.impl.Op.ad9 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %.loc8_11.3, %UInt.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11: %ptr.3e8 = addr_of %.loc8_11.3 +// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %.loc8_11.4, %UInt.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11: %ptr.3e8 = addr_of %.loc8_11.4 // CHECK:STDOUT: %UInt.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_11.3(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1000,8 +1000,8 @@ fn F() { // CHECK:STDOUT: %.loc8_11.5: ref %Char = temporary %.loc8_11.4, %.loc8_11.3 // CHECK:STDOUT: %addr.loc8_14: %ptr.fb0 = addr_of %.loc8_11.5 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_14) -// CHECK:STDOUT: %Char.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.4, constants.%Char.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_11: %ptr.fb0 = addr_of %.loc8_11.4 +// CHECK:STDOUT: %Char.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.5, constants.%Char.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc8_11: %ptr.fb0 = addr_of %.loc8_11.5 // CHECK:STDOUT: %Char.as.Destroy.impl.Op.call: init %empty_tuple.type = call %Char.as.Destroy.impl.Op.bound(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1192,10 +1192,10 @@ fn F() { // CHECK:STDOUT: %.loc8_13.4: ref %i16 = temporary %.loc8_13.3, %.loc8_13.2 // CHECK:STDOUT: %addr.loc8_19: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_19) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.3 +// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_13.3(%addr.loc8_13) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1265,10 +1265,10 @@ fn F() { // CHECK:STDOUT: %.loc8_11.4: ref %i16 = temporary %.loc8_11.3, %.loc8_11.2 // CHECK:STDOUT: %addr.loc8_17: %ptr.251 = addr_of %.loc8_11.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_17) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %.loc8_11.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11: %ptr.251 = addr_of %.loc8_11.3 +// CHECK:STDOUT: %bound_method.loc8_11.3: = bound_method %.loc8_11.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11: %ptr.251 = addr_of %.loc8_11.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_11.3(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1355,10 +1355,10 @@ fn F() { // CHECK:STDOUT: %.loc8_11.6: ref %i16 = temporary %.loc8_11.5, %.loc8_11.4 // CHECK:STDOUT: %addr.loc8_18: %ptr.251 = addr_of %.loc8_11.6 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_18) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.5, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.6, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_11.4: = bound_method %.loc8_11.5, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11: %ptr.251 = addr_of %.loc8_11.5 +// CHECK:STDOUT: %bound_method.loc8_11.4: = bound_method %.loc8_11.6, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11: %ptr.251 = addr_of %.loc8_11.6 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_11.4(%addr.loc8_11) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1430,10 +1430,10 @@ fn F() { // CHECK:STDOUT: %.loc8_13.4: ref %i16 = temporary %.loc8_13.3, %.loc8_13.2 // CHECK:STDOUT: %addr.loc8_19: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_19) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.3 +// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_13.3(%addr.loc8_13) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1505,10 +1505,10 @@ fn F() { // CHECK:STDOUT: %.loc8_13.4: ref %i16 = temporary %.loc8_13.3, %.loc8_13.2 // CHECK:STDOUT: %addr.loc8_19: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_19) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.3 +// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_13.3(%addr.loc8_13) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1580,10 +1580,10 @@ fn F() { // CHECK:STDOUT: %.loc8_13.4: ref %i16 = temporary %.loc8_13.3, %.loc8_13.2 // CHECK:STDOUT: %addr.loc8_19: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_19) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.3 +// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_13.3(%addr.loc8_13) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1655,10 +1655,10 @@ fn F() { // CHECK:STDOUT: %.loc8_13.4: ref %i16 = temporary %.loc8_13.3, %.loc8_13.2 // CHECK:STDOUT: %addr.loc8_19: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_19) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_13.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.3 +// CHECK:STDOUT: %bound_method.loc8_13.3: = bound_method %.loc8_13.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_13: %ptr.251 = addr_of %.loc8_13.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_13.3(%addr.loc8_13) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1916,10 +1916,10 @@ fn F() { // CHECK:STDOUT: %.loc8_15.4: ref %f16.a6a = temporary %.loc8_15.3, %.loc8_15.2 // CHECK:STDOUT: %addr.loc8_21: %ptr.823 = addr_of %.loc8_15.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_21) -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.3, constants.%Float.as.Destroy.impl.Op.85f +// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%Float.as.Destroy.impl.Op.85f // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.3, %Float.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.823 = addr_of %.loc8_15.3 +// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.4, %Float.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.823 = addr_of %.loc8_15.4 // CHECK:STDOUT: %Float.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_15.3(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1991,10 +1991,10 @@ fn F() { // CHECK:STDOUT: %.loc8_15.4: ref %f32.97e = temporary %.loc8_15.3, %.loc8_15.2 // CHECK:STDOUT: %addr.loc8_21: %ptr.0bc = addr_of %.loc8_15.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_21) -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.3, constants.%Float.as.Destroy.impl.Op.199 +// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%Float.as.Destroy.impl.Op.199 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.3, %Float.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.0bc = addr_of %.loc8_15.3 +// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.4, %Float.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.0bc = addr_of %.loc8_15.4 // CHECK:STDOUT: %Float.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_15.3(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -2066,10 +2066,10 @@ fn F() { // CHECK:STDOUT: %.loc8_15.4: ref %f64.d77 = temporary %.loc8_15.3, %.loc8_15.2 // CHECK:STDOUT: %addr.loc8_21: %ptr.bcc = addr_of %.loc8_15.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_21) -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.3, constants.%Float.as.Destroy.impl.Op.b8c +// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%Float.as.Destroy.impl.Op.b8c // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.3, %Float.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.bcc = addr_of %.loc8_15.3 +// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.4, %Float.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.bcc = addr_of %.loc8_15.4 // CHECK:STDOUT: %Float.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_15.3(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -2141,10 +2141,10 @@ fn F() { // CHECK:STDOUT: %.loc8_15.4: ref %f128.b8c = temporary %.loc8_15.3, %.loc8_15.2 // CHECK:STDOUT: %addr.loc8_22: %ptr.402 = addr_of %.loc8_15.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_22) -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.3, constants.%Float.as.Destroy.impl.Op.052 +// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%Float.as.Destroy.impl.Op.052 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.3, %Float.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.402 = addr_of %.loc8_15.3 +// CHECK:STDOUT: %bound_method.loc8_15.3: = bound_method %.loc8_15.4, %Float.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.402 = addr_of %.loc8_15.4 // CHECK:STDOUT: %Float.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc8_15.3(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -2158,11 +2158,9 @@ fn F() { // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %foo_bool.type: type = fn_type @foo_bool [concrete] // CHECK:STDOUT: %foo_bool: %foo_bool.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [concrete] +// CHECK:STDOUT: %ptr: type = ptr_type bool [concrete] // CHECK:STDOUT: %foo_bool__carbon_thunk.type: type = fn_type @foo_bool__carbon_thunk [concrete] // CHECK:STDOUT: %foo_bool__carbon_thunk: %foo_bool__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.655: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(bool) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.8b7: %T.as.Destroy.impl.Op.type.655 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2190,8 +2188,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo_bool.ref: %foo_bool.type = name_ref foo_bool, imports.%foo_bool.decl [concrete = constants.%foo_bool] // CHECK:STDOUT: %.loc8_30.1: ref bool = temporary_storage -// CHECK:STDOUT: %addr.loc8_30.1: %ptr.bb2 = addr_of %.loc8_30.1 -// CHECK:STDOUT: %foo_bool__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_bool__carbon_thunk.decl(%addr.loc8_30.1) +// CHECK:STDOUT: %addr: %ptr = addr_of %.loc8_30.1 +// CHECK:STDOUT: %foo_bool__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_bool__carbon_thunk.decl(%addr) // CHECK:STDOUT: %.loc8_30.2: init bool = in_place_init %foo_bool__carbon_thunk.call, %.loc8_30.1 // CHECK:STDOUT: %.loc8_10.1: type = splice_block %.loc8_10.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] @@ -2201,11 +2199,6 @@ fn F() { // CHECK:STDOUT: %.loc8_30.3: bool = value_of_initializer %.loc8_30.2 // CHECK:STDOUT: %.loc8_30.4: bool = converted %.loc8_30.2, %.loc8_30.3 // CHECK:STDOUT: %x: bool = bind_name x, %.loc8_30.4 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_30.1, constants.%T.as.Destroy.impl.Op.8b7 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_30.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_30.2: %ptr.bb2 = addr_of %.loc8_30.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_30.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2218,11 +2211,9 @@ fn F() { // CHECK:STDOUT: %pattern_type.2f8: type = pattern_type %i16 [concrete] // CHECK:STDOUT: %foo_short.type: type = fn_type @foo_short [concrete] // CHECK:STDOUT: %foo_short: %foo_short.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] +// CHECK:STDOUT: %ptr: type = ptr_type %i16 [concrete] // CHECK:STDOUT: %foo_short__carbon_thunk.type: type = fn_type @foo_short__carbon_thunk [concrete] // CHECK:STDOUT: %foo_short__carbon_thunk: %foo_short__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.613: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.536: %Int.as.Destroy.impl.Op.type.613 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2250,8 +2241,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo_short.ref: %foo_short.type = name_ref foo_short, imports.%foo_short.decl [concrete = constants.%foo_short] // CHECK:STDOUT: %.loc8_30.1: ref %i16 = temporary_storage -// CHECK:STDOUT: %addr.loc8_30.1: %ptr.251 = addr_of %.loc8_30.1 -// CHECK:STDOUT: %foo_short__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_short__carbon_thunk.decl(%addr.loc8_30.1) +// CHECK:STDOUT: %addr: %ptr = addr_of %.loc8_30.1 +// CHECK:STDOUT: %foo_short__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_short__carbon_thunk.decl(%addr) // CHECK:STDOUT: %.loc8_30.2: init %i16 = in_place_init %foo_short__carbon_thunk.call, %.loc8_30.1 // CHECK:STDOUT: %.loc8_10: type = splice_block %i16 [concrete = constants.%i16] { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] @@ -2260,11 +2251,6 @@ fn F() { // CHECK:STDOUT: %.loc8_30.3: %i16 = value_of_initializer %.loc8_30.2 // CHECK:STDOUT: %.loc8_30.4: %i16 = converted %.loc8_30.2, %.loc8_30.3 // CHECK:STDOUT: %x: %i16 = bind_name x, %.loc8_30.4 -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc8_30.1, constants.%Int.as.Destroy.impl.Op.536 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_30.1, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_30.2: %ptr.251 = addr_of %.loc8_30.1 -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_30.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2298,11 +2284,9 @@ fn F() { // CHECK:STDOUT: %pattern_type.0ae: type = pattern_type %f64.d77 [concrete] // CHECK:STDOUT: %foo_double.type: type = fn_type @foo_double [concrete] // CHECK:STDOUT: %foo_double: %foo_double.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.bcc: type = ptr_type %f64.d77 [concrete] +// CHECK:STDOUT: %ptr: type = ptr_type %f64.d77 [concrete] // CHECK:STDOUT: %foo_double__carbon_thunk.type: type = fn_type @foo_double__carbon_thunk [concrete] // CHECK:STDOUT: %foo_double__carbon_thunk: %foo_double__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.type.cd5: type = fn_type @Float.as.Destroy.impl.Op, @Float.as.Destroy.impl(%int_64) [concrete] -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.b8c: %Float.as.Destroy.impl.Op.type.cd5 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -2330,8 +2314,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo_double.ref: %foo_double.type = name_ref foo_double, imports.%foo_double.decl [concrete = constants.%foo_double] // CHECK:STDOUT: %.loc8_31.1: ref %f64.d77 = temporary_storage -// CHECK:STDOUT: %addr.loc8_31.1: %ptr.bcc = addr_of %.loc8_31.1 -// CHECK:STDOUT: %foo_double__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_double__carbon_thunk.decl(%addr.loc8_31.1) +// CHECK:STDOUT: %addr: %ptr = addr_of %.loc8_31.1 +// CHECK:STDOUT: %foo_double__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_double__carbon_thunk.decl(%addr) // CHECK:STDOUT: %.loc8_31.2: init %f64.d77 = in_place_init %foo_double__carbon_thunk.call, %.loc8_31.1 // CHECK:STDOUT: %.loc8_10: type = splice_block %f64 [concrete = constants.%f64.d77] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] @@ -2340,11 +2324,6 @@ fn F() { // CHECK:STDOUT: %.loc8_31.3: %f64.d77 = value_of_initializer %.loc8_31.2 // CHECK:STDOUT: %.loc8_31.4: %f64.d77 = converted %.loc8_31.2, %.loc8_31.3 // CHECK:STDOUT: %x: %f64.d77 = bind_name x, %.loc8_31.4 -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.bound: = bound_method %.loc8_31.1, constants.%Float.as.Destroy.impl.Op.b8c -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_31.1, %Float.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_31.2: %ptr.bcc = addr_of %.loc8_31.1 -// CHECK:STDOUT: %Float.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_31.2) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/class.carbon b/toolchain/check/testdata/interop/cpp/function/class.carbon index 4bb0100e12a1..644563667d26 100644 --- a/toolchain/check/testdata/interop/cpp/function/class.carbon +++ b/toolchain/check/testdata/interop/cpp/function/class.carbon @@ -594,10 +594,10 @@ fn F() { // CHECK:STDOUT: %.loc8_14.3: ref %C = value_as_ref %.loc8_14.2 // CHECK:STDOUT: %addr.loc8_22: %ptr.d9e = addr_of %.loc8_14.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_12: %ptr.d9e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_12: %ptr.d9e = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -643,10 +643,10 @@ fn F() { // CHECK:STDOUT: %.loc24_14.1: ref %C = converted %.loc24_12.1, %.loc24_12.4 // CHECK:STDOUT: %.loc24_14.2: %C = bind_value %.loc24_14.1 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc24_14.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_12.2, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_12.4, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc24_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc24_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc24_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.d9e = addr_of %.loc24_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -813,10 +813,10 @@ fn F() { // CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.838 = addr_of %x.var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.dbb +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.dbb // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_12: %ptr.838 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_12: %ptr.838 = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -882,10 +882,10 @@ fn F() { // CHECK:STDOUT: %.loc8_17.3: ref %C = value_as_ref %.loc8_17.2 // CHECK:STDOUT: %addr.loc8_31: %ptr.c0c = addr_of %.loc8_17.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_31) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.2, constants.%T.as.Destroy.impl.Op.f48 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%T.as.Destroy.impl.Op.f48 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.c0c = addr_of %.loc8_15.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.c0c = addr_of %.loc8_15.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -962,10 +962,10 @@ fn F() { // CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.820 = addr_of %x.var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.362 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.362 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_12: %ptr.de2 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_12: %ptr.de2 = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1027,10 +1027,10 @@ fn F() { // CHECK:STDOUT: %.loc9_14.3: ref %C = value_as_ref %.loc9_14.2 // CHECK:STDOUT: %addr.loc9_22: %ptr.d9e = addr_of %.loc9_14.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc9_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.2, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.4, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc9_12: %ptr.d9e = addr_of %.loc9_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc9_12: %ptr.d9e = addr_of %.loc9_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc9_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1092,10 +1092,10 @@ fn F() { // CHECK:STDOUT: %C.ref.loc9: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %bar.ref: %C.bar.type = name_ref bar, imports.%C.bar.decl [concrete = constants.%C.bar] // CHECK:STDOUT: %C.bar.call: init %empty_tuple.type = call %bar.ref() -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_12: %ptr.d9e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_12: %ptr.d9e = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1206,10 +1206,10 @@ fn F() { // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_11.1) // CHECK:STDOUT: %.loc8_11.2: init %C = in_place_init %foo__carbon_thunk.call, %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.3: ref %C = temporary %.loc8_11.1, %.loc8_11.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11.2: %ptr.d9e = addr_of %.loc8_11.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11.2: %ptr.d9e = addr_of %.loc8_11.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_11.2) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/function/full_semir.carbon b/toolchain/check/testdata/interop/cpp/function/full_semir.carbon index 76d735636f83..a77a2b56c226 100644 --- a/toolchain/check/testdata/interop/cpp/function/full_semir.carbon +++ b/toolchain/check/testdata/interop/cpp/function/full_semir.carbon @@ -177,10 +177,10 @@ fn F() { // CHECK:STDOUT: %.loc7_13.4: ref %i16 = temporary %.loc7_13.3, %.loc7_13.2 // CHECK:STDOUT: %addr.loc7_19: %ptr.251 = addr_of %.loc7_13.4 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc7_19) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc7_13.3, constants.%Int.as.Destroy.impl.Op.536 +// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc7_13.4, constants.%Int.as.Destroy.impl.Op.536 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function constants.%Int.as.Destroy.impl.Op.536, @Int.as.Destroy.impl.Op(constants.%int_16) [concrete = constants.%Int.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc7_13.3: = bound_method %.loc7_13.3, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc7_13: %ptr.251 = addr_of %.loc7_13.3 +// CHECK:STDOUT: %bound_method.loc7_13.3: = bound_method %.loc7_13.4, %Int.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc7_13: %ptr.251 = addr_of %.loc7_13.4 // CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc7_13.3(%addr.loc7_13) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -293,20 +293,15 @@ fn F() { // CHECK:STDOUT: %pattern_type.2f8: type = pattern_type %i16 [concrete] // CHECK:STDOUT: %foo_short.type: type = fn_type @foo_short [concrete] // CHECK:STDOUT: %foo_short: %foo_short.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] -// CHECK:STDOUT: %pattern_type.54c: type = pattern_type %ptr.251 [concrete] +// CHECK:STDOUT: %ptr: type = ptr_type %i16 [concrete] +// CHECK:STDOUT: %pattern_type.54c: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %foo_short__carbon_thunk.type: type = fn_type @foo_short__carbon_thunk [concrete] // CHECK:STDOUT: %foo_short__carbon_thunk: %foo_short__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.613: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.536: %Int.as.Destroy.impl.Op.type.613 = struct_value () [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function %Int.as.Destroy.impl.Op.536, @Int.as.Destroy.impl.Op(%int_16) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .Destroy = %Core.Destroy // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -328,14 +323,13 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.54c = binding_pattern r#return [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.54c = value_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %return.param: %ptr.251 = value_param call_param0 -// CHECK:STDOUT: %.1: type = splice_block constants.%ptr.251 [concrete = constants.%ptr.251] { +// CHECK:STDOUT: %return.param: %ptr = value_param call_param0 +// CHECK:STDOUT: %.1: type = splice_block constants.%ptr [concrete = constants.%ptr] { // 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] // CHECK:STDOUT: } -// CHECK:STDOUT: %return: %ptr.251 = bind_name r#return, %return.param +// CHECK:STDOUT: %return: %ptr = bind_name r#return, %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -359,8 +353,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo_short.ref: %foo_short.type = name_ref foo_short, imports.%foo_short.decl [concrete = constants.%foo_short] // CHECK:STDOUT: %.loc7_30.1: ref %i16 = temporary_storage -// CHECK:STDOUT: %addr.loc7_30.1: %ptr.251 = addr_of %.loc7_30.1 -// CHECK:STDOUT: %foo_short__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_short__carbon_thunk.decl(%addr.loc7_30.1) +// CHECK:STDOUT: %addr: %ptr = addr_of %.loc7_30.1 +// CHECK:STDOUT: %foo_short__carbon_thunk.call: init %empty_tuple.type = call imports.%foo_short__carbon_thunk.decl(%addr) // CHECK:STDOUT: %.loc7_30.2: init %i16 = in_place_init %foo_short__carbon_thunk.call, %.loc7_30.1 // CHECK:STDOUT: %.loc7_10: type = splice_block %i16 [concrete = constants.%i16] { // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] @@ -369,15 +363,10 @@ fn F() { // CHECK:STDOUT: %.loc7_30.3: %i16 = value_of_initializer %.loc7_30.2 // CHECK:STDOUT: %.loc7_30.4: %i16 = converted %.loc7_30.2, %.loc7_30.3 // CHECK:STDOUT: %x: %i16 = bind_name x, %.loc7_30.4 -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc7_30.1, constants.%Int.as.Destroy.impl.Op.536 -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: = specific_function constants.%Int.as.Destroy.impl.Op.536, @Int.as.Destroy.impl.Op(constants.%int_16) [concrete = constants.%Int.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_30.1, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc7_30.2: %ptr.251 = addr_of %.loc7_30.1 -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc7_30.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @foo_short() -> %i16; // CHECK:STDOUT: -// CHECK:STDOUT: fn @foo_short__carbon_thunk(%return.param: %ptr.251); +// CHECK:STDOUT: fn @foo_short__carbon_thunk(%return.param: %ptr); // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/operators.carbon b/toolchain/check/testdata/interop/cpp/function/operators.carbon index cefa364419a7..7cca06abfd16 100644 --- a/toolchain/check/testdata/interop/cpp/function/operators.carbon +++ b/toolchain/check/testdata/interop/cpp/function/operators.carbon @@ -401,10 +401,10 @@ fn F() { // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c2: %C = bind_name c2, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_27.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_27.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -505,20 +505,20 @@ fn F() { // CHECK:STDOUT: %.loc10_22.3: ref %C = temporary %.loc10_22.1, %.loc10_22.2 // CHECK:STDOUT: %.loc10_22.4: %C = bind_value %.loc10_22.3 // CHECK:STDOUT: %c3: %C = bind_name c3, %.loc10_22.4 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %.loc10_22.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %.loc10_22.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %.loc10_22.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc10_22.4: %ptr.d9e = addr_of %.loc10_22.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %.loc10_22.3, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc10_22.4: %ptr.d9e = addr_of %.loc10_22.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10_22.4) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.3, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_27.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.3, %T.as.Destroy.impl.Op.specific_fn.3 +// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_27.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -659,30 +659,30 @@ fn F() { // CHECK:STDOUT: %.loc12_22.3: ref %C = temporary %.loc12_22.1, %.loc12_22.2 // CHECK:STDOUT: %.loc12_22.4: %C = bind_value %.loc12_22.3 // CHECK:STDOUT: %c5: %C = bind_name c5, %.loc12_22.4 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12: = bound_method %.loc12_22.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc12: = bound_method %.loc12_22.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc12: = bound_method %.loc12_22.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc12_22.4: %ptr.d9e = addr_of %.loc12_22.1 +// CHECK:STDOUT: %bound_method.loc12: = bound_method %.loc12_22.3, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc12_22.4: %ptr.d9e = addr_of %.loc12_22.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc12: init %empty_tuple.type = call %bound_method.loc12(%addr.loc12_22.4) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11: = bound_method %.loc11_22.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc11: = bound_method %.loc11_22.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc11: = bound_method %.loc11_22.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc11_22.4: %ptr.d9e = addr_of %.loc11_22.1 +// CHECK:STDOUT: %bound_method.loc11: = bound_method %.loc11_22.3, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc11_22.4: %ptr.d9e = addr_of %.loc11_22.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc11: init %empty_tuple.type = call %bound_method.loc11(%addr.loc11_22.4) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %.loc10_22.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10: = bound_method %.loc10_22.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10: = bound_method %.loc10_22.1, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc10_22.4: %ptr.d9e = addr_of %.loc10_22.1 +// CHECK:STDOUT: %bound_method.loc10: = bound_method %.loc10_22.3, %T.as.Destroy.impl.Op.specific_fn.3 +// CHECK:STDOUT: %addr.loc10_22.4: %ptr.d9e = addr_of %.loc10_22.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10_22.4) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.1, %T.as.Destroy.impl.Op.specific_fn.4 -// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.3, %T.as.Destroy.impl.Op.specific_fn.4 +// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_27.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn.5 -// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.3, %T.as.Destroy.impl.Op.specific_fn.5 +// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_27.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -766,15 +766,15 @@ fn F() { // CHECK:STDOUT: %C.ref.loc21: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c3: %C = bind_name c3, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.3, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_27.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.3, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_27.2) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -858,15 +858,15 @@ fn F() { // CHECK:STDOUT: %C.ref.loc14: type = name_ref C, imports.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c3: %C = bind_name c3, [concrete = ] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc9: = bound_method %.loc9_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.1 +// CHECK:STDOUT: %bound_method.loc9: = bound_method %.loc9_27.3, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc9_27.2: %ptr.d9e = addr_of %.loc9_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9_27.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.1, constants.%T.as.Destroy.impl.Op.21b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_27.3, constants.%T.as.Destroy.impl.Op.21b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.1 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_27.3, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_27.2: %ptr.d9e = addr_of %.loc8_27.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_27.2) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/function/pointer.carbon b/toolchain/check/testdata/interop/cpp/function/pointer.carbon index 37f502dc01b5..594de248e9e7 100644 --- a/toolchain/check/testdata/interop/cpp/function/pointer.carbon +++ b/toolchain/check/testdata/interop/cpp/function/pointer.carbon @@ -378,16 +378,11 @@ fn F() { // CHECK:STDOUT: %s.ref: ref %const = name_ref s, %s // CHECK:STDOUT: %addr.loc11: %ptr.ff5 = addr_of %s.ref // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%addr.loc11) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_3.1: = bound_method %.loc10_3, constants.%T.as.Destroy.impl.Op.af7 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.af7 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_3.1: = bound_method %.loc10_3, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc10_3.1: %ptr.ff5 = addr_of %.loc10_3 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_3.1: init %empty_tuple.type = call %bound_method.loc10_3.1(%addr.loc10_3.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc10_3.2: = bound_method %s.var, constants.%T.as.Destroy.impl.Op.af7 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc10_3.2: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc10_3.2: %ptr.ff5 = addr_of %s.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10_3.2: init %empty_tuple.type = call %bound_method.loc10_3.2(%addr.loc10_3.2) +// CHECK:STDOUT: %bound_method: = bound_method %s.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc10: %ptr.ff5 = addr_of %s.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc10) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/return.carbon b/toolchain/check/testdata/interop/cpp/function/return.carbon index ced88dfec4f6..71869443491b 100644 --- a/toolchain/check/testdata/interop/cpp/function/return.carbon +++ b/toolchain/check/testdata/interop/cpp/function/return.carbon @@ -49,13 +49,11 @@ fn F() { // CHECK:STDOUT: %IngestI32: %IngestI32.type = struct_value () [concrete] // CHECK:STDOUT: %foo1.type: type = fn_type @foo1 [concrete] // CHECK:STDOUT: %foo1: %foo1.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.251: type = ptr_type %i16 [concrete] +// CHECK:STDOUT: %ptr: type = ptr_type %i16 [concrete] // CHECK:STDOUT: %foo1__carbon_thunk.type: type = fn_type @foo1__carbon_thunk [concrete] // CHECK:STDOUT: %foo1__carbon_thunk: %foo1__carbon_thunk.type = struct_value () [concrete] // CHECK:STDOUT: %foo2.type: type = fn_type @foo2 [concrete] // CHECK:STDOUT: %foo2: %foo2.type = struct_value () [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.613: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_16) [concrete] -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.536: %Int.as.Destroy.impl.Op.type.613 = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -87,8 +85,8 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo1.ref: %foo1.type = name_ref foo1, imports.%foo1.decl [concrete = constants.%foo1] // CHECK:STDOUT: %.loc11_22.1: ref %i16 = temporary_storage -// CHECK:STDOUT: %addr.loc11_22.1: %ptr.251 = addr_of %.loc11_22.1 -// CHECK:STDOUT: %foo1__carbon_thunk.call: init %empty_tuple.type = call imports.%foo1__carbon_thunk.decl(%addr.loc11_22.1) +// CHECK:STDOUT: %addr: %ptr = addr_of %.loc11_22.1 +// CHECK:STDOUT: %foo1__carbon_thunk.call: init %empty_tuple.type = call imports.%foo1__carbon_thunk.decl(%addr) // CHECK:STDOUT: %.loc11_22.2: init %i16 = in_place_init %foo1__carbon_thunk.call, %.loc11_22.1 // CHECK:STDOUT: %.loc11_22.3: %i16 = value_of_initializer %.loc11_22.2 // CHECK:STDOUT: %.loc11_22.4: %i16 = converted %.loc11_22.2, %.loc11_22.3 @@ -100,11 +98,6 @@ fn F() { // CHECK:STDOUT: %.loc12_22.1: %i32 = value_of_initializer %foo2.call // CHECK:STDOUT: %.loc12_22.2: %i32 = converted %foo2.call, %.loc12_22.1 // CHECK:STDOUT: %IngestI32.call: init %empty_tuple.type = call %IngestI32.ref(%.loc12_22.2) -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: = bound_method %.loc11_22.1, constants.%Int.as.Destroy.impl.Op.536 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc11_22.1, %Int.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc11_22.2: %ptr.251 = addr_of %.loc11_22.1 -// CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc11_22.2) // 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 8b25322758ef..a16742fe8efb 100644 --- a/toolchain/check/testdata/interop/cpp/function/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/function/struct.carbon @@ -593,10 +593,10 @@ fn F() { // CHECK:STDOUT: %.loc8_14.3: ref %S = value_as_ref %.loc8_14.2 // CHECK:STDOUT: %addr.loc8_22: %ptr.5c7 = addr_of %.loc8_14.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_12: %ptr.5c7 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_12: %ptr.5c7 = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -642,10 +642,10 @@ fn F() { // CHECK:STDOUT: %.loc24_14.1: ref %S = converted %.loc24_12.1, %.loc24_12.4 // CHECK:STDOUT: %.loc24_14.2: %S = bind_value %.loc24_14.1 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call %foo.ref(%.loc24_14.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_12.2, constants.%T.as.Destroy.impl.Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc24_12.4, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc24_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc24_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc24_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.5c7 = addr_of %.loc24_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -812,10 +812,10 @@ fn F() { // CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.edf = addr_of %x.var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.9b3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.9b3 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_12: %ptr.edf = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_12: %ptr.edf = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -881,10 +881,10 @@ fn F() { // CHECK:STDOUT: %.loc8_17.3: ref %S = value_as_ref %.loc8_17.2 // CHECK:STDOUT: %addr.loc8_31: %ptr.887 = addr_of %.loc8_17.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_31) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.2, constants.%T.as.Destroy.impl.Op.463 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%T.as.Destroy.impl.Op.463 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.887 = addr_of %.loc8_15.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.887 = addr_of %.loc8_15.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -961,10 +961,10 @@ fn F() { // CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.820 = addr_of %x.var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.952 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.952 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_12: %ptr.149 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_12: %ptr.149 = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1026,10 +1026,10 @@ fn F() { // CHECK:STDOUT: %.loc9_14.3: ref %S = value_as_ref %.loc9_14.2 // CHECK:STDOUT: %addr.loc9_22: %ptr.5c7 = addr_of %.loc9_14.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc9_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.2, constants.%T.as.Destroy.impl.Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.4, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc9_12: %ptr.5c7 = addr_of %.loc9_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc9_12: %ptr.5c7 = addr_of %.loc9_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc9_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1091,10 +1091,10 @@ fn F() { // CHECK:STDOUT: %S.ref.loc9: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %bar.ref: %S.bar.type = name_ref bar, imports.%S.bar.decl [concrete = constants.%S.bar] // CHECK:STDOUT: %S.bar.call: init %empty_tuple.type = call %bar.ref() -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_12: %ptr.5c7 = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_12: %ptr.5c7 = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1205,10 +1205,10 @@ fn F() { // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_11.1) // CHECK:STDOUT: %.loc8_11.2: init %S = in_place_init %foo__carbon_thunk.call, %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.3: ref %S = temporary %.loc8_11.1, %.loc8_11.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.ab5 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.3, constants.%T.as.Destroy.impl.Op.ab5 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11.2: %ptr.5c7 = addr_of %.loc8_11.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11.2: %ptr.5c7 = addr_of %.loc8_11.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_11.2) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/function/union.carbon b/toolchain/check/testdata/interop/cpp/function/union.carbon index 5d0a4b8026a8..1158443a329e 100644 --- a/toolchain/check/testdata/interop/cpp/function/union.carbon +++ b/toolchain/check/testdata/interop/cpp/function/union.carbon @@ -590,10 +590,10 @@ fn F() { // CHECK:STDOUT: %.loc8_14.3: ref %U = value_as_ref %.loc8_14.2 // CHECK:STDOUT: %addr.loc8_22: %ptr.86f = addr_of %.loc8_14.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_12: %ptr.86f = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_12: %ptr.86f = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -760,10 +760,10 @@ fn F() { // CHECK:STDOUT: %bound_method.loc10: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc10: %ptr.87e = addr_of %x.var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %bound_method.loc10(%addr.loc10) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.d5d +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.d5d // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_12: %ptr.87e = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_12: %ptr.87e = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -829,10 +829,10 @@ fn F() { // CHECK:STDOUT: %.loc8_17.3: ref %U = value_as_ref %.loc8_17.2 // CHECK:STDOUT: %addr.loc8_31: %ptr.8c1 = addr_of %.loc8_17.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_31) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.2, constants.%T.as.Destroy.impl.Op.28c +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_15.4, constants.%T.as.Destroy.impl.Op.28c // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_15: %ptr.8c1 = addr_of %.loc8_15.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_15.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_15: %ptr.8c1 = addr_of %.loc8_15.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_15) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -909,10 +909,10 @@ fn F() { // CHECK:STDOUT: %bound_method.loc9: = bound_method %x.var, %T.as.Destroy.impl.Op.specific_fn.1 // CHECK:STDOUT: %addr.loc9: %ptr.820 = addr_of %x.var // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc9: init %empty_tuple.type = call %bound_method.loc9(%addr.loc9) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.f3b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.f3b // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_12: %ptr.a6c = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_12: %ptr.a6c = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -974,10 +974,10 @@ fn F() { // CHECK:STDOUT: %.loc9_14.3: ref %U = value_as_ref %.loc9_14.2 // CHECK:STDOUT: %addr.loc9_22: %ptr.86f = addr_of %.loc9_14.3 // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc9_22) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.2, constants.%T.as.Destroy.impl.Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc9_12.4, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc9_12: %ptr.86f = addr_of %.loc9_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc9_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc9_12: %ptr.86f = addr_of %.loc9_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc9_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1039,10 +1039,10 @@ fn F() { // CHECK:STDOUT: %U.ref.loc9: type = name_ref U, imports.%U.decl [concrete = constants.%U] // CHECK:STDOUT: %bar.ref: %U.bar.type = name_ref bar, imports.%U.bar.decl [concrete = constants.%U.bar] // CHECK:STDOUT: %U.bar.call: init %empty_tuple.type = call %bar.ref() -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.2, constants.%T.as.Destroy.impl.Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_12.4, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.2, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_12: %ptr.86f = addr_of %.loc8_12.2 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_12.4, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_12: %ptr.86f = addr_of %.loc8_12.4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_12) // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1153,10 +1153,10 @@ fn F() { // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_11.1) // CHECK:STDOUT: %.loc8_11.2: init %U = in_place_init %foo__carbon_thunk.call, %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.3: ref %U = temporary %.loc8_11.1, %.loc8_11.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.2fa +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.3, constants.%T.as.Destroy.impl.Op.2fa // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11.2: %ptr.86f = addr_of %.loc8_11.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11.2: %ptr.86f = addr_of %.loc8_11.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_11.2) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/namespace.carbon b/toolchain/check/testdata/interop/cpp/namespace.carbon index 2dd6f26930aa..330d474be8c3 100644 --- a/toolchain/check/testdata/interop/cpp/namespace.carbon +++ b/toolchain/check/testdata/interop/cpp/namespace.carbon @@ -387,10 +387,10 @@ fn Use(y: Cpp.Y) -> i32 { // CHECK:STDOUT: %foo__carbon_thunk.call: init %empty_tuple.type = call imports.%foo__carbon_thunk.decl(%addr.loc8_11.1) // CHECK:STDOUT: %.loc8_11.2: init %X = in_place_init %foo__carbon_thunk.call, %.loc8_11.1 // CHECK:STDOUT: %.loc8_11.3: ref %X = temporary %.loc8_11.1, %.loc8_11.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.1, constants.%T.as.Destroy.impl.Op.cbf +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc8_11.3, constants.%T.as.Destroy.impl.Op.cbf // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr.loc8_11.2: %ptr.13d = addr_of %.loc8_11.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc8_11.3, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr.loc8_11.2: %ptr.13d = addr_of %.loc8_11.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc8_11.2) // CHECK:STDOUT: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon b/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon index 8b2cfe8fd71f..545cfa583582 100644 --- a/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon +++ b/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon @@ -81,8 +81,6 @@ fn G() -> str { // CHECK:STDOUT: %Produce: %Produce.type = struct_value () [concrete] // CHECK:STDOUT: %Produce__carbon_thunk.type: type = fn_type @Produce__carbon_thunk [concrete] // CHECK:STDOUT: %Produce__carbon_thunk: %Produce__carbon_thunk.type = struct_value () [concrete] -// CHECK:STDOUT: %String.as.Destroy.impl.Op.type: type = fn_type @String.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %String.as.Destroy.impl.Op: %String.as.Destroy.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -142,12 +140,9 @@ fn G() -> str { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Produce.ref: %Produce.type = name_ref Produce, imports.%Produce.decl [concrete = constants.%Produce] // CHECK:STDOUT: %.loc13: ref %String = splice_block %return {} -// CHECK:STDOUT: %addr.loc14: %ptr.85f = addr_of %.loc13 -// CHECK:STDOUT: %Produce__carbon_thunk.call: init %empty_tuple.type = call imports.%Produce__carbon_thunk.decl(%addr.loc14) +// CHECK:STDOUT: %addr: %ptr.85f = addr_of %.loc13 +// CHECK:STDOUT: %Produce__carbon_thunk.call: init %empty_tuple.type = call imports.%Produce__carbon_thunk.decl(%addr) // CHECK:STDOUT: %.loc14: init %String = in_place_init %Produce__carbon_thunk.call, %.loc13 -// CHECK:STDOUT: %String.as.Destroy.impl.Op.bound: = bound_method %.loc13, constants.%String.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13: %ptr.85f = addr_of %.loc13 -// CHECK:STDOUT: %String.as.Destroy.impl.Op.call: init %empty_tuple.type = call %String.as.Destroy.impl.Op.bound(%addr.loc13) // CHECK:STDOUT: return %.loc14 to %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 b7726cb87727..583f3c991a6a 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -313,14 +313,11 @@ fn Run() { // 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: %A.as.Destroy.impl.Op.bound.loc13: = bound_method %.loc13, constants.%A.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13: %ptr.07e = addr_of %.loc13 -// CHECK:STDOUT: %A.as.Destroy.impl.Op.call.loc13: init %empty_tuple.type = call %A.as.Destroy.impl.Op.bound.loc13(%addr.loc13) // CHECK:STDOUT: %A.as.Destroy.impl.Op.bound.loc10: = bound_method %a.var, constants.%A.as.Destroy.impl.Op // CHECK:STDOUT: %addr.loc10: %ptr.07e = addr_of %a.var // CHECK:STDOUT: %A.as.Destroy.impl.Op.call.loc10: init %empty_tuple.type = call %A.as.Destroy.impl.Op.bound.loc10(%addr.loc10) -// CHECK:STDOUT: %A.as.Destroy.impl.Op.bound.loc7: = bound_method %.loc7_11.1, constants.%A.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7: %ptr.07e = addr_of %.loc7_11.1 +// CHECK:STDOUT: %A.as.Destroy.impl.Op.bound.loc7: = bound_method %.loc7_11.2, constants.%A.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc7: %ptr.07e = addr_of %.loc7_11.2 // CHECK:STDOUT: %A.as.Destroy.impl.Op.call.loc7: init %empty_tuple.type = call %A.as.Destroy.impl.Op.bound.loc7(%addr.loc7) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index b1f1d25ff695..75e8998fb4e2 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.AddWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.AddWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index f513734a8581..6114a310ab59 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitAndWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.BitAndWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index d631b5ae96f8..4f5ca0e4d901 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -53,7 +53,6 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitComplement.impl.Op.call: init %C = call %bound_method(%a.ref) to %.loc27 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.BitComplement.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index 2762913817e6..f5f6bcff80af 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitOrWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.BitOrWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index dad2c9b0fc74..05ae44b9dcec 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitXorWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.BitXorWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index f7e4a904670f..c42fdec852d2 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.DivWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.DivWith.impl.Op.call to %return // 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 e88d34cdd671..ed4c1f74ea8c 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -51,7 +51,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.edd: = impl_witness @C.%Destroy.impl_witness_table [concrete] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness @C.%Destroy.impl_witness_table [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete] @@ -208,7 +208,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {} // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.edd] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: @@ -228,11 +228,8 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%C.as.Inc.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc34: ref %C = temporary_storage -// CHECK:STDOUT: %addr.loc34_5.1: %ptr.019 = addr_of %.loc34 -// CHECK:STDOUT: %C.as.Inc.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc34_5.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc34, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc34_5.2: %ptr.019 = addr_of %.loc34 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc34_5.2) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc34 +// CHECK:STDOUT: %C.as.Inc.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -243,11 +240,8 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%C.as.AddAssignWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc45: ref %C = temporary_storage -// CHECK:STDOUT: %addr.loc45_3.1: %ptr.019 = addr_of %.loc45 -// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr.loc45_3.1, %b.ref) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: = bound_method %.loc45, constants.%C.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc45_3.2: %ptr.019 = addr_of %.loc45 -// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc45_3.2) +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc45 +// CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref) // 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 e07a8244e762..fb16b6d42e56 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -325,11 +325,11 @@ fn Test() { // CHECK:STDOUT: %.loc35_20.5: ref %X = temporary %.loc35_20.1, %.loc35_20.4 // CHECK:STDOUT: %.loc35_20.6: %X = bind_value %.loc35_20.5 // CHECK:STDOUT: %Sink_X.call: init %empty_tuple.type = call %Sink_X.ref(%.loc35_20.6) -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc35: = bound_method %.loc35_20.1, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc35: %ptr.d17 = addr_of %.loc35_20.1 +// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc35: = bound_method %.loc35_20.5, constants.%X.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc35: %ptr.d17 = addr_of %.loc35_20.5 // CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc35: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc35(%addr.loc35) -// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_20.1, constants.%X.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc34: %ptr.d17 = addr_of %.loc34_20.1 +// CHECK:STDOUT: %X.as.Destroy.impl.Op.bound.loc34: = bound_method %.loc34_20.2, constants.%X.as.Destroy.impl.Op +// CHECK:STDOUT: %addr.loc34: %ptr.d17 = addr_of %.loc34_20.2 // CHECK:STDOUT: %X.as.Destroy.impl.Op.call.loc34: init %empty_tuple.type = call %X.as.Destroy.impl.Op.bound.loc34(%addr.loc34) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index 2c319d73624f..fcd92265ae60 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.LeftShiftWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index cdce4ac62e07..bf7de0a80fa9 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.ModWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.ModWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index 479e5adf4e54..865d259e8fb0 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.MulWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.MulWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index 66ed8539749e..ceab1086cdf9 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -53,7 +53,6 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.Negate.impl.Op.call: init %C = call %bound_method(%a.ref) to %.loc27 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.Negate.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/right_shift.carbon b/toolchain/check/testdata/operators/overloaded/right_shift.carbon index 57932132d02f..2803e15c6a46 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.RightShiftWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index f62cda203e52..a7a05edc6bb2 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -72,7 +72,6 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.SubWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 -// CHECK:STDOUT: // CHECK:STDOUT: return %C.as.SubWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index d8b96a778a5c..77f706888cb2 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -53,7 +53,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.Self.644: type = bind_symbolic_name .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %N.51e: %i32 = bind_symbolic_name N, 0 [symbolic] @@ -663,9 +662,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc8: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc8 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc8, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc8 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -674,9 +670,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc9: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc9 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc9, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc9 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -685,9 +678,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc10: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc10 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc10, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc10 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -696,9 +686,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc11: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc11 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc11, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc11 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -707,9 +694,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc12: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc12 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc12, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc12 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -718,9 +702,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc13: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc13 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc13, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc13 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -729,9 +710,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc14: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc14 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc14, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc14 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -740,9 +718,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc15: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc15 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound: = bound_method %.loc15, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr: %ptr.19c = addr_of %.loc15 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound(%addr) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -879,10 +854,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.a9c: type = fn_type_with_self_type %ImplicitAs.Convert.type.334, %ImplicitAs.facet.014 [concrete] // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.971: type = fn_type @C.as.ImplicitAs.impl.Convert.1 [concrete] // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.bf9: %C.as.ImplicitAs.impl.Convert.type.971 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.impl_witness.d5a: = impl_witness imports.%Destroy.impl_witness_table.787 [concrete] -// CHECK:STDOUT: %D.as.Destroy.impl.Op.type: type = fn_type @D.as.Destroy.impl.Op [concrete] -// CHECK:STDOUT: %D.as.Destroy.impl.Op: %D.as.Destroy.impl.Op.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.f29: type = ptr_type %D [concrete] // CHECK:STDOUT: %Destroy.impl_witness.c5e: = impl_witness imports.%Destroy.impl_witness_table.bb0, @C.as.Destroy.impl(%int_0.6a9) [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.type.369: type = fn_type @C.as.Destroy.impl.Op, @C.as.Destroy.impl(%int_0.6a9) [concrete] // CHECK:STDOUT: %C.as.Destroy.impl.Op.e1e: %C.as.Destroy.impl.Op.type.369 = struct_value () [concrete] @@ -999,7 +970,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs // CHECK:STDOUT: .Destroy = %Core.Destroy @@ -1032,7 +1003,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.import_ref.20a: @C.as.Destroy.impl.%C.as.Destroy.impl.Op.type (%C.as.Destroy.impl.Op.type.564) = import_ref P//library, loc4_18, loaded [symbolic = @C.as.Destroy.impl.%C.as.Destroy.impl.Op (constants.%C.as.Destroy.impl.Op.e88)] // CHECK:STDOUT: %Destroy.impl_witness_table.bb0 = impl_witness_table (%P.import_ref.20a), @C.as.Destroy.impl [concrete] // CHECK:STDOUT: %P.import_ref.1b7f13.3: %i32 = import_ref P//library, loc4_9, loaded [symbolic = @C.%N (constants.%N.51e)] -// CHECK:STDOUT: %P.import_ref.7ba: = import_ref P//library, loc5_9, loaded [concrete = constants.%Destroy.impl_witness.d5a] +// CHECK:STDOUT: %P.import_ref.0c3 = import_ref P//library, loc5_9, unloaded // CHECK:STDOUT: %P.import_ref.130: type = import_ref P//library, loc5_9, loaded [concrete = constants.%D] // CHECK:STDOUT: %P.import_ref.cb9298.2: type = import_ref P//library, inst56 [no loc], loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %P.import_ref.708: = import_ref P//library, loc8_33, loaded [concrete = constants.%ImplicitAs.impl_witness.f53] @@ -1062,8 +1033,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.import_ref.e36: %C.as.ImplicitAs.impl.Convert.type.971 = import_ref P//library, loc8_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.bf9] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.f4b = impl_witness_table (%P.import_ref.e36), @C.as.ImplicitAs.impl.284 [concrete] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] -// CHECK:STDOUT: %P.import_ref.8ca: %D.as.Destroy.impl.Op.type = import_ref P//library, loc5_9, loaded [concrete = constants.%D.as.Destroy.impl.Op] -// CHECK:STDOUT: %Destroy.impl_witness_table.787 = impl_witness_table (%P.import_ref.8ca), @D.as.Destroy.impl [concrete] // CHECK:STDOUT: %P.import_ref.38e: %C.as.ImplicitAs.impl.Convert.type.bdd = import_ref P//library, loc9_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.c82] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.297 = impl_witness_table (%P.import_ref.38e), @C.as.ImplicitAs.impl.628 [concrete] // CHECK:STDOUT: %P.import_ref.5ab: %C.as.ImplicitAs.impl.Convert.type.4c1 = import_ref P//library, loc10_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.08c] @@ -1083,7 +1052,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core.ece +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .P = imports.%P // CHECK:STDOUT: .F0 = %F0.decl // CHECK:STDOUT: } @@ -1125,7 +1094,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: impl @D.as.Destroy.impl: imports.%P.import_ref.130 as imports.%P.import_ref.cb9298.2 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%P.import_ref.7ba +// CHECK:STDOUT: witness = imports.%P.import_ref.0c3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @C.as.ImplicitAs.impl.284: imports.%P.import_ref.d2c as imports.%P.import_ref.b769fa.1 [from "library.carbon"] { @@ -1218,13 +1187,10 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc7_26.2: %C.b00 = bind_value %.loc7_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc7: init %D = call %bound_method.loc7_35(%.loc7_26.2) to %.loc7_35.1 // CHECK:STDOUT: %.loc7_35.2: init %D = converted %.loc7_26.1, %C.as.ImplicitAs.impl.Convert.call.loc7 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.1: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.1: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.1(%addr.loc7_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.1: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.1: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.1: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc7_24.1: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.1: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc7_24.1: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.1: init %empty_tuple.type = call %bound_method.loc7_24.1(%addr.loc7_24.1) // CHECK:STDOUT: return %.loc7_35.2 to %return // CHECK:STDOUT: @@ -1255,21 +1221,15 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc8_26.2: %C.674 = bind_value %.loc8_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc8: init %D = call %bound_method.loc8_35(%.loc8_26.2) to %.loc8_35.1 // CHECK:STDOUT: %.loc8_35.2: init %D = converted %.loc8_26.1, %C.as.ImplicitAs.impl.Convert.call.loc8 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.1: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.1: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.1(%addr.loc8_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.1: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.1: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.1: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_24.1: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.1: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_24.1: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.1: init %empty_tuple.type = call %bound_method.loc8_24.1(%addr.loc8_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.2: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.2: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.2(%addr.loc7_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.2: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.2: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.2: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc7_24.2: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.2: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.3 +// CHECK:STDOUT: %addr.loc7_24.2: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.2: init %empty_tuple.type = call %bound_method.loc7_24.2(%addr.loc7_24.2) // CHECK:STDOUT: return %.loc8_35.2 to %return // CHECK:STDOUT: @@ -1300,29 +1260,20 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc9_26.2: %C.681 = bind_value %.loc9_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc9: init %D = call %bound_method.loc9_35(%.loc9_26.2) to %.loc9_35.1 // CHECK:STDOUT: %.loc9_35.2: init %D = converted %.loc9_26.1, %C.as.ImplicitAs.impl.Convert.call.loc9 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.1: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.1: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.1(%addr.loc9_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.1: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.1: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.4: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.1: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.4 -// CHECK:STDOUT: %addr.loc9_24.1: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.1: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.4 +// CHECK:STDOUT: %addr.loc9_24.1: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.1: init %empty_tuple.type = call %bound_method.loc9_24.1(%addr.loc9_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.2: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.2: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.2(%addr.loc8_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.2: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.2: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.5: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.2: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.5 -// CHECK:STDOUT: %addr.loc8_24.2: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.2: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.5 +// CHECK:STDOUT: %addr.loc8_24.2: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.2: init %empty_tuple.type = call %bound_method.loc8_24.2(%addr.loc8_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.3: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.3: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.3(%addr.loc7_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.3: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.3: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.6: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.3: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.6 -// CHECK:STDOUT: %addr.loc7_24.3: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.3: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.6 +// CHECK:STDOUT: %addr.loc7_24.3: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.3: init %empty_tuple.type = call %bound_method.loc7_24.3(%addr.loc7_24.3) // CHECK:STDOUT: return %.loc9_35.2 to %return // CHECK:STDOUT: @@ -1353,37 +1304,25 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc10_26.2: %C.7ac = bind_value %.loc10_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc10: init %D = call %bound_method.loc10_35(%.loc10_26.2) to %.loc10_35.1 // CHECK:STDOUT: %.loc10_35.2: init %D = converted %.loc10_26.1, %C.as.ImplicitAs.impl.Convert.call.loc10 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc10_35.1: = bound_method %.loc10_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10_35.1: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc10_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc10_35.1(%addr.loc10_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.1: = bound_method %.loc10_24.2, constants.%C.as.Destroy.impl.Op.135 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.1: = bound_method %.loc10_24.4, constants.%C.as.Destroy.impl.Op.135 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.7: = specific_function constants.%C.as.Destroy.impl.Op.135, @C.as.Destroy.impl.Op(constants.%int_3.822) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.111] -// CHECK:STDOUT: %bound_method.loc10_24.1: = bound_method %.loc10_24.2, %C.as.Destroy.impl.Op.specific_fn.7 -// CHECK:STDOUT: %addr.loc10_24.1: %ptr.2b1 = addr_of %.loc10_24.2 +// CHECK:STDOUT: %bound_method.loc10_24.1: = bound_method %.loc10_24.4, %C.as.Destroy.impl.Op.specific_fn.7 +// CHECK:STDOUT: %addr.loc10_24.1: %ptr.2b1 = addr_of %.loc10_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc10_24.1: init %empty_tuple.type = call %bound_method.loc10_24.1(%addr.loc10_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.2: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.2: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.2(%addr.loc9_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.2: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.2: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.8: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.2: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.8 -// CHECK:STDOUT: %addr.loc9_24.2: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.2: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.8 +// CHECK:STDOUT: %addr.loc9_24.2: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.2: init %empty_tuple.type = call %bound_method.loc9_24.2(%addr.loc9_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.3: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.3: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.3(%addr.loc8_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.3: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.3: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.9: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.3: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.9 -// CHECK:STDOUT: %addr.loc8_24.3: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.3: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.9 +// CHECK:STDOUT: %addr.loc8_24.3: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.3: init %empty_tuple.type = call %bound_method.loc8_24.3(%addr.loc8_24.3) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.4: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.4: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.4: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.4(%addr.loc7_35.4) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.4: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.4: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.10: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.4: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.10 -// CHECK:STDOUT: %addr.loc7_24.4: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.4: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.10 +// CHECK:STDOUT: %addr.loc7_24.4: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.4: init %empty_tuple.type = call %bound_method.loc7_24.4(%addr.loc7_24.4) // CHECK:STDOUT: return %.loc10_35.2 to %return // CHECK:STDOUT: @@ -1414,45 +1353,30 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc11_26.2: %C.89d = bind_value %.loc11_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc11: init %D = call %bound_method.loc11_35(%.loc11_26.2) to %.loc11_35.1 // CHECK:STDOUT: %.loc11_35.2: init %D = converted %.loc11_26.1, %C.as.ImplicitAs.impl.Convert.call.loc11 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc11_35.1: = bound_method %.loc11_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc11_35.1: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc11_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc11_35.1(%addr.loc11_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.1: = bound_method %.loc11_24.2, constants.%C.as.Destroy.impl.Op.a34 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.1: = bound_method %.loc11_24.4, constants.%C.as.Destroy.impl.Op.a34 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.11: = specific_function constants.%C.as.Destroy.impl.Op.a34, @C.as.Destroy.impl.Op(constants.%int_4.940) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.1d2] -// CHECK:STDOUT: %bound_method.loc11_24.1: = bound_method %.loc11_24.2, %C.as.Destroy.impl.Op.specific_fn.11 -// CHECK:STDOUT: %addr.loc11_24.1: %ptr.c28b = addr_of %.loc11_24.2 +// CHECK:STDOUT: %bound_method.loc11_24.1: = bound_method %.loc11_24.4, %C.as.Destroy.impl.Op.specific_fn.11 +// CHECK:STDOUT: %addr.loc11_24.1: %ptr.c28b = addr_of %.loc11_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc11_24.1: init %empty_tuple.type = call %bound_method.loc11_24.1(%addr.loc11_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc10_35.2: = bound_method %.loc10_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10_35.2: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc10_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc10_35.2(%addr.loc10_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.2: = bound_method %.loc10_24.2, constants.%C.as.Destroy.impl.Op.135 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.2: = bound_method %.loc10_24.4, constants.%C.as.Destroy.impl.Op.135 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.12: = specific_function constants.%C.as.Destroy.impl.Op.135, @C.as.Destroy.impl.Op(constants.%int_3.822) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.111] -// CHECK:STDOUT: %bound_method.loc10_24.2: = bound_method %.loc10_24.2, %C.as.Destroy.impl.Op.specific_fn.12 -// CHECK:STDOUT: %addr.loc10_24.2: %ptr.2b1 = addr_of %.loc10_24.2 +// CHECK:STDOUT: %bound_method.loc10_24.2: = bound_method %.loc10_24.4, %C.as.Destroy.impl.Op.specific_fn.12 +// CHECK:STDOUT: %addr.loc10_24.2: %ptr.2b1 = addr_of %.loc10_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc10_24.2: init %empty_tuple.type = call %bound_method.loc10_24.2(%addr.loc10_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.3: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.3: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.3(%addr.loc9_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.3: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.3: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.13: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.3: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.13 -// CHECK:STDOUT: %addr.loc9_24.3: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.3: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.13 +// CHECK:STDOUT: %addr.loc9_24.3: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.3: init %empty_tuple.type = call %bound_method.loc9_24.3(%addr.loc9_24.3) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.4: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.4: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.4: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.4(%addr.loc8_35.4) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.4: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.4: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.14: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.4: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.14 -// CHECK:STDOUT: %addr.loc8_24.4: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.4: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.14 +// CHECK:STDOUT: %addr.loc8_24.4: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.4: init %empty_tuple.type = call %bound_method.loc8_24.4(%addr.loc8_24.4) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.5: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.5: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.5: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.5(%addr.loc7_35.5) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.5: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.5: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.15: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.5: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.15 -// CHECK:STDOUT: %addr.loc7_24.5: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.5: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.15 +// CHECK:STDOUT: %addr.loc7_24.5: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.5: init %empty_tuple.type = call %bound_method.loc7_24.5(%addr.loc7_24.5) // CHECK:STDOUT: return %.loc11_35.2 to %return // CHECK:STDOUT: @@ -1483,53 +1407,35 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc12_26.2: %C.f0a = bind_value %.loc12_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc12: init %D = call %bound_method.loc12_35(%.loc12_26.2) to %.loc12_35.1 // CHECK:STDOUT: %.loc12_35.2: init %D = converted %.loc12_26.1, %C.as.ImplicitAs.impl.Convert.call.loc12 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc12_35.1: = bound_method %.loc12_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_35.1: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc12_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc12_35.1(%addr.loc12_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.1: = bound_method %.loc12_24.2, constants.%C.as.Destroy.impl.Op.dab +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.1: = bound_method %.loc12_24.4, constants.%C.as.Destroy.impl.Op.dab // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.16: = specific_function constants.%C.as.Destroy.impl.Op.dab, @C.as.Destroy.impl.Op(constants.%int_5.0f6) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.89c] -// CHECK:STDOUT: %bound_method.loc12_24.1: = bound_method %.loc12_24.2, %C.as.Destroy.impl.Op.specific_fn.16 -// CHECK:STDOUT: %addr.loc12_24.1: %ptr.24c = addr_of %.loc12_24.2 +// CHECK:STDOUT: %bound_method.loc12_24.1: = bound_method %.loc12_24.4, %C.as.Destroy.impl.Op.specific_fn.16 +// CHECK:STDOUT: %addr.loc12_24.1: %ptr.24c = addr_of %.loc12_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc12_24.1: init %empty_tuple.type = call %bound_method.loc12_24.1(%addr.loc12_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc11_35.2: = bound_method %.loc11_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc11_35.2: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc11_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc11_35.2(%addr.loc11_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.2: = bound_method %.loc11_24.2, constants.%C.as.Destroy.impl.Op.a34 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.2: = bound_method %.loc11_24.4, constants.%C.as.Destroy.impl.Op.a34 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.17: = specific_function constants.%C.as.Destroy.impl.Op.a34, @C.as.Destroy.impl.Op(constants.%int_4.940) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.1d2] -// CHECK:STDOUT: %bound_method.loc11_24.2: = bound_method %.loc11_24.2, %C.as.Destroy.impl.Op.specific_fn.17 -// CHECK:STDOUT: %addr.loc11_24.2: %ptr.c28b = addr_of %.loc11_24.2 +// CHECK:STDOUT: %bound_method.loc11_24.2: = bound_method %.loc11_24.4, %C.as.Destroy.impl.Op.specific_fn.17 +// CHECK:STDOUT: %addr.loc11_24.2: %ptr.c28b = addr_of %.loc11_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc11_24.2: init %empty_tuple.type = call %bound_method.loc11_24.2(%addr.loc11_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc10_35.3: = bound_method %.loc10_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10_35.3: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc10_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc10_35.3(%addr.loc10_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.3: = bound_method %.loc10_24.2, constants.%C.as.Destroy.impl.Op.135 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.3: = bound_method %.loc10_24.4, constants.%C.as.Destroy.impl.Op.135 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.18: = specific_function constants.%C.as.Destroy.impl.Op.135, @C.as.Destroy.impl.Op(constants.%int_3.822) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.111] -// CHECK:STDOUT: %bound_method.loc10_24.3: = bound_method %.loc10_24.2, %C.as.Destroy.impl.Op.specific_fn.18 -// CHECK:STDOUT: %addr.loc10_24.3: %ptr.2b1 = addr_of %.loc10_24.2 +// CHECK:STDOUT: %bound_method.loc10_24.3: = bound_method %.loc10_24.4, %C.as.Destroy.impl.Op.specific_fn.18 +// CHECK:STDOUT: %addr.loc10_24.3: %ptr.2b1 = addr_of %.loc10_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc10_24.3: init %empty_tuple.type = call %bound_method.loc10_24.3(%addr.loc10_24.3) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.4: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.4: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.4: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.4(%addr.loc9_35.4) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.4: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.4: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.19: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.4: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.19 -// CHECK:STDOUT: %addr.loc9_24.4: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.4: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.19 +// CHECK:STDOUT: %addr.loc9_24.4: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.4: init %empty_tuple.type = call %bound_method.loc9_24.4(%addr.loc9_24.4) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.5: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.5: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.5: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.5(%addr.loc8_35.5) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.5: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.5: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.20: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.5: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.20 -// CHECK:STDOUT: %addr.loc8_24.5: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.5: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.20 +// CHECK:STDOUT: %addr.loc8_24.5: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.5: init %empty_tuple.type = call %bound_method.loc8_24.5(%addr.loc8_24.5) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.6: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.6: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.6: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.6(%addr.loc7_35.6) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.6: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.6: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.21: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.6: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.21 -// CHECK:STDOUT: %addr.loc7_24.6: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.6: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.21 +// CHECK:STDOUT: %addr.loc7_24.6: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.6: init %empty_tuple.type = call %bound_method.loc7_24.6(%addr.loc7_24.6) // CHECK:STDOUT: return %.loc12_35.2 to %return // CHECK:STDOUT: @@ -1560,61 +1466,40 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc13_26.2: %C.c60 = bind_value %.loc13_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc13: init %D = call %bound_method.loc13_35(%.loc13_26.2) to %.loc13_35.1 // CHECK:STDOUT: %.loc13_35.2: init %D = converted %.loc13_26.1, %C.as.ImplicitAs.impl.Convert.call.loc13 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc13_35.1: = bound_method %.loc13_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_35.1: %ptr.f29 = addr_of %.loc13_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc13_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc13_35.1(%addr.loc13_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc13_24.1: = bound_method %.loc13_24.2, constants.%C.as.Destroy.impl.Op.326 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc13_24.1: = bound_method %.loc13_24.4, constants.%C.as.Destroy.impl.Op.326 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.22: = specific_function constants.%C.as.Destroy.impl.Op.326, @C.as.Destroy.impl.Op(constants.%int_6.e56) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.e3f] -// CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %.loc13_24.2, %C.as.Destroy.impl.Op.specific_fn.22 -// CHECK:STDOUT: %addr.loc13_24.1: %ptr.b5e = addr_of %.loc13_24.2 +// CHECK:STDOUT: %bound_method.loc13_24.1: = bound_method %.loc13_24.4, %C.as.Destroy.impl.Op.specific_fn.22 +// CHECK:STDOUT: %addr.loc13_24.1: %ptr.b5e = addr_of %.loc13_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc13_24.1: init %empty_tuple.type = call %bound_method.loc13_24.1(%addr.loc13_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc12_35.2: = bound_method %.loc12_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_35.2: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc12_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc12_35.2(%addr.loc12_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.2: = bound_method %.loc12_24.2, constants.%C.as.Destroy.impl.Op.dab +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.2: = bound_method %.loc12_24.4, constants.%C.as.Destroy.impl.Op.dab // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.23: = specific_function constants.%C.as.Destroy.impl.Op.dab, @C.as.Destroy.impl.Op(constants.%int_5.0f6) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.89c] -// CHECK:STDOUT: %bound_method.loc12_24.2: = bound_method %.loc12_24.2, %C.as.Destroy.impl.Op.specific_fn.23 -// CHECK:STDOUT: %addr.loc12_24.2: %ptr.24c = addr_of %.loc12_24.2 +// CHECK:STDOUT: %bound_method.loc12_24.2: = bound_method %.loc12_24.4, %C.as.Destroy.impl.Op.specific_fn.23 +// CHECK:STDOUT: %addr.loc12_24.2: %ptr.24c = addr_of %.loc12_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc12_24.2: init %empty_tuple.type = call %bound_method.loc12_24.2(%addr.loc12_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc11_35.3: = bound_method %.loc11_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc11_35.3: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc11_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc11_35.3(%addr.loc11_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.3: = bound_method %.loc11_24.2, constants.%C.as.Destroy.impl.Op.a34 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.3: = bound_method %.loc11_24.4, constants.%C.as.Destroy.impl.Op.a34 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.24: = specific_function constants.%C.as.Destroy.impl.Op.a34, @C.as.Destroy.impl.Op(constants.%int_4.940) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.1d2] -// CHECK:STDOUT: %bound_method.loc11_24.3: = bound_method %.loc11_24.2, %C.as.Destroy.impl.Op.specific_fn.24 -// CHECK:STDOUT: %addr.loc11_24.3: %ptr.c28b = addr_of %.loc11_24.2 +// CHECK:STDOUT: %bound_method.loc11_24.3: = bound_method %.loc11_24.4, %C.as.Destroy.impl.Op.specific_fn.24 +// CHECK:STDOUT: %addr.loc11_24.3: %ptr.c28b = addr_of %.loc11_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc11_24.3: init %empty_tuple.type = call %bound_method.loc11_24.3(%addr.loc11_24.3) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc10_35.4: = bound_method %.loc10_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10_35.4: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc10_35.4: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc10_35.4(%addr.loc10_35.4) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.4: = bound_method %.loc10_24.2, constants.%C.as.Destroy.impl.Op.135 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.4: = bound_method %.loc10_24.4, constants.%C.as.Destroy.impl.Op.135 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.25: = specific_function constants.%C.as.Destroy.impl.Op.135, @C.as.Destroy.impl.Op(constants.%int_3.822) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.111] -// CHECK:STDOUT: %bound_method.loc10_24.4: = bound_method %.loc10_24.2, %C.as.Destroy.impl.Op.specific_fn.25 -// CHECK:STDOUT: %addr.loc10_24.4: %ptr.2b1 = addr_of %.loc10_24.2 +// CHECK:STDOUT: %bound_method.loc10_24.4: = bound_method %.loc10_24.4, %C.as.Destroy.impl.Op.specific_fn.25 +// CHECK:STDOUT: %addr.loc10_24.4: %ptr.2b1 = addr_of %.loc10_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc10_24.4: init %empty_tuple.type = call %bound_method.loc10_24.4(%addr.loc10_24.4) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.5: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.5: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.5: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.5(%addr.loc9_35.5) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.5: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.5: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.26: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.5: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.26 -// CHECK:STDOUT: %addr.loc9_24.5: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.5: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.26 +// CHECK:STDOUT: %addr.loc9_24.5: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.5: init %empty_tuple.type = call %bound_method.loc9_24.5(%addr.loc9_24.5) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.6: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.6: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.6: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.6(%addr.loc8_35.6) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.6: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.6: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.27: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.6: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.27 -// CHECK:STDOUT: %addr.loc8_24.6: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.6: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.27 +// CHECK:STDOUT: %addr.loc8_24.6: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.6: init %empty_tuple.type = call %bound_method.loc8_24.6(%addr.loc8_24.6) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.7: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.7: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.7: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.7(%addr.loc7_35.7) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.7: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.7: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.28: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.7: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.28 -// CHECK:STDOUT: %addr.loc7_24.7: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.7: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.28 +// CHECK:STDOUT: %addr.loc7_24.7: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.7: init %empty_tuple.type = call %bound_method.loc7_24.7(%addr.loc7_24.7) // CHECK:STDOUT: return %.loc13_35.2 to %return // CHECK:STDOUT: @@ -1645,69 +1530,45 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.loc14_26.2: %C.304 = bind_value %.loc14_26.1 // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc14: init %D = call %bound_method.loc14_35(%.loc14_26.2) to %.loc14_35.1 // CHECK:STDOUT: %.loc14_35.2: init %D = converted %.loc14_26.1, %C.as.ImplicitAs.impl.Convert.call.loc14 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc14_35.1: = bound_method %.loc14_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc14_35.1: %ptr.f29 = addr_of %.loc14_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc14_35.1: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc14_35.1(%addr.loc14_35.1) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc14_24.1: = bound_method %.loc14_24.2, constants.%C.as.Destroy.impl.Op.da6 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc14_24.1: = bound_method %.loc14_24.4, constants.%C.as.Destroy.impl.Op.da6 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.29: = specific_function constants.%C.as.Destroy.impl.Op.da6, @C.as.Destroy.impl.Op(constants.%int_7.0b1) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.0fc] -// CHECK:STDOUT: %bound_method.loc14_24.1: = bound_method %.loc14_24.2, %C.as.Destroy.impl.Op.specific_fn.29 -// CHECK:STDOUT: %addr.loc14_24.1: %ptr.dc3 = addr_of %.loc14_24.2 +// CHECK:STDOUT: %bound_method.loc14_24.1: = bound_method %.loc14_24.4, %C.as.Destroy.impl.Op.specific_fn.29 +// CHECK:STDOUT: %addr.loc14_24.1: %ptr.dc3 = addr_of %.loc14_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc14_24.1: init %empty_tuple.type = call %bound_method.loc14_24.1(%addr.loc14_24.1) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc13_35.2: = bound_method %.loc13_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_35.2: %ptr.f29 = addr_of %.loc13_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc13_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc13_35.2(%addr.loc13_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc13_24.2: = bound_method %.loc13_24.2, constants.%C.as.Destroy.impl.Op.326 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc13_24.2: = bound_method %.loc13_24.4, constants.%C.as.Destroy.impl.Op.326 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.30: = specific_function constants.%C.as.Destroy.impl.Op.326, @C.as.Destroy.impl.Op(constants.%int_6.e56) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.e3f] -// CHECK:STDOUT: %bound_method.loc13_24.2: = bound_method %.loc13_24.2, %C.as.Destroy.impl.Op.specific_fn.30 -// CHECK:STDOUT: %addr.loc13_24.2: %ptr.b5e = addr_of %.loc13_24.2 +// CHECK:STDOUT: %bound_method.loc13_24.2: = bound_method %.loc13_24.4, %C.as.Destroy.impl.Op.specific_fn.30 +// CHECK:STDOUT: %addr.loc13_24.2: %ptr.b5e = addr_of %.loc13_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc13_24.2: init %empty_tuple.type = call %bound_method.loc13_24.2(%addr.loc13_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc12_35.3: = bound_method %.loc12_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_35.3: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc12_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc12_35.3(%addr.loc12_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.3: = bound_method %.loc12_24.2, constants.%C.as.Destroy.impl.Op.dab +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.3: = bound_method %.loc12_24.4, constants.%C.as.Destroy.impl.Op.dab // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.31: = specific_function constants.%C.as.Destroy.impl.Op.dab, @C.as.Destroy.impl.Op(constants.%int_5.0f6) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.89c] -// CHECK:STDOUT: %bound_method.loc12_24.3: = bound_method %.loc12_24.2, %C.as.Destroy.impl.Op.specific_fn.31 -// CHECK:STDOUT: %addr.loc12_24.3: %ptr.24c = addr_of %.loc12_24.2 +// CHECK:STDOUT: %bound_method.loc12_24.3: = bound_method %.loc12_24.4, %C.as.Destroy.impl.Op.specific_fn.31 +// CHECK:STDOUT: %addr.loc12_24.3: %ptr.24c = addr_of %.loc12_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc12_24.3: init %empty_tuple.type = call %bound_method.loc12_24.3(%addr.loc12_24.3) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc11_35.4: = bound_method %.loc11_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc11_35.4: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc11_35.4: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc11_35.4(%addr.loc11_35.4) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.4: = bound_method %.loc11_24.2, constants.%C.as.Destroy.impl.Op.a34 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.4: = bound_method %.loc11_24.4, constants.%C.as.Destroy.impl.Op.a34 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.32: = specific_function constants.%C.as.Destroy.impl.Op.a34, @C.as.Destroy.impl.Op(constants.%int_4.940) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.1d2] -// CHECK:STDOUT: %bound_method.loc11_24.4: = bound_method %.loc11_24.2, %C.as.Destroy.impl.Op.specific_fn.32 -// CHECK:STDOUT: %addr.loc11_24.4: %ptr.c28b = addr_of %.loc11_24.2 +// CHECK:STDOUT: %bound_method.loc11_24.4: = bound_method %.loc11_24.4, %C.as.Destroy.impl.Op.specific_fn.32 +// CHECK:STDOUT: %addr.loc11_24.4: %ptr.c28b = addr_of %.loc11_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc11_24.4: init %empty_tuple.type = call %bound_method.loc11_24.4(%addr.loc11_24.4) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc10_35.5: = bound_method %.loc10_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10_35.5: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc10_35.5: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc10_35.5(%addr.loc10_35.5) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.5: = bound_method %.loc10_24.2, constants.%C.as.Destroy.impl.Op.135 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.5: = bound_method %.loc10_24.4, constants.%C.as.Destroy.impl.Op.135 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.33: = specific_function constants.%C.as.Destroy.impl.Op.135, @C.as.Destroy.impl.Op(constants.%int_3.822) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.111] -// CHECK:STDOUT: %bound_method.loc10_24.5: = bound_method %.loc10_24.2, %C.as.Destroy.impl.Op.specific_fn.33 -// CHECK:STDOUT: %addr.loc10_24.5: %ptr.2b1 = addr_of %.loc10_24.2 +// CHECK:STDOUT: %bound_method.loc10_24.5: = bound_method %.loc10_24.4, %C.as.Destroy.impl.Op.specific_fn.33 +// CHECK:STDOUT: %addr.loc10_24.5: %ptr.2b1 = addr_of %.loc10_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc10_24.5: init %empty_tuple.type = call %bound_method.loc10_24.5(%addr.loc10_24.5) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.6: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.6: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.6: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.6(%addr.loc9_35.6) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.6: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.6: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.34: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.6: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.34 -// CHECK:STDOUT: %addr.loc9_24.6: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.6: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.34 +// CHECK:STDOUT: %addr.loc9_24.6: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.6: init %empty_tuple.type = call %bound_method.loc9_24.6(%addr.loc9_24.6) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.7: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.7: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.7: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.7(%addr.loc8_35.7) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.7: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.7: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.35: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.7: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.35 -// CHECK:STDOUT: %addr.loc8_24.7: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.7: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.35 +// CHECK:STDOUT: %addr.loc8_24.7: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.7: init %empty_tuple.type = call %bound_method.loc8_24.7(%addr.loc8_24.7) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.8: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.8: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.8: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.8(%addr.loc7_35.8) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.8: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.8: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.36: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.8: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.36 -// CHECK:STDOUT: %addr.loc7_24.8: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.8: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.36 +// CHECK:STDOUT: %addr.loc7_24.8: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.8: init %empty_tuple.type = call %bound_method.loc7_24.8(%addr.loc7_24.8) // CHECK:STDOUT: return %.loc14_35.2 to %return // CHECK:STDOUT: @@ -1716,72 +1577,45 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%P.Make [concrete = constants.%Make] // CHECK:STDOUT: %.loc6_15: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc6_15 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc6: = bound_method %.loc6_15, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc6: %ptr.f29 = addr_of %.loc6_15 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc6: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc6(%addr.loc6) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc14_35.2: = bound_method %.loc14_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc14_35.2: %ptr.f29 = addr_of %.loc14_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc14_35.2: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc14_35.2(%addr.loc14_35.2) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc14_24.2: = bound_method %.loc14_24.2, constants.%C.as.Destroy.impl.Op.da6 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc14_24.2: = bound_method %.loc14_24.4, constants.%C.as.Destroy.impl.Op.da6 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.37: = specific_function constants.%C.as.Destroy.impl.Op.da6, @C.as.Destroy.impl.Op(constants.%int_7.0b1) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.0fc] -// CHECK:STDOUT: %bound_method.loc14_24.2: = bound_method %.loc14_24.2, %C.as.Destroy.impl.Op.specific_fn.37 -// CHECK:STDOUT: %addr.loc14_24.2: %ptr.dc3 = addr_of %.loc14_24.2 +// CHECK:STDOUT: %bound_method.loc14_24.2: = bound_method %.loc14_24.4, %C.as.Destroy.impl.Op.specific_fn.37 +// CHECK:STDOUT: %addr.loc14_24.2: %ptr.dc3 = addr_of %.loc14_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc14_24.2: init %empty_tuple.type = call %bound_method.loc14_24.2(%addr.loc14_24.2) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc13_35.3: = bound_method %.loc13_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc13_35.3: %ptr.f29 = addr_of %.loc13_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc13_35.3: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc13_35.3(%addr.loc13_35.3) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc13_24.3: = bound_method %.loc13_24.2, constants.%C.as.Destroy.impl.Op.326 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc13_24.3: = bound_method %.loc13_24.4, constants.%C.as.Destroy.impl.Op.326 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.38: = specific_function constants.%C.as.Destroy.impl.Op.326, @C.as.Destroy.impl.Op(constants.%int_6.e56) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.e3f] -// CHECK:STDOUT: %bound_method.loc13_24.3: = bound_method %.loc13_24.2, %C.as.Destroy.impl.Op.specific_fn.38 -// CHECK:STDOUT: %addr.loc13_24.3: %ptr.b5e = addr_of %.loc13_24.2 +// CHECK:STDOUT: %bound_method.loc13_24.3: = bound_method %.loc13_24.4, %C.as.Destroy.impl.Op.specific_fn.38 +// CHECK:STDOUT: %addr.loc13_24.3: %ptr.b5e = addr_of %.loc13_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc13_24.3: init %empty_tuple.type = call %bound_method.loc13_24.3(%addr.loc13_24.3) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc12_35.4: = bound_method %.loc12_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc12_35.4: %ptr.f29 = addr_of %.loc12_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc12_35.4: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc12_35.4(%addr.loc12_35.4) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.4: = bound_method %.loc12_24.2, constants.%C.as.Destroy.impl.Op.dab +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc12_24.4: = bound_method %.loc12_24.4, constants.%C.as.Destroy.impl.Op.dab // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.39: = specific_function constants.%C.as.Destroy.impl.Op.dab, @C.as.Destroy.impl.Op(constants.%int_5.0f6) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.89c] -// CHECK:STDOUT: %bound_method.loc12_24.4: = bound_method %.loc12_24.2, %C.as.Destroy.impl.Op.specific_fn.39 -// CHECK:STDOUT: %addr.loc12_24.4: %ptr.24c = addr_of %.loc12_24.2 +// CHECK:STDOUT: %bound_method.loc12_24.4: = bound_method %.loc12_24.4, %C.as.Destroy.impl.Op.specific_fn.39 +// CHECK:STDOUT: %addr.loc12_24.4: %ptr.24c = addr_of %.loc12_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc12_24.4: init %empty_tuple.type = call %bound_method.loc12_24.4(%addr.loc12_24.4) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc11_35.5: = bound_method %.loc11_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc11_35.5: %ptr.f29 = addr_of %.loc11_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc11_35.5: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc11_35.5(%addr.loc11_35.5) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.5: = bound_method %.loc11_24.2, constants.%C.as.Destroy.impl.Op.a34 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc11_24.5: = bound_method %.loc11_24.4, constants.%C.as.Destroy.impl.Op.a34 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.40: = specific_function constants.%C.as.Destroy.impl.Op.a34, @C.as.Destroy.impl.Op(constants.%int_4.940) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.1d2] -// CHECK:STDOUT: %bound_method.loc11_24.5: = bound_method %.loc11_24.2, %C.as.Destroy.impl.Op.specific_fn.40 -// CHECK:STDOUT: %addr.loc11_24.5: %ptr.c28b = addr_of %.loc11_24.2 +// CHECK:STDOUT: %bound_method.loc11_24.5: = bound_method %.loc11_24.4, %C.as.Destroy.impl.Op.specific_fn.40 +// CHECK:STDOUT: %addr.loc11_24.5: %ptr.c28b = addr_of %.loc11_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc11_24.5: init %empty_tuple.type = call %bound_method.loc11_24.5(%addr.loc11_24.5) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc10_35.6: = bound_method %.loc10_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc10_35.6: %ptr.f29 = addr_of %.loc10_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc10_35.6: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc10_35.6(%addr.loc10_35.6) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.6: = bound_method %.loc10_24.2, constants.%C.as.Destroy.impl.Op.135 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc10_24.6: = bound_method %.loc10_24.4, constants.%C.as.Destroy.impl.Op.135 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.41: = specific_function constants.%C.as.Destroy.impl.Op.135, @C.as.Destroy.impl.Op(constants.%int_3.822) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.111] -// CHECK:STDOUT: %bound_method.loc10_24.6: = bound_method %.loc10_24.2, %C.as.Destroy.impl.Op.specific_fn.41 -// CHECK:STDOUT: %addr.loc10_24.6: %ptr.2b1 = addr_of %.loc10_24.2 +// CHECK:STDOUT: %bound_method.loc10_24.6: = bound_method %.loc10_24.4, %C.as.Destroy.impl.Op.specific_fn.41 +// CHECK:STDOUT: %addr.loc10_24.6: %ptr.2b1 = addr_of %.loc10_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc10_24.6: init %empty_tuple.type = call %bound_method.loc10_24.6(%addr.loc10_24.6) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc9_35.7: = bound_method %.loc9_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc9_35.7: %ptr.f29 = addr_of %.loc9_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc9_35.7: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc9_35.7(%addr.loc9_35.7) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.7: = bound_method %.loc9_24.2, constants.%C.as.Destroy.impl.Op.283 +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc9_24.7: = bound_method %.loc9_24.4, constants.%C.as.Destroy.impl.Op.283 // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.42: = specific_function constants.%C.as.Destroy.impl.Op.283, @C.as.Destroy.impl.Op(constants.%int_2.ef8) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.228] -// CHECK:STDOUT: %bound_method.loc9_24.7: = bound_method %.loc9_24.2, %C.as.Destroy.impl.Op.specific_fn.42 -// CHECK:STDOUT: %addr.loc9_24.7: %ptr.3bd = addr_of %.loc9_24.2 +// CHECK:STDOUT: %bound_method.loc9_24.7: = bound_method %.loc9_24.4, %C.as.Destroy.impl.Op.specific_fn.42 +// CHECK:STDOUT: %addr.loc9_24.7: %ptr.3bd = addr_of %.loc9_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc9_24.7: init %empty_tuple.type = call %bound_method.loc9_24.7(%addr.loc9_24.7) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc8_35.8: = bound_method %.loc8_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc8_35.8: %ptr.f29 = addr_of %.loc8_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc8_35.8: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc8_35.8(%addr.loc8_35.8) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.8: = bound_method %.loc8_24.2, constants.%C.as.Destroy.impl.Op.c0c +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc8_24.8: = bound_method %.loc8_24.4, constants.%C.as.Destroy.impl.Op.c0c // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.43: = specific_function constants.%C.as.Destroy.impl.Op.c0c, @C.as.Destroy.impl.Op(constants.%int_1.5d2) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.252] -// CHECK:STDOUT: %bound_method.loc8_24.8: = bound_method %.loc8_24.2, %C.as.Destroy.impl.Op.specific_fn.43 -// CHECK:STDOUT: %addr.loc8_24.8: %ptr.625 = addr_of %.loc8_24.2 +// CHECK:STDOUT: %bound_method.loc8_24.8: = bound_method %.loc8_24.4, %C.as.Destroy.impl.Op.specific_fn.43 +// CHECK:STDOUT: %addr.loc8_24.8: %ptr.625 = addr_of %.loc8_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc8_24.8: init %empty_tuple.type = call %bound_method.loc8_24.8(%addr.loc8_24.8) -// CHECK:STDOUT: %D.as.Destroy.impl.Op.bound.loc7_35.9: = bound_method %.loc7_35.1, constants.%D.as.Destroy.impl.Op -// CHECK:STDOUT: %addr.loc7_35.9: %ptr.f29 = addr_of %.loc7_35.1 -// CHECK:STDOUT: %D.as.Destroy.impl.Op.call.loc7_35.9: init %empty_tuple.type = call %D.as.Destroy.impl.Op.bound.loc7_35.9(%addr.loc7_35.9) -// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.9: = bound_method %.loc7_24.2, constants.%C.as.Destroy.impl.Op.e1e +// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound.loc7_24.9: = bound_method %.loc7_24.4, constants.%C.as.Destroy.impl.Op.e1e // CHECK:STDOUT: %C.as.Destroy.impl.Op.specific_fn.44: = specific_function constants.%C.as.Destroy.impl.Op.e1e, @C.as.Destroy.impl.Op(constants.%int_0.6a9) [concrete = constants.%C.as.Destroy.impl.Op.specific_fn.115] -// CHECK:STDOUT: %bound_method.loc7_24.9: = bound_method %.loc7_24.2, %C.as.Destroy.impl.Op.specific_fn.44 -// CHECK:STDOUT: %addr.loc7_24.9: %ptr.697 = addr_of %.loc7_24.2 +// CHECK:STDOUT: %bound_method.loc7_24.9: = bound_method %.loc7_24.4, %C.as.Destroy.impl.Op.specific_fn.44 +// CHECK:STDOUT: %addr.loc7_24.9: %ptr.697 = addr_of %.loc7_24.4 // CHECK:STDOUT: %C.as.Destroy.impl.Op.call.loc7_24.9: init %empty_tuple.type = call %bound_method.loc7_24.9(%addr.loc7_24.9) // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } @@ -1799,8 +1633,6 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.1 [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @D.as.Destroy.impl.Op = "no_op" [from "library.carbon"]; -// CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.2 [from "library.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.3 [from "library.carbon"]; diff --git a/toolchain/check/testdata/struct/literal_member_access.carbon b/toolchain/check/testdata/struct/literal_member_access.carbon index 2867492b1105..584757dd577b 100644 --- a/toolchain/check/testdata/struct/literal_member_access.carbon +++ b/toolchain/check/testdata/struct/literal_member_access.carbon @@ -109,10 +109,10 @@ fn F() -> i32 { // CHECK:STDOUT: %.loc18_35.3: %struct_type.a.b.c.4ca = converted %.loc18_35.1, %struct.loc18_35 // CHECK:STDOUT: %.loc18_36: %struct_type.x.y.z = struct_access %.loc18_35.3, element1 // CHECK:STDOUT: %.loc18_38: %i32 = struct_access %.loc18_36, element1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18_26.1, constants.%T.as.Destroy.impl.Op.1a4 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc18_26.2, constants.%T.as.Destroy.impl.Op.1a4 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.1a4, @T.as.Destroy.impl.Op(constants.%struct_type.x.y.z) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method: = bound_method %.loc18_26.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.6eb = addr_of %.loc18_26.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc18_26.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.6eb = addr_of %.loc18_26.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc18_38 // 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 7485e83c903d..91f09eecad61 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -34,16 +34,12 @@ 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: %T.as.Destroy.impl.Op.type.19f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.189) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.672: %T.as.Destroy.impl.Op.type.19f = struct_value () [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.cf9: = specific_function %T.as.Destroy.impl.Op.672, @T.as.Destroy.impl.Op(%tuple.type.189) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.type.840: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%struct_type.a.b.2f9) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.52b: %T.as.Destroy.impl.Op.type.840 = struct_value () [concrete] // CHECK:STDOUT: %ptr.c95: type = ptr_type %struct_type.a.b.2f9 [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.c7e: = specific_function %T.as.Destroy.impl.Op.52b, @T.as.Destroy.impl.Op(%struct_type.a.b.2f9) [concrete] +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function %T.as.Destroy.impl.Op.52b, @T.as.Destroy.impl.Op(%struct_type.a.b.2f9) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -121,21 +117,11 @@ fn G() { // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %tuple.type.189, .b: %tuple.type.189} [concrete = constants.%struct_type.a.b.2f9] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %struct_type.a.b.2f9 = bind_name v, %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_74.1: = bound_method %.loc18_74.2, constants.%T.as.Destroy.impl.Op.672 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.672, @T.as.Destroy.impl.Op(constants.%tuple.type.189) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc18_74.1: = bound_method %.loc18_74.2, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc18_74.1: %ptr.7ae = addr_of %.loc18_74.2 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_74.1: init %empty_tuple.type = call %bound_method.loc18_74.1(%addr.loc18_74.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_74.2: = bound_method %.loc18_74.1, constants.%T.as.Destroy.impl.Op.672 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.672, @T.as.Destroy.impl.Op(constants.%tuple.type.189) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.cf9] -// CHECK:STDOUT: %bound_method.loc18_74.2: = bound_method %.loc18_74.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc18_74.2: %ptr.7ae = addr_of %.loc18_74.1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_74.2: init %empty_tuple.type = call %bound_method.loc18_74.2(%addr.loc18_74.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc18_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.52b -// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.52b, @T.as.Destroy.impl.Op(constants.%struct_type.a.b.2f9) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn.c7e] -// CHECK:STDOUT: %bound_method.loc18_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc18_3: %ptr.c95 = addr_of %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc18_3: init %empty_tuple.type = call %bound_method.loc18_3(%addr.loc18_3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.52b +// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: = specific_function constants.%T.as.Destroy.impl.Op.52b, @T.as.Destroy.impl.Op(constants.%struct_type.a.b.2f9) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.c95 = addr_of %v.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/element_access.carbon b/toolchain/check/testdata/tuple/element_access.carbon index d8b38c8c97d2..3932f25e6294 100644 --- a/toolchain/check/testdata/tuple/element_access.carbon +++ b/toolchain/check/testdata/tuple/element_access.carbon @@ -371,10 +371,10 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %.loc7_12.2: ref %tuple.type.a1c = temporary %.loc7_12.1, %F.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc7_12.2, element0 // CHECK:STDOUT: %.loc7_13: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc7_12.1, constants.%T.as.Destroy.impl.Op.c8e +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc7_12.2, constants.%T.as.Destroy.impl.Op.c8e // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc7_12.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.0b7 = addr_of %.loc7_12.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc7_12.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.0b7 = addr_of %.loc7_12.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc7_13 // 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 203614088a1f..fcfee0c93c2a 100644 --- a/toolchain/check/testdata/tuple/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/tuple/in_place_tuple_init.carbon @@ -96,22 +96,11 @@ fn H() { // CHECK:STDOUT: %F.ref.loc9: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: // CHECK:STDOUT: %F.call.loc9: init %tuple.type.d07 = call %F.ref.loc9() to %.loc5_8 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.7c6 // CHECK:STDOUT: -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8: = bound_method %.loc8, constants.%T.as.Destroy.impl.Op.7c6 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc8: = bound_method %.loc8, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8: %ptr.261 = addr_of %.loc8 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8: init %empty_tuple.type = call %bound_method.loc8(%addr.loc8) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_3.1: = bound_method %.loc7_3, constants.%T.as.Destroy.impl.Op.7c6 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %.loc7_3, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc7_3.1: %ptr.261 = addr_of %.loc7_3 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_3.1: init %empty_tuple.type = call %bound_method.loc7_3.1(%addr.loc7_3.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_3.2: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.7c6 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.4 -// CHECK:STDOUT: %addr.loc7_3.2: %ptr.261 = addr_of %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_3.2: init %empty_tuple.type = call %bound_method.loc7_3.2(%addr.loc7_3.2) +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.261 = addr_of %v.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %F.call.loc9 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -124,10 +113,10 @@ fn H() { // CHECK:STDOUT: %.loc15_12.2: ref %tuple.type.d07 = temporary %.loc15_12.1, %G.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc15_12.2, element0 // CHECK:STDOUT: %.loc15_13: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_12.1, constants.%T.as.Destroy.impl.Op.7c6 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.loc15_12.2, constants.%T.as.Destroy.impl.Op.7c6 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method: = bound_method %.loc15_12.1, %T.as.Destroy.impl.Op.specific_fn -// CHECK:STDOUT: %addr: %ptr.261 = addr_of %.loc15_12.1 +// CHECK:STDOUT: %bound_method: = bound_method %.loc15_12.2, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.261 = addr_of %.loc15_12.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: return %.loc15_13 // CHECK:STDOUT: } @@ -144,13 +133,10 @@ 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: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f06: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.19f: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.189) [concrete] -// CHECK:STDOUT: %T.as.Destroy.impl.Op.672: %T.as.Destroy.impl.Op.type.19f = struct_value () [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.type.387: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%tuple.type.99b) [concrete] // CHECK:STDOUT: %T.as.Destroy.impl.Op.b09: %T.as.Destroy.impl.Op.type.387 = struct_value () [concrete] // CHECK:STDOUT: %ptr.8bc: type = ptr_type %tuple.type.99b [concrete] @@ -222,21 +208,11 @@ fn H() { // CHECK:STDOUT: %.loc7_43.5: type = converted %.loc7_43.2, constants.%tuple.type.99b [concrete = constants.%tuple.type.99b] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.99b = bind_name v, %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_56.1: = bound_method %tuple.elem1, constants.%T.as.Destroy.impl.Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.b09 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_56.1: = bound_method %tuple.elem1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc7_56.1: %ptr.7ae = addr_of %tuple.elem1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_56.1: init %empty_tuple.type = call %bound_method.loc7_56.1(%addr.loc7_56.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_56.2: = bound_method %tuple.elem0, constants.%T.as.Destroy.impl.Op.672 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_56.2: = bound_method %tuple.elem0, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc7_56.2: %ptr.7ae = addr_of %tuple.elem0 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_56.2: init %empty_tuple.type = call %bound_method.loc7_56.2(%addr.loc7_56.2) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.b09 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc7_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.3 -// CHECK:STDOUT: %addr.loc7_3: %ptr.8bc = addr_of %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc7_3: init %empty_tuple.type = call %bound_method.loc7_3(%addr.loc7_3) +// CHECK:STDOUT: %bound_method: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.8bc = addr_of %v.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -289,16 +265,11 @@ fn H() { // CHECK:STDOUT: %.loc13_36.4: type = converted %.loc13_36.2, constants.%tuple.type.516 [concrete = constants.%tuple.type.516] // CHECK:STDOUT: } // CHECK:STDOUT: %v: ref %tuple.type.516 = bind_name v, %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_50: = bound_method %tuple.elem1, constants.%T.as.Destroy.impl.Op.672 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.dfb // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13_50.5: = bound_method %tuple.elem1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc13_50: %ptr.7ae = addr_of %tuple.elem1 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_50: init %empty_tuple.type = call %bound_method.loc13_50.5(%addr.loc13_50) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc13_3: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.dfb -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc13_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc13_3: %ptr.12e = addr_of %v.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc13_3: init %empty_tuple.type = call %bound_method.loc13_3(%addr.loc13_3) +// CHECK:STDOUT: %bound_method.loc13_3: = bound_method %v.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.12e = addr_of %v.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc13_3(%addr) // 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 06783d1faab4..8c7a8959edf2 100644 --- a/toolchain/check/testdata/tuple/tuple_pattern.carbon +++ b/toolchain/check/testdata/tuple/tuple_pattern.carbon @@ -383,16 +383,11 @@ let (a: {}, b: {}) = ({}, {}, {}); // 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 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_3.1: = bound_method %.loc22_3, constants.%T.as.Destroy.impl.Op.973 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: = bound_method %.var, constants.%T.as.Destroy.impl.Op.973 // CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc22_3.1: = bound_method %.loc22_3, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc22_3.1: %ptr.8fc = addr_of %.loc22_3 -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_3.1: init %empty_tuple.type = call %bound_method.loc22_3.1(%addr.loc22_3.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc22_3.2: = bound_method %.var, constants.%T.as.Destroy.impl.Op.973 -// CHECK:STDOUT: -// CHECK:STDOUT: %bound_method.loc22_3.2: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc22_3.2: %ptr.8fc = addr_of %.var -// CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc22_3.2: init %empty_tuple.type = call %bound_method.loc22_3.2(%addr.loc22_3.2) +// CHECK:STDOUT: %bound_method: = bound_method %.var, %T.as.Destroy.impl.Op.specific_fn +// CHECK:STDOUT: %addr: %ptr.8fc = addr_of %.var +// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method(%addr) // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/var_pattern.carbon b/toolchain/check/testdata/var/var_pattern.carbon index 055b3044cec4..b24ab0acd7d9 100644 --- a/toolchain/check/testdata/var/var_pattern.carbon +++ b/toolchain/check/testdata/var/var_pattern.carbon @@ -508,12 +508,12 @@ fn G() { // 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] -// CHECK:STDOUT: assign %.loc4_13.1, %.loc4_13.2 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc8_5, %.loc4_13.1) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc4: = bound_method %.loc4_13.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %.loc4_13.3: ref %empty_tuple.type = temporary %.loc4_13.1, %.loc4_13.2 +// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc8_5, %.loc4_13.3) +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc4: = bound_method %.loc4_13.3, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc4: = bound_method %.loc4_13.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc4: %ptr.843 = addr_of %.loc4_13.1 +// CHECK:STDOUT: %bound_method.loc4: = bound_method %.loc4_13.3, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc4: %ptr.843 = addr_of %.loc4_13.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc4: init %empty_tuple.type = call %bound_method.loc4(%addr.loc4) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc7: = bound_method %v.var, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] @@ -686,14 +686,14 @@ fn G() { // CHECK:STDOUT: %.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc7_12.2: init %empty_tuple.type = tuple_init () to %.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.2: init %empty_tuple.type = converted %.loc7_12.1, %.loc7_12.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %.1, %.2 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc7_8.2, %.1) +// CHECK:STDOUT: %.3: ref %empty_tuple.type = temporary %.1, %.2 +// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref(%.loc7_8.2, %.3) // CHECK:STDOUT: %Op.ref: %Destroy.assoc_type = name_ref Op, imports.%Core.import_ref.f99 [concrete = constants.%assoc0] // CHECK:STDOUT: %impl.elem0: %.346 = impl_witness_access constants.%Destroy.impl_witness.1dc, element0 [concrete = constants.%T.as.Destroy.impl.Op.ea3] -// CHECK:STDOUT: %bound_method.1: = bound_method %.1, %impl.elem0 +// CHECK:STDOUT: %bound_method.1: = bound_method %.3, %impl.elem0 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.2: = bound_method %.1, %specific_fn -// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.1 +// CHECK:STDOUT: %bound_method.2: = bound_method %.3, %specific_fn +// CHECK:STDOUT: %addr: %ptr.843 = addr_of %.3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.2(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -986,15 +986,15 @@ fn G() { // 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: %T.as.Destroy.impl.Op.bound.loc8_48: = bound_method %.loc8_48.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_48: = bound_method %.loc8_48.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.1: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_48: = bound_method %.loc8_48.1, %T.as.Destroy.impl.Op.specific_fn.1 -// CHECK:STDOUT: %addr.loc8_48: %ptr.843 = addr_of %.loc8_48.1 +// CHECK:STDOUT: %bound_method.loc8_48: = bound_method %.loc8_48.2, %T.as.Destroy.impl.Op.specific_fn.1 +// CHECK:STDOUT: %addr.loc8_48: %ptr.843 = addr_of %.loc8_48.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_48: init %empty_tuple.type = call %bound_method.loc8_48(%addr.loc8_48) -// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_38: = bound_method %.loc8_38.1, constants.%T.as.Destroy.impl.Op.ea3 +// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_38: = bound_method %.loc8_38.2, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.2: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] -// CHECK:STDOUT: %bound_method.loc8_38: = bound_method %.loc8_38.1, %T.as.Destroy.impl.Op.specific_fn.2 -// CHECK:STDOUT: %addr.loc8_38: %ptr.843 = addr_of %.loc8_38.1 +// CHECK:STDOUT: %bound_method.loc8_38: = bound_method %.loc8_38.2, %T.as.Destroy.impl.Op.specific_fn.2 +// CHECK:STDOUT: %addr.loc8_38: %ptr.843 = addr_of %.loc8_38.2 // CHECK:STDOUT: %T.as.Destroy.impl.Op.call.loc8_38: init %empty_tuple.type = call %bound_method.loc8_38(%addr.loc8_38) // CHECK:STDOUT: %T.as.Destroy.impl.Op.bound.loc8_15: = bound_method %y.var, constants.%T.as.Destroy.impl.Op.ea3 // CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn.3: = specific_function constants.%T.as.Destroy.impl.Op.ea3, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn] diff --git a/toolchain/lower/testdata/function/definition/destroy.carbon b/toolchain/lower/testdata/function/definition/destroy.carbon new file mode 100644 index 000000000000..e4a953d087e0 --- /dev/null +++ b/toolchain/lower/testdata/function/definition/destroy.carbon @@ -0,0 +1,287 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// EXTRA-ARGS: --no-gen-implicit-type-impls +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/definition/destroy.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/lower/testdata/function/definition/destroy.carbon + +// --- has_destroy.carbon + +library "[[@TEST_NAME]]"; + +class HasDestroy { + // TODO: Use `fn destroy` instead once lowering supports it. + impl as Core.Destroy { + fn Op[self: Self](); + } +} + +// --- let_param.carbon + +library "[[@TEST_NAME]]"; +import library "has_destroy"; + +fn F(x: HasDestroy) { +} + +fn G(); + +fn CallF() { + F({}); + // TODO: The `HasDestroy` instance is destroyed after the call to `G()`, and + // should be destroyed before. + G(); +} + +// --- var_param.carbon + +library "[[@TEST_NAME]]"; +import library "has_destroy"; + +fn F(var x: HasDestroy) { +} + +fn G(); + +fn CallF() { + F({}); + // TODO: The `HasDestroy` instance is destroyed after the call to `G()`, and + // should be destroyed before. + G(); +} + +// --- return_slot.carbon + +library "[[@TEST_NAME]]"; +import library "has_destroy"; + +fn F() -> HasDestroy { + return {}; +} + +fn G(); + +fn Forward() -> HasDestroy { + return F(); +} + +fn InitVar() { + var local: HasDestroy = F(); + G(); +} + +fn InitLet() { + let local: HasDestroy = F(); + G(); +} + +// CHECK:STDOUT: ; ModuleID = 'has_destroy.carbon' +// CHECK:STDOUT: source_filename = "has_destroy.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: define void @"_COp:thunk.HasDestroy.Main:Destroy.Core"(ptr %self) !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: call void @"_COp.HasDestroy.Main:Destroy.Core"(ptr %self), !dbg !7 +// CHECK:STDOUT: ret void, !dbg !7 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "has_destroy.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk.HasDestroy.Main:Destroy.Core", scope: null, file: !3, line: 7, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 7, column: 5, scope: !4) +// CHECK:STDOUT: ; ModuleID = 'let_param.carbon' +// CHECK:STDOUT: source_filename = "let_param.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @HasDestroy.val.loc11_6.3 = internal constant {} zeroinitializer +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CF.Main(ptr %x) !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: ret void, !dbg !7 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @_CG.Main() +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CCallF.Main() !dbg !8 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc11_6.2.temp = alloca {}, align 8, !dbg !9 +// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc11_6.2.temp), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.loc11_6.2.temp, ptr align 1 @HasDestroy.val.loc11_6.3, i64 0, i1 false), !dbg !9 +// CHECK:STDOUT: call void @_CF.Main(ptr %.loc11_6.2.temp), !dbg !10 +// CHECK:STDOUT: call void @_CG.Main(), !dbg !11 +// CHECK:STDOUT: call void @"_COp.HasDestroy.Main:Destroy.Core"(ptr %.loc11_6.2.temp), !dbg !9 +// CHECK:STDOUT: ret void, !dbg !12 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp:thunk.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #0 +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #1 +// CHECK:STDOUT: +// CHECK:STDOUT: attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "let_param.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 5, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 5, column: 1, scope: !4) +// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "CallF", linkageName: "_CCallF.Main", scope: null, file: !3, line: 10, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !9 = !DILocation(line: 11, column: 5, scope: !8) +// CHECK:STDOUT: !10 = !DILocation(line: 11, column: 3, scope: !8) +// CHECK:STDOUT: !11 = !DILocation(line: 14, column: 3, scope: !8) +// CHECK:STDOUT: !12 = !DILocation(line: 10, column: 1, scope: !8) +// CHECK:STDOUT: ; ModuleID = 'var_param.carbon' +// CHECK:STDOUT: source_filename = "var_param.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @HasDestroy.val.loc5_6.2 = internal constant {} zeroinitializer +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CF.Main(ptr %x) !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: ret void, !dbg !7 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @_CG.Main() +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CCallF.Main() !dbg !8 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc5_6.1.temp = alloca {}, align 8, !dbg !9 +// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc5_6.1.temp), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.loc5_6.1.temp, ptr align 1 @HasDestroy.val.loc5_6.2, i64 0, i1 false), !dbg !9 +// CHECK:STDOUT: call void @_CF.Main(ptr %.loc5_6.1.temp), !dbg !10 +// CHECK:STDOUT: call void @_CG.Main(), !dbg !11 +// CHECK:STDOUT: call void @"_COp.HasDestroy.Main:Destroy.Core"(ptr %.loc5_6.1.temp), !dbg !9 +// CHECK:STDOUT: ret void, !dbg !12 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp:thunk.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #0 +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #1 +// CHECK:STDOUT: +// CHECK:STDOUT: attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "var_param.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 5, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 5, column: 1, scope: !4) +// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "CallF", linkageName: "_CCallF.Main", scope: null, file: !3, line: 10, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !9 = !DILocation(line: 5, column: 6, scope: !8) +// CHECK:STDOUT: !10 = !DILocation(line: 11, column: 3, scope: !8) +// CHECK:STDOUT: !11 = !DILocation(line: 14, column: 3, scope: !8) +// CHECK:STDOUT: !12 = !DILocation(line: 10, column: 1, scope: !8) +// CHECK:STDOUT: ; ModuleID = 'return_slot.carbon' +// CHECK:STDOUT: source_filename = "return_slot.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @HasDestroy.val.loc6_12 = internal constant {} zeroinitializer +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CF.Main(ptr sret({}) %return) !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @HasDestroy.val.loc6_12, i64 0, i1 false), !dbg !7 +// CHECK:STDOUT: ret void, !dbg !7 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @_CG.Main() +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CForward.Main(ptr sret({}) %return) !dbg !8 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: call void @_CF.Main(ptr %return), !dbg !9 +// CHECK:STDOUT: ret void, !dbg !10 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CInitVar.Main() !dbg !11 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %local.var = alloca {}, align 8, !dbg !12 +// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %local.var), !dbg !12 +// CHECK:STDOUT: call void @_CF.Main(ptr %local.var), !dbg !13 +// CHECK:STDOUT: call void @_CG.Main(), !dbg !14 +// CHECK:STDOUT: call void @"_COp.HasDestroy.Main:Destroy.Core"(ptr %local.var), !dbg !12 +// CHECK:STDOUT: ret void, !dbg !15 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp:thunk.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: declare void @"_COp.HasDestroy.Main:Destroy.Core"(ptr) +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_CInitLet.Main() !dbg !16 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc21_29.1.temp = alloca {}, align 8, !dbg !17 +// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc21_29.1.temp), !dbg !17 +// CHECK:STDOUT: call void @_CF.Main(ptr %.loc21_29.1.temp), !dbg !17 +// CHECK:STDOUT: call void @_CG.Main(), !dbg !18 +// CHECK:STDOUT: call void @"_COp.HasDestroy.Main:Destroy.Core"(ptr %.loc21_29.1.temp), !dbg !17 +// CHECK:STDOUT: ret void, !dbg !19 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #0 +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1 +// CHECK:STDOUT: +// CHECK:STDOUT: ; uselistorder directives +// CHECK:STDOUT: uselistorder ptr @llvm.lifetime.start.p0, { 1, 0 } +// CHECK:STDOUT: +// CHECK:STDOUT: attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "return_slot.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 5, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 6, column: 3, scope: !4) +// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "Forward", linkageName: "_CForward.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !9 = !DILocation(line: 12, column: 10, scope: !8) +// CHECK:STDOUT: !10 = !DILocation(line: 12, column: 3, scope: !8) +// CHECK:STDOUT: !11 = distinct !DISubprogram(name: "InitVar", linkageName: "_CInitVar.Main", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !12 = !DILocation(line: 16, column: 3, scope: !11) +// CHECK:STDOUT: !13 = !DILocation(line: 16, column: 27, scope: !11) +// CHECK:STDOUT: !14 = !DILocation(line: 17, column: 3, scope: !11) +// CHECK:STDOUT: !15 = !DILocation(line: 15, column: 1, scope: !11) +// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "InitLet", linkageName: "_CInitLet.Main", scope: null, file: !3, line: 20, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !17 = !DILocation(line: 21, column: 27, scope: !16) +// CHECK:STDOUT: !18 = !DILocation(line: 22, column: 3, scope: !16) +// CHECK:STDOUT: !19 = !DILocation(line: 20, column: 1, scope: !16) diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index eaf9f3ecdd93..1184691b58b7 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -1659,8 +1659,8 @@ struct SymbolicBindingPattern { // A temporary value. struct Temporary { - static constexpr auto Kind = - InstKind::Temporary.Define({.ir_name = "temporary"}); + static constexpr auto Kind = InstKind::Temporary.Define( + {.ir_name = "temporary", .has_cleanup = true}); TypeId type_id; DestInstId storage_id; @@ -1669,11 +1669,11 @@ struct Temporary { // Storage for a temporary value. struct TemporaryStorage { - // TODO: Make Parse::NodeId more specific. + // The cleanup is owned by the `Temporary` instruction, so has_cleanup is set + // to `false` here. static constexpr auto Kind = InstKind::TemporaryStorage.Define( {.ir_name = "temporary_storage", - .constant_kind = InstConstantKind::Never, - .has_cleanup = true}); + .constant_kind = InstConstantKind::Never}); TypeId type_id; };