diff --git a/toolchain/check/call.cpp b/toolchain/check/call.cpp index 07075683fb93..645ed1ce88d1 100644 --- a/toolchain/check/call.cpp +++ b/toolchain/check/call.cpp @@ -175,13 +175,13 @@ auto PerformCall(Context& context, SemIR::LocId loc_id, SemIR::InstId callee_id, } // If there is a return slot, build storage for the result. - SemIR::InstId return_storage_id = SemIR::InstId::Invalid; + SemIR::InstId return_slot_arg_id = SemIR::InstId::Invalid; SemIR::ReturnTypeInfo return_info = [&] { DiagnosticAnnotationScope annotate_diagnostics( &context.emitter(), [&](auto& builder) { CARBON_DIAGNOSTIC(IncompleteReturnTypeHere, Note, "return type declared here"); - builder.Note(callable.return_storage_id, IncompleteReturnTypeHere); + builder.Note(callable.return_slot_id, IncompleteReturnTypeHere); }); return CheckFunctionReturnType(context, callee_id, callable, *callee_specific_id); @@ -190,7 +190,7 @@ auto PerformCall(Context& context, SemIR::LocId loc_id, SemIR::InstId callee_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_storage_id = context.AddInst( + return_slot_arg_id = context.AddInst( loc_id, {.type_id = return_info.type_id}); break; case SemIR::InitRepr::None: @@ -211,7 +211,7 @@ auto PerformCall(Context& context, SemIR::LocId loc_id, SemIR::InstId callee_id, // Convert the arguments to match the parameters. auto converted_args_id = ConvertCallArgs( - context, loc_id, callee_function.self_id, arg_ids, return_storage_id, + context, loc_id, callee_function.self_id, arg_ids, return_slot_arg_id, CalleeParamsInfo(callable), *callee_specific_id); auto call_inst_id = context.AddInst(loc_id, {.type_id = return_info.type_id, diff --git a/toolchain/check/convert.cpp b/toolchain/check/convert.cpp index e9933e5d1a26..58f30515af08 100644 --- a/toolchain/check/convert.cpp +++ b/toolchain/check/convert.cpp @@ -1172,7 +1172,7 @@ static auto ConvertSelf(Context& context, SemIR::LocId call_loc_id, auto ConvertCallArgs(Context& context, SemIR::LocId call_loc_id, SemIR::InstId self_id, llvm::ArrayRef arg_refs, - SemIR::InstId return_storage_id, + SemIR::InstId return_slot_arg_id, const CalleeParamsInfo& callee, SemIR::SpecificId callee_specific_id) -> SemIR::InstBlockId { @@ -1187,7 +1187,7 @@ auto ConvertCallArgs(Context& context, SemIR::LocId call_loc_id, // Start building a block to hold the converted arguments. llvm::SmallVector args; args.reserve(implicit_param_patterns.size() + param_patterns.size() + - return_storage_id.is_valid()); + return_slot_arg_id.is_valid()); // Check implicit parameters. for (auto implicit_param_id : implicit_param_patterns) { @@ -1241,8 +1241,8 @@ auto ConvertCallArgs(Context& context, SemIR::LocId call_loc_id, } // Track the return storage, if present. - if (return_storage_id.is_valid()) { - args.push_back(return_storage_id); + if (return_slot_arg_id.is_valid()) { + args.push_back(return_slot_arg_id); } return context.inst_blocks().AddOrEmpty(args); diff --git a/toolchain/check/convert.h b/toolchain/check/convert.h index cdadbb40bf36..129d9029a2d6 100644 --- a/toolchain/check/convert.h +++ b/toolchain/check/convert.h @@ -117,7 +117,7 @@ struct CalleeParamsInfo { auto ConvertCallArgs(Context& context, SemIR::LocId call_loc_id, SemIR::InstId self_id, llvm::ArrayRef arg_refs, - SemIR::InstId return_storage_id, + SemIR::InstId return_slot_arg_id, const CalleeParamsInfo& callee, SemIR::SpecificId callee_specific_id) -> SemIR::InstBlockId; diff --git a/toolchain/check/eval.cpp b/toolchain/check/eval.cpp index 7225e1618c93..9e32ed22cf04 100644 --- a/toolchain/check/eval.cpp +++ b/toolchain/check/eval.cpp @@ -1359,6 +1359,7 @@ static auto TryEvalInstInContext(EvalContext& eval_context, case SemIR::BindValue::Kind: case SemIR::Deref::Kind: case SemIR::ImportRefLoaded::Kind: + case SemIR::ReturnSlot::Kind: case SemIR::Temporary::Kind: case SemIR::TemporaryStorage::Kind: case SemIR::ValueAsRef::Kind: @@ -1492,8 +1493,9 @@ static auto TryEvalInstInContext(EvalContext& eval_context, case SemIR::RequirementEquivalent::Kind: case SemIR::RequirementImpls::Kind: case SemIR::RequirementRewrite::Kind: - case SemIR::ReturnExpr::Kind: case SemIR::Return::Kind: + case SemIR::ReturnExpr::Kind: + case SemIR::ReturnSlotPattern::Kind: case SemIR::StructLiteral::Kind: case SemIR::TupleLiteral::Kind: case SemIR::VarStorage::Kind: diff --git a/toolchain/check/global_init.cpp b/toolchain/check/global_init.cpp index 564e9953e53d..5fba84fbaa19 100644 --- a/toolchain/check/global_init.cpp +++ b/toolchain/check/global_init.cpp @@ -49,7 +49,7 @@ auto GlobalInit::Finalize() -> void { .extern_library_id = SemIR::LibraryNameId::Invalid, .non_owning_decl_id = SemIR::InstId::Invalid, .first_owning_decl_id = SemIR::InstId::Invalid}, - {.return_storage_id = SemIR::InstId::Invalid, + {.return_slot_id = SemIR::InstId::Invalid, .body_block_ids = {SemIR::InstBlockId::GlobalInit}}})); } diff --git a/toolchain/check/handle_function.cpp b/toolchain/check/handle_function.cpp index a3aa4342bf94..0224a9d6f43d 100644 --- a/toolchain/check/handle_function.cpp +++ b/toolchain/check/handle_function.cpp @@ -44,9 +44,15 @@ auto HandleParseNode(Context& context, Parse::ReturnTypeId node_id) -> bool { // Propagate the type expression. auto [type_node_id, type_inst_id] = context.node_stack().PopExprWithNodeId(); auto type_id = ExprAsType(context, type_node_id, type_inst_id).type_id; - // TODO: Use a dedicated instruction rather than VarStorage here. - context.AddInstAndPush( - node_id, {.type_id = type_id, .name_id = SemIR::NameId::ReturnSlot}); + auto return_slot_id = context.AddPatternInst( + node_id, {.type_id = type_id, .type_inst_id = type_inst_id}); + // TODO: Use a separate inst kind here and for the corresponding Param, + // to capture the fact that the corresponding Param is not a value expression. + auto param_pattern_id = context.AddPatternInst( + node_id, {.type_id = type_id, + .subpattern_id = return_slot_id, + .runtime_index = SemIR::RuntimeParamIndex::Unknown}); + context.node_stack().Push(node_id, param_pattern_id); return true; } @@ -97,7 +103,7 @@ static auto MergeFunctionRedecl(Context& context, SemIRLoc new_loc, // Track the signature from the definition, so that IDs in the body // match IDs in the signature. prev_function.MergeDefinition(new_function); - prev_function.return_storage_id = new_function.return_storage_id; + prev_function.return_slot_id = new_function.return_slot_id; } if ((prev_import_ir_id.is_valid() && !new_is_import)) { ReplacePrevInstForMerge(context, new_function.parent_scope_id, @@ -170,14 +176,14 @@ static auto BuildFunctionDecl(Context& context, Parse::AnyFunctionDeclId node_id, bool is_definition) -> std::pair { - auto return_storage_id = SemIR::InstId::Invalid; - if (auto [return_node, maybe_return_storage_id] = + auto return_slot_pattern_id = SemIR::InstId::Invalid; + if (auto [return_node, maybe_return_slot_pattern_id] = context.node_stack().PopWithNodeIdIf(); - maybe_return_storage_id) { - return_storage_id = *maybe_return_storage_id; + maybe_return_slot_pattern_id) { + return_slot_pattern_id = *maybe_return_slot_pattern_id; } - auto name = PopNameComponent(context); + auto name = PopNameComponent(context, return_slot_pattern_id); if (!name.params_id.is_valid()) { context.TODO(node_id, "function with positional parameters"); name.params_id = SemIR::InstBlockId::Empty; @@ -232,7 +238,7 @@ static auto BuildFunctionDecl(Context& context, auto function_info = SemIR::Function{{name_context.MakeEntityWithParamsBase( name, decl_id, is_extern, introducer.extern_library)}, - {.return_storage_id = return_storage_id, + {.return_slot_id = name.return_slot_id, .virtual_modifier = virtual_modifier}}; if (is_definition) { function_info.definition_id = decl_id; @@ -332,7 +338,7 @@ static auto HandleFunctionDefinitionAfterSignature( context.AddCurrentCodeBlockToFunction(); // Check the return type is complete. - CheckFunctionReturnType(context, function.return_storage_id, function, + CheckFunctionReturnType(context, function.return_slot_id, function, SemIR::SpecificId::Invalid); // Check the parameter types are complete. @@ -397,7 +403,7 @@ auto HandleParseNode(Context& context, Parse::FunctionDefinitionId node_id) // If the `}` of the function is reachable, reject if we need a return value // and otherwise add an implicit `return;`. if (context.is_current_position_reachable()) { - if (context.functions().Get(function_id).return_storage_id.is_valid()) { + if (context.functions().Get(function_id).return_slot_id.is_valid()) { CARBON_DIAGNOSTIC( MissingReturnStatement, Error, "missing `return` at end of function with declared return type"); diff --git a/toolchain/check/handle_impl.cpp b/toolchain/check/handle_impl.cpp index 77c36092f7e5..43acb1d78efd 100644 --- a/toolchain/check/handle_impl.cpp +++ b/toolchain/check/handle_impl.cpp @@ -207,10 +207,12 @@ static auto PopImplIntroducerAndParamsAsNameComponent( ParameterBlocks parameter_blocks{ .implicit_params_id = SemIR::InstBlockId::Invalid, - .params_id = SemIR::InstBlockId::Invalid}; + .params_id = SemIR::InstBlockId::Invalid, + .return_slot_id = SemIR::InstId::Invalid}; if (implicit_param_patterns_id) { - parameter_blocks = CalleePatternMatch(context, *implicit_param_patterns_id, - SemIR::InstBlockId::Invalid); + parameter_blocks = + CalleePatternMatch(context, *implicit_param_patterns_id, + SemIR::InstBlockId::Invalid, SemIR::InstId::Invalid); } Parse::NodeId first_param_node_id = @@ -229,6 +231,8 @@ static auto PopImplIntroducerAndParamsAsNameComponent( .params_loc_id = Parse::NodeId::Invalid, .params_id = SemIR::InstBlockId::Invalid, .param_patterns_id = SemIR::InstBlockId::Invalid, + .return_slot_pattern_id = SemIR::InstId::Invalid, + .return_slot_id = SemIR::InstId::Invalid, .pattern_block_id = context.pattern_block_stack().Pop(), }; } diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index 8b2c8cacc5d5..e9a3c00a7736 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -762,7 +762,9 @@ class ImportRefResolver { auto new_param_id = context_.AddInstInNoBlock( AddImportIRInst(param_id), - {.type_id = type_id, .runtime_index = param_inst.runtime_index}); + {.type_id = type_id, + .runtime_index = param_inst.runtime_index, + .pretty_name_id = GetLocalNameId(param_inst.pretty_name_id)}); switch (bind_inst.kind) { case SemIR::BindName::Kind: { auto entity_name_id = context_.entity_names().Add( @@ -1598,7 +1600,7 @@ class ImportRefResolver { // Start with an incomplete function. function_decl.function_id = context_.functions().Add( {GetIncompleteLocalEntityBase(function_decl_id, import_function), - {.return_storage_id = SemIR::InstId::Invalid, + {.return_slot_id = SemIR::InstId::Invalid, .builtin_function_kind = import_function.builtin_function_kind}}); function_decl.type_id = @@ -1643,9 +1645,9 @@ class ImportRefResolver { } auto return_type_const_id = SemIR::ConstantId::Invalid; - if (import_function.return_storage_id.is_valid()) { + if (import_function.return_slot_id.is_valid()) { return_type_const_id = GetLocalConstantId( - import_ir_.insts().Get(import_function.return_storage_id).type_id()); + import_ir_.insts().Get(import_function.return_slot_id).type_id()); } auto parent_scope_id = GetLocalNameScopeId(import_function.parent_scope_id); LoadLocalParamConstantIds(import_function.implicit_param_refs_id); @@ -1672,13 +1674,13 @@ class ImportRefResolver { SetGenericData(import_function.generic_id, new_function.generic_id, generic_data); - if (import_function.return_storage_id.is_valid()) { + if (import_function.return_slot_id.is_valid()) { // Recreate the return slot from scratch. // TODO: Once we import function definitions, we'll need to make sure we // use the same return storage variable in the declaration and definition. - new_function.return_storage_id = + new_function.return_slot_id = context_.AddInstInNoBlock( - AddImportIRInst(import_function.return_storage_id), + AddImportIRInst(import_function.return_slot_id), {.type_id = context_.GetTypeIdForTypeConstant(return_type_const_id), .name_id = SemIR::NameId::ReturnSlot}); diff --git a/toolchain/check/name_component.cpp b/toolchain/check/name_component.cpp index c5c04b4a8f63..356ae5c886a4 100644 --- a/toolchain/check/name_component.cpp +++ b/toolchain/check/name_component.cpp @@ -9,7 +9,8 @@ namespace Carbon::Check { -auto PopNameComponent(Context& context) -> NameComponent { +auto PopNameComponent(Context& context, SemIR::InstId return_slot_pattern_id) + -> NameComponent { Parse::NodeId first_param_node_id = Parse::InvalidNodeId(); Parse::NodeId last_param_node_id = Parse::InvalidNodeId(); @@ -42,8 +43,9 @@ auto PopNameComponent(Context& context) -> NameComponent { implicit_param_patterns_id = SemIR::InstBlockId::Invalid; } - auto [implicit_params_id, params_id] = CalleePatternMatch( - context, *implicit_param_patterns_id, *param_patterns_id); + auto [implicit_params_id, params_id, return_slot_id] = + CalleePatternMatch(context, *implicit_param_patterns_id, + *param_patterns_id, return_slot_pattern_id); auto [name_loc_id, name_id] = context.node_stack().PopNameWithNodeId(); return { @@ -57,6 +59,8 @@ auto PopNameComponent(Context& context) -> NameComponent { .params_loc_id = params_loc_id, .params_id = params_id, .param_patterns_id = *param_patterns_id, + .return_slot_pattern_id = return_slot_pattern_id, + .return_slot_id = return_slot_id, .pattern_block_id = context.pattern_block_stack().Pop(), }; } diff --git a/toolchain/check/name_component.h b/toolchain/check/name_component.h index bcaa2d8e1a61..987c6e10c7a5 100644 --- a/toolchain/check/name_component.h +++ b/toolchain/check/name_component.h @@ -36,12 +36,20 @@ struct NameComponent { SemIR::InstBlockId params_id; SemIR::InstBlockId param_patterns_id; + // The return slot. + // TODO: These are only used for function declarations. Should they go + // somewhere else? + SemIR::InstId return_slot_pattern_id; + SemIR::InstId return_slot_id; + // The pattern block. SemIR::InstBlockId pattern_block_id; }; // Pop a name component from the node stack and pattern block stack. -auto PopNameComponent(Context& context) -> NameComponent; +auto PopNameComponent(Context& context, SemIR::InstId return_slot_pattern_id = + SemIR::InstId::Invalid) + -> NameComponent; // Pop the name of a declaration from the node stack and pattern block stack, // and diagnose if it has parameters. diff --git a/toolchain/check/pattern_match.cpp b/toolchain/check/pattern_match.cpp index cf65aaa87271..d08423b86d9f 100644 --- a/toolchain/check/pattern_match.cpp +++ b/toolchain/check/pattern_match.cpp @@ -16,6 +16,22 @@ namespace Carbon::Check { namespace { +// Returns a best-effort name for the given ParamPattern, suitable for use in +// IR pretty-printing. +// TODO: Resolve overlap with SemIR::Function::ParamPatternInfo::GetNameId +auto GetPrettyName(Context& context, SemIR::ParamPattern param_pattern) + -> SemIR::NameId { + if (context.insts().Is( + param_pattern.subpattern_id)) { + return SemIR::NameId::ReturnSlot; + } + if (auto binding_pattern = context.insts().TryGetAs( + param_pattern.subpattern_id)) { + return context.entity_names().Get(binding_pattern->entity_name_id).name_id; + } + return SemIR::NameId::Invalid; +} + // Selects between the different kinds of pattern matching. enum class MatchKind { // Caller pattern matching occurs on the caller side of a function call, and @@ -48,7 +64,8 @@ class MatchContext { : next_index_(0), result_(SemIR::InstId::Invalid), kind_(kind), - callee_specific_id_(callee_specific_id) {} + callee_specific_id_(callee_specific_id), + return_slot_id_(SemIR::InstId::Invalid) {} // Returns whether there are any work items to process. auto HasWork() const -> bool { @@ -114,6 +131,12 @@ class MatchContext { return callee_specific_id_; } + auto return_slot_id() const -> SemIR::InstId { return return_slot_id_; } + + auto set_return_slot_id(SemIR::InstId return_slot_id) { + return_slot_id_ = return_slot_id; + } + private: llvm::SmallVector stack_; @@ -126,6 +149,8 @@ class MatchContext { MatchKind kind_; SemIR::SpecificId callee_specific_id_; + + SemIR::InstId return_slot_id_; }; // Emits the pattern-match insts necessary to match the pattern inst @@ -216,15 +241,25 @@ auto EmitPatternMatch(Context& context, MatchContext& match, context.ReplaceInstBeforeConstantUse(entry.pattern_id, param_pattern); } - match.AddWork({.pattern_id = param_pattern.subpattern_id, - .scrutinee_id = context.AddInst( - pattern.loc_id, - {.type_id = param_pattern.type_id, - .runtime_index = param_pattern.runtime_index})}); + match.AddWork( + {.pattern_id = param_pattern.subpattern_id, + .scrutinee_id = context.AddInst( + pattern.loc_id, + {.type_id = param_pattern.type_id, + .runtime_index = param_pattern.runtime_index, + .pretty_name_id = GetPrettyName(context, param_pattern)})}); } break; } break; } + case CARBON_KIND(SemIR::ReturnSlotPattern return_slot_pattern): { + CARBON_CHECK(match.kind() == MatchKind::Callee); + match.set_return_slot_id(context.AddInst( + pattern.loc_id, {.type_id = return_slot_pattern.type_id, + .type_inst_id = return_slot_pattern.type_inst_id, + .storage_id = entry.scrutinee_id})); + break; + } default: { CARBON_FATAL("Inst kind not handled: {0}", pattern.inst.kind()); } @@ -235,7 +270,8 @@ auto EmitPatternMatch(Context& context, MatchContext& match, auto CalleePatternMatch(Context& context, SemIR::InstBlockId implicit_param_patterns_id, - SemIR::InstBlockId param_patterns_id) + SemIR::InstBlockId param_patterns_id, + SemIR::InstId return_slot_pattern_id) -> ParameterBlocks { auto params_id = SemIR::InstBlockId::Invalid; auto implicit_params_id = SemIR::InstBlockId::Invalid; @@ -269,7 +305,17 @@ auto CalleePatternMatch(Context& context, params_id = match.ConsumeBindNames(context); } - return {.implicit_params_id = implicit_params_id, .params_id = params_id}; + if (return_slot_pattern_id.is_valid()) { + match.AddWork({.pattern_id = return_slot_pattern_id, + .scrutinee_id = SemIR::InstId::Invalid}); + while (match.HasWork()) { + EmitPatternMatch(context, match, match.NextWorkItem()); + } + } + + return {.implicit_params_id = implicit_params_id, + .params_id = params_id, + .return_slot_id = match.return_slot_id()}; } auto CallerPatternMatch(Context& context, SemIR::SpecificId specific_id, diff --git a/toolchain/check/pattern_match.h b/toolchain/check/pattern_match.h index 9c6b3833306c..ed53053ab02b 100644 --- a/toolchain/check/pattern_match.h +++ b/toolchain/check/pattern_match.h @@ -10,12 +10,16 @@ namespace Carbon::Check { +// The pattern-match counterparts of the patterns passed to CalleePatternMatch. struct ParameterBlocks { // The implicit parameter list. SemIR::InstBlockId implicit_params_id; // The explicit parameter list. SemIR::InstBlockId params_id; + + // The return slot. + SemIR::InstId return_slot_id; }; // TODO: Find a better place for this overview, once it has stabilized. @@ -30,13 +34,15 @@ struct ParameterBlocks { // callee at the semantic IR level, and "calling convention parameters" are // the corresponding semantic placeholders that they bind to. -// Emits the pattern-match IR for the declaration of a function with the -// given implicit and explicit parameter patterns. This IR performs the callee -// side of pattern matching, starting at the `ParamPattern` insts, and matching -// them against the corresponding calling-convention parameters. +// Emits the pattern-match IR for the declaration of a parameterized entity with +// the given implicit and explicit parameter patterns, and the given return slot +// pattern (any of which may be invalid if not applicable). This IR performs the +// callee side of pattern matching, starting at the `ParamPattern` insts, and +// matching them against the corresponding calling-convention parameters. auto CalleePatternMatch(Context& context, SemIR::InstBlockId implicit_param_patterns_id, - SemIR::InstBlockId param_patterns_id) + SemIR::InstBlockId param_patterns_id, + SemIR::InstId return_slot_pattern_id) -> ParameterBlocks; // Emits the pattern-match IR for matching the given argument with the given diff --git a/toolchain/check/return.cpp b/toolchain/check/return.cpp index e0a0a48410f7..3f95fcc4f29e 100644 --- a/toolchain/check/return.cpp +++ b/toolchain/check/return.cpp @@ -37,12 +37,15 @@ static auto NoteNoReturnTypeProvided(Context::DiagnosticBuilder& diag, } // Produces a note describing the return type of the given function. -static auto NoteReturnType(Context::DiagnosticBuilder& diag, - const SemIR::Function& function, - SemIR::TypeId return_type_id) { +static auto NoteReturnType(Context& context, Context::DiagnosticBuilder& diag, + const SemIR::Function& function) { + auto return_type_inst_id = + context.insts() + .GetAs(function.return_slot_id) + .type_inst_id; CARBON_DIAGNOSTIC(ReturnTypeHereNote, Note, "return type of function is {0}", - SemIR::TypeId); - diag.Note(function.return_storage_id, ReturnTypeHereNote, return_type_id); + InstIdAsType); + diag.Note(function.return_slot_id, ReturnTypeHereNote, return_type_inst_id); } // Produces a note pointing at the currently in scope `returned var`. @@ -85,7 +88,7 @@ auto CheckReturnedVar(Context& context, Parse::NodeId returned_node, SemIR::TypeId); auto diag = context.emitter().Build(type_node, ReturnedVarWrongType, type_id); - NoteReturnType(diag, function, return_info.type_id); + NoteReturnType(context, diag, function); diag.Emit(); return SemIR::InstId::BuiltinError; } @@ -93,7 +96,7 @@ auto CheckReturnedVar(Context& context, Parse::NodeId returned_node, // The variable aliases the return slot if there is one. If not, it has its // own storage. if (return_info.has_return_slot()) { - return function.return_storage_id; + return function.return_slot_id; } return context.AddInst( name_node, {.type_id = type_id, .name_id = name_id}); @@ -120,7 +123,7 @@ auto BuildReturnWithNoExpr(Context& context, Parse::ReturnStatementId node_id) CARBON_DIAGNOSTIC(ReturnStatementMissingExpr, Error, "missing return value"); auto diag = context.emitter().Build(node_id, ReturnStatementMissingExpr); - NoteReturnType(diag, function, return_type_id); + NoteReturnType(context, diag, function); diag.Emit(); } @@ -156,8 +159,8 @@ auto BuildReturnWithExpr(Context& context, Parse::ReturnStatementId node_id, // convert to it. expr_id = SemIR::InstId::BuiltinError; } else if (return_info.has_return_slot()) { - expr_id = Initialize(context, node_id, function.return_storage_id, expr_id); - return_slot_id = function.return_storage_id; + expr_id = Initialize(context, node_id, function.return_slot_id, expr_id); + return_slot_id = function.return_slot_id; } else { expr_id = ConvertToValueOfType(context, node_id, expr_id, return_info.type_id); @@ -179,7 +182,7 @@ auto BuildReturnVar(Context& context, Parse::ReturnStatementId node_id) returned_var_id = SemIR::InstId::BuiltinError; } - auto return_slot_id = function.return_storage_id; + auto return_slot_id = function.return_slot_id; if (!SemIR::ReturnTypeInfo::ForFunction(context.sem_ir(), function) .has_return_slot()) { // If we don't have a return slot, we're returning by value. Convert to a diff --git a/toolchain/check/testdata/alias/fail_bool_value.carbon b/toolchain/check/testdata/alias/fail_bool_value.carbon index b8eb93c7181f..49a6f3d324db 100644 --- a/toolchain/check/testdata/alias/fail_bool_value.carbon +++ b/toolchain/check/testdata/alias/fail_bool_value.carbon @@ -35,7 +35,7 @@ let a_test: bool = a; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/alias/fail_builtins.carbon b/toolchain/check/testdata/alias/fail_builtins.carbon index 8183e3b92b66..c923de506d7b 100644 --- a/toolchain/check/testdata/alias/fail_builtins.carbon +++ b/toolchain/check/testdata/alias/fail_builtins.carbon @@ -42,8 +42,8 @@ alias b = bool; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/alias/no_prelude/fail_local_in_namespace.carbon b/toolchain/check/testdata/alias/no_prelude/fail_local_in_namespace.carbon index 36193cc0e877..25de92ee8430 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_local_in_namespace.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_local_in_namespace.carbon @@ -41,10 +41,14 @@ fn F() -> {} { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %NS: = namespace [template] {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_12.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc13_12.2: type = converted %.loc13_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/no_prelude/fail_params.carbon b/toolchain/check/testdata/alias/no_prelude/fail_params.carbon index dbef06301893..373d7f0d2484 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_params.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_params.carbon @@ -31,8 +31,8 @@ alias A(T:! type) = T*; // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T [symbolic = constants.%T] // CHECK:STDOUT: %.loc18: type = ptr_type %T [symbolic = constants.%.1] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %param [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: %A: = bind_alias A, [template = ] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon b/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon index 9f7224ce0682..282ffcb2bdc2 100644 --- a/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon +++ b/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon @@ -49,10 +49,14 @@ fn F() -> NS.a { // CHECK:STDOUT: %a: type = bind_alias a, %C.decl [template = constants.%C] // CHECK:STDOUT: %NS.ref: = name_ref NS, %NS [template = %NS] // CHECK:STDOUT: %a.ref: type = name_ref a, %a [template = constants.%C] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %NS.ref: = name_ref NS, file.%NS [template = file.%NS] // CHECK:STDOUT: %a.ref: type = name_ref a, file.%a [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/no_prelude/local.carbon b/toolchain/check/testdata/alias/no_prelude/local.carbon index a2877f62d57b..018e83bbb2be 100644 --- a/toolchain/check/testdata/alias/no_prelude/local.carbon +++ b/toolchain/check/testdata/alias/no_prelude/local.carbon @@ -27,10 +27,14 @@ fn F() -> () { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc11_12.2: type = converted %.loc11_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/array_in_place.carbon b/toolchain/check/testdata/array/array_in_place.carbon index 7dcb7ff5e8ff..e4b2665d3cd9 100644 --- a/toolchain/check/testdata/array/array_in_place.carbon +++ b/toolchain/check/testdata/array/array_in_place.carbon @@ -47,7 +47,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -57,7 +57,10 @@ fn G() { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_22: init type = call constants.%Int32() [template = i32] @@ -69,7 +72,8 @@ fn G() { // CHECK:STDOUT: %.loc11_25.6: type = value_of_initializer %int.make_type_32.loc11_22 [template = i32] // CHECK:STDOUT: %.loc11_25.7: type = converted %int.make_type_32.loc11_22, %.loc11_25.6 [template = i32] // CHECK:STDOUT: %.loc11_25.8: type = converted %.loc11_25.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/array_vs_tuple.carbon b/toolchain/check/testdata/array/array_vs_tuple.carbon index af8b50a6bd11..db72c1074038 100644 --- a/toolchain/check/testdata/array/array_vs_tuple.carbon +++ b/toolchain/check/testdata/array/array_vs_tuple.carbon @@ -47,7 +47,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/assign_return_value.carbon b/toolchain/check/testdata/array/assign_return_value.carbon index 7bc83fc6ced7..5f0de6623178 100644 --- a/toolchain/check/testdata/array/assign_return_value.carbon +++ b/toolchain/check/testdata/array/assign_return_value.carbon @@ -45,7 +45,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -55,13 +55,17 @@ fn Run() { // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_16.1: %.2 = tuple_literal (%int.make_type_32) // CHECK:STDOUT: %.loc11_16.2: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_16.3: type = converted %int.make_type_32, %.loc11_16.2 [template = i32] // CHECK:STDOUT: %.loc11_16.4: type = converted %.loc11_16.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/assign_var.carbon b/toolchain/check/testdata/array/assign_var.carbon index 51abd4702607..6012794da1d5 100644 --- a/toolchain/check/testdata/array/assign_var.carbon +++ b/toolchain/check/testdata/array/assign_var.carbon @@ -41,7 +41,7 @@ var b: [i32; 3] = a; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/base.carbon b/toolchain/check/testdata/array/base.carbon index d3b4979d56c7..1c70499378f2 100644 --- a/toolchain/check/testdata/array/base.carbon +++ b/toolchain/check/testdata/array/base.carbon @@ -57,8 +57,8 @@ var c: [(); 5] = ((), (), (), (), (),); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/canonicalize_index.carbon b/toolchain/check/testdata/array/canonicalize_index.carbon index 1db9f05d40d7..7df7fdc96979 100644 --- a/toolchain/check/testdata/array/canonicalize_index.carbon +++ b/toolchain/check/testdata/array/canonicalize_index.carbon @@ -43,7 +43,7 @@ let b: [i32; 3]* = &a; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -59,6 +59,8 @@ let b: [i32; 3]* = &a; // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11_11 [template = i32] @@ -69,11 +71,12 @@ let b: [i32; 3]* = &a; // CHECK:STDOUT: %int.make_type_32.loc11_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_27.1: type = value_of_initializer %int.make_type_32.loc11_27 [template = i32] // CHECK:STDOUT: %.loc11_27.2: type = converted %int.make_type_32.loc11_27, %.loc11_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc13: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, %Add.decl [template = constants.%Add] diff --git a/toolchain/check/testdata/array/fail_bound_negative.carbon b/toolchain/check/testdata/array/fail_bound_negative.carbon index 515644753ff0..47bd35dddc12 100644 --- a/toolchain/check/testdata/array/fail_bound_negative.carbon +++ b/toolchain/check/testdata/array/fail_bound_negative.carbon @@ -39,7 +39,7 @@ var a: [i32; Negate(1)]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -52,6 +52,8 @@ var a: [i32; Negate(1)]; // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32.loc11_14 [template = i32] @@ -59,9 +61,10 @@ var a: [i32; Negate(1)]; // CHECK:STDOUT: %int.make_type_32.loc11_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_22.1: type = value_of_initializer %int.make_type_32.loc11_22 [template = i32] // CHECK:STDOUT: %.loc11_22.2: type = converted %int.make_type_32.loc11_22, %.loc11_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Negate.ref: %Negate.type = name_ref Negate, %Negate.decl [template = constants.%Negate] diff --git a/toolchain/check/testdata/array/fail_bound_overflow.carbon b/toolchain/check/testdata/array/fail_bound_overflow.carbon index 3fef580b13d0..54c4b1b90ecd 100644 --- a/toolchain/check/testdata/array/fail_bound_overflow.carbon +++ b/toolchain/check/testdata/array/fail_bound_overflow.carbon @@ -68,13 +68,13 @@ var b: [1; 39999999999999999993]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/fail_invalid_type.carbon b/toolchain/check/testdata/array/fail_invalid_type.carbon index 7e3f6e1c5c02..b3dc8323af82 100644 --- a/toolchain/check/testdata/array/fail_invalid_type.carbon +++ b/toolchain/check/testdata/array/fail_invalid_type.carbon @@ -52,12 +52,12 @@ var a: [1; 1]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/fail_out_of_bound.carbon b/toolchain/check/testdata/array/fail_out_of_bound.carbon index b8ff16e4c4dd..ffbb6c4fc5a6 100644 --- a/toolchain/check/testdata/array/fail_out_of_bound.carbon +++ b/toolchain/check/testdata/array/fail_out_of_bound.carbon @@ -39,7 +39,7 @@ var a: [i32; 1] = (1, 2, 3); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon b/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon index 1080b4c835ee..ac9591127c5e 100644 --- a/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon +++ b/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon @@ -44,7 +44,7 @@ var b: i32 = a[{.index = 3}.index]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/fail_type_mismatch.carbon b/toolchain/check/testdata/array/fail_type_mismatch.carbon index c34d2755ee16..b7c82939639e 100644 --- a/toolchain/check/testdata/array/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/array/fail_type_mismatch.carbon @@ -93,13 +93,13 @@ var d: [i32; 3] = t2; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/function_param.carbon b/toolchain/check/testdata/array/function_param.carbon index d241dd00347e..e50e8058d7ad 100644 --- a/toolchain/check/testdata/array/function_param.carbon +++ b/toolchain/check/testdata/array/function_param.carbon @@ -48,7 +48,7 @@ fn G() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,6 +63,8 @@ fn G() -> i32 { // CHECK:STDOUT: %arr.param_patt: %.3 = param_pattern %arr.patt, runtime_param0 // CHECK:STDOUT: %i.patt: i32 = binding_pattern i // CHECK:STDOUT: %i.param_patt: i32 = param_pattern %i.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_17: i32 = int_literal 3 [template = constants.%.2] @@ -75,17 +77,22 @@ fn G() -> i32 { // CHECK:STDOUT: %int.make_type_32.loc11_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_32.1: type = value_of_initializer %int.make_type_32.loc11_32 [template = i32] // CHECK:STDOUT: %.loc11_32.2: type = converted %int.make_type_32.loc11_32, %.loc11_32.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11_9: %.3 = param runtime_param0 -// CHECK:STDOUT: %arr: %.3 = bind_name arr, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_22: i32 = param runtime_param1 -// CHECK:STDOUT: %i: i32 = bind_name i, %param.loc11_22 +// CHECK:STDOUT: %arr.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %arr: %.3 = bind_name arr, %arr.param +// CHECK:STDOUT: %i.param: i32 = param runtime_param1 +// CHECK:STDOUT: %i: i32 = bind_name i, %i.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_11.2: type = converted %int.make_type_32, %.loc15_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/generic_empty.carbon b/toolchain/check/testdata/array/generic_empty.carbon index b0314863007b..b9a207a3e61c 100644 --- a/toolchain/check/testdata/array/generic_empty.carbon +++ b/toolchain/check/testdata/array/generic_empty.carbon @@ -50,8 +50,8 @@ fn G(T:! type) { // CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/array/index_not_literal.carbon b/toolchain/check/testdata/array/index_not_literal.carbon index 1af10f419435..a261952196f8 100644 --- a/toolchain/check/testdata/array/index_not_literal.carbon +++ b/toolchain/check/testdata/array/index_not_literal.carbon @@ -41,7 +41,7 @@ var b: i32 = a[{.index = 2}.index]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/array/nine_elements.carbon b/toolchain/check/testdata/array/nine_elements.carbon index c3539cc6fe7d..ff32df7596a6 100644 --- a/toolchain/check/testdata/array/nine_elements.carbon +++ b/toolchain/check/testdata/array/nine_elements.carbon @@ -44,7 +44,7 @@ var a: [i32; 9] = (1, 2, 3, 4, 5, 6, 7, 8, 9); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 3a80e66a4c5e..021ecddd4e21 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -138,7 +138,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -176,9 +176,13 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %.loc6_10.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] // CHECK:STDOUT: %.loc6_10.2: type = converted %int.make_type_32.loc6, %.loc6_10.1 [template = i32] // CHECK:STDOUT: %.loc6_8: %.2 = field_decl y, element1 [template] -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %A = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %A = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %return: ref %A = var +// CHECK:STDOUT: %return.param: %A = param runtime_param0 +// CHECK:STDOUT: %return: ref %A = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: @@ -274,7 +278,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -443,7 +447,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -577,13 +581,13 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.2: %As.type.1 = import_ref Core//prelude/operators/as, inst+7, loaded [template = constants.%As] // CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+14, unloaded -// CHECK:STDOUT: %import_ref.4: @As.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+33, loaded [symbolic = @As.%.2 (constants.%.12)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+26, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+26, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+26, unloaded +// CHECK:STDOUT: %import_ref.4: @As.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+36, loaded [symbolic = @As.%.2 (constants.%.12)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+29, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+29, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+29, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/as/as_type.carbon b/toolchain/check/testdata/as/as_type.carbon index 92f21564372e..1efb4fbed761 100644 --- a/toolchain/check/testdata/as/as_type.carbon +++ b/toolchain/check/testdata/as/as_type.carbon @@ -32,7 +32,7 @@ let t: type = (i32, i32) as type; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/as/basic.carbon b/toolchain/check/testdata/as/basic.carbon index 16ab92f1db34..f89c4e717faf 100644 --- a/toolchain/check/testdata/as/basic.carbon +++ b/toolchain/check/testdata/as/basic.carbon @@ -35,7 +35,7 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -44,11 +44,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32.loc11, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/fail_no_conversion.carbon b/toolchain/check/testdata/as/fail_no_conversion.carbon index f36c01b1e010..f9670b238cf0 100644 --- a/toolchain/check/testdata/as/fail_no_conversion.carbon +++ b/toolchain/check/testdata/as/fail_no_conversion.carbon @@ -58,13 +58,13 @@ let n: (i32, i32) = 1 as (i32, i32); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.2: %As.type.1 = import_ref Core//prelude/operators/as, inst+7, loaded [template = constants.%As] // CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+14, unloaded -// CHECK:STDOUT: %import_ref.4: @As.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+33, loaded [symbolic = @As.%.2 (constants.%.10)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+26, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+26, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+26, unloaded +// CHECK:STDOUT: %import_ref.4: @As.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+36, loaded [symbolic = @As.%.2 (constants.%.10)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+29, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+29, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+29, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/as/fail_not_type.carbon b/toolchain/check/testdata/as/fail_not_type.carbon index 14697aedcf8d..a5f08ac5ac0f 100644 --- a/toolchain/check/testdata/as/fail_not_type.carbon +++ b/toolchain/check/testdata/as/fail_not_type.carbon @@ -56,13 +56,13 @@ let n: i32 = 1 as 2; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/as/identity.carbon b/toolchain/check/testdata/as/identity.carbon index f541e6429e05..1ddfeda1cf59 100644 --- a/toolchain/check/testdata/as/identity.carbon +++ b/toolchain/check/testdata/as/identity.carbon @@ -76,8 +76,8 @@ fn Initializing() { // CHECK:STDOUT: %n.param_patt: %X = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref.loc17: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %param: %X = param runtime_param0 -// CHECK:STDOUT: %n: %X = bind_name n, %param +// CHECK:STDOUT: %n.param: %X = param runtime_param0 +// CHECK:STDOUT: %n: %X = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: %Reference.decl: %Reference.type = fn_decl @Reference [template = constants.%Reference] { // CHECK:STDOUT: %p.patt: %.5 = binding_pattern p @@ -85,12 +85,16 @@ fn Initializing() { // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref.loc21: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %.loc21: type = ptr_type %X [template = constants.%.5] -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %p: %.5 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %p: %.5 = bind_name p, %p.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %X = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %return: ref %X = var +// CHECK:STDOUT: %return.param: %X = param runtime_param0 +// CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Initializing.decl: %Initializing.type = fn_decl @Initializing [template = constants.%Initializing] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/as/no_prelude/tuple.carbon b/toolchain/check/testdata/as/no_prelude/tuple.carbon index 141433e9e7e7..a38ac2d0b017 100644 --- a/toolchain/check/testdata/as/no_prelude/tuple.carbon +++ b/toolchain/check/testdata/as/no_prelude/tuple.carbon @@ -52,9 +52,13 @@ fn Var() { // CHECK:STDOUT: .Var = %Var.decl // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {} -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %X = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %return: ref %X = var +// CHECK:STDOUT: %return.param: %X = param runtime_param0 +// CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Let.decl: %Let.type = fn_decl @Let [template = constants.%Let] {} {} // CHECK:STDOUT: %Var.decl: %Var.type = fn_decl @Var [template = constants.%Var] {} {} diff --git a/toolchain/check/testdata/as/overloaded.carbon b/toolchain/check/testdata/as/overloaded.carbon index cc824241c9c2..3864fd9ff731 100644 --- a/toolchain/check/testdata/as/overloaded.carbon +++ b/toolchain/check/testdata/as/overloaded.carbon @@ -78,13 +78,13 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.2: %As.type.1 = import_ref Core//prelude/operators/as, inst+7, loaded [template = constants.%As] // CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+14, unloaded -// CHECK:STDOUT: %import_ref.4: @As.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+33, loaded [symbolic = @As.%.2 (constants.%.15)] -// CHECK:STDOUT: %import_ref.5: @As.%Convert.type (%Convert.type.1) = import_ref Core//prelude/operators/as, inst+26, loaded [symbolic = @As.%Convert (constants.%Convert.1)] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+26, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+26, unloaded +// CHECK:STDOUT: %import_ref.4: @As.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+36, loaded [symbolic = @As.%.2 (constants.%.15)] +// CHECK:STDOUT: %import_ref.5: @As.%Convert.type (%Convert.type.1) = import_ref Core//prelude/operators/as, inst+29, loaded [symbolic = @As.%Convert (constants.%Convert.1)] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+29, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+29, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -142,14 +142,17 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: %Convert.decl: %Convert.type.2 = fn_decl @Convert.2 [template = constants.%Convert.2] { // CHECK:STDOUT: %self.patt: i32 = binding_pattern self // CHECK:STDOUT: %self.param_patt: i32 = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %X = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc16_20.2: type = converted %int.make_type_32, %.loc16_20.1 [template = i32] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %return: ref %X = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %self: i32 = bind_name self, %param +// CHECK:STDOUT: %self.param: i32 = param runtime_param0 +// CHECK:STDOUT: %self: i32 = bind_name self, %self.param +// CHECK:STDOUT: %return.param: %X = param runtime_param1 +// CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15_24: = interface_witness (%Convert.decl) [template = constants.%.9] // CHECK:STDOUT: @@ -162,14 +165,17 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: %Convert.decl: %Convert.type.4 = fn_decl @Convert.3 [template = constants.%Convert.4] { // CHECK:STDOUT: %self.patt: %X = binding_pattern self // CHECK:STDOUT: %self.param_patt: %X = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc20_28.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc20_28.2: type = converted %int.make_type_32, %.loc20_28.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %X = param runtime_param0 -// CHECK:STDOUT: %self: %X = bind_name self, %param +// CHECK:STDOUT: %self.param: %X = param runtime_param0 +// CHECK:STDOUT: %self: %X = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19_24: = interface_witness (%Convert.decl) [template = constants.%.13] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/builtin_types.carbon b/toolchain/check/testdata/basics/builtin_types.carbon index 727b89ecee1d..acb6873b4caa 100644 --- a/toolchain/check/testdata/basics/builtin_types.carbon +++ b/toolchain/check/testdata/basics/builtin_types.carbon @@ -41,8 +41,8 @@ var test_type: type = i32; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/basics/fail_bad_run.carbon b/toolchain/check/testdata/basics/fail_bad_run.carbon index 72b05bac5e9c..05a8f8678123 100644 --- a/toolchain/check/testdata/basics/fail_bad_run.carbon +++ b/toolchain/check/testdata/basics/fail_bad_run.carbon @@ -45,8 +45,12 @@ fn Run() -> String {} // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} { -// CHECK:STDOUT: %return: ref String = var +// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] { +// CHECK:STDOUT: %return.patt: String = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: String = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: String = param runtime_param0 +// CHECK:STDOUT: %return: ref String = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/fail_bad_run_2.carbon b/toolchain/check/testdata/basics/fail_bad_run_2.carbon index 78ff97f877c6..00f40954ce37 100644 --- a/toolchain/check/testdata/basics/fail_bad_run_2.carbon +++ b/toolchain/check/testdata/basics/fail_bad_run_2.carbon @@ -35,7 +35,7 @@ fn Run(n: i32) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -51,8 +51,8 @@ fn Run(n: i32) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_11.2: type = converted %int.make_type_32, %.loc14_11.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/fail_non_type_as_type.carbon b/toolchain/check/testdata/basics/fail_non_type_as_type.carbon index b75a9a3fed34..31fd224f65e3 100644 --- a/toolchain/check/testdata/basics/fail_non_type_as_type.carbon +++ b/toolchain/check/testdata/basics/fail_non_type_as_type.carbon @@ -52,12 +52,12 @@ var x: type = 42; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon b/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon index 8e042dee47c0..3dae38dfb049 100644 --- a/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon +++ b/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon @@ -61,8 +61,8 @@ let e: f64 = 5.0e39999999999999999993; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon b/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon index e41362c39a08..43bc8375955e 100644 --- a/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon +++ b/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon @@ -34,7 +34,7 @@ var y: i32 = x.b; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/basics/no_prelude/raw_and_textual_ir.carbon b/toolchain/check/testdata/basics/no_prelude/raw_and_textual_ir.carbon index cd27ca83b629..ece942978fc9 100644 --- a/toolchain/check/testdata/basics/no_prelude/raw_and_textual_ir.carbon +++ b/toolchain/check/testdata/basics/no_prelude/raw_and_textual_ir.carbon @@ -23,11 +23,11 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: ir0: {decl_id: inst, is_export: false} // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: inst+0, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst+16}} +// CHECK:STDOUT: name_scope0: {inst: inst+0, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst+19}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name0: {name: name1, parent_scope: name_scope, index: comp_time_bind} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, return_storage: inst+14, body: [block9]} +// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, return_slot: inst+18, body: [block9]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -35,10 +35,10 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: typeTypeType: {kind: copy, type: typeTypeType} // CHECK:STDOUT: typeError: {kind: copy, type: typeError} // CHECK:STDOUT: 'type(instNamespaceType)': {kind: copy, type: type(instNamespaceType)} -// CHECK:STDOUT: 'type(inst+17)': {kind: none, type: type(inst+1)} +// CHECK:STDOUT: 'type(inst+20)': {kind: none, type: type(inst+1)} // CHECK:STDOUT: 'type(inst+1)': {kind: none, type: type(inst+1)} -// CHECK:STDOUT: 'type(inst+9)': {kind: pointer, type: type(inst+19)} -// CHECK:STDOUT: 'type(inst+19)': {kind: copy, type: type(inst+19)} +// CHECK:STDOUT: 'type(inst+9)': {kind: pointer, type: type(inst+22)} +// CHECK:STDOUT: 'type(inst+22)': {kind: copy, type: type(inst+22)} // CHECK:STDOUT: type_blocks: // CHECK:STDOUT: type_block0: {} // CHECK:STDOUT: type_block1: @@ -49,7 +49,7 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: 'inst+1': {kind: TupleType, arg0: type_block0, type: typeTypeType} // CHECK:STDOUT: 'inst+2': {kind: TupleLiteral, arg0: empty, type: type(inst+1)} // CHECK:STDOUT: 'inst+3': {kind: Converted, arg0: inst+2, arg1: inst+1, type: typeTypeType} -// CHECK:STDOUT: 'inst+4': {kind: BindName, arg0: entity_name0, arg1: inst+15, type: type(inst+1)} +// CHECK:STDOUT: 'inst+4': {kind: BindName, arg0: entity_name0, arg1: inst+16, type: type(inst+1)} // CHECK:STDOUT: 'inst+5': {kind: BindingPattern, arg0: entity_name0, arg1: inst+4, type: type(inst+1)} // CHECK:STDOUT: 'inst+6': {kind: ParamPattern, arg0: inst+5, arg1: runtime_param0, type: type(inst+1)} // CHECK:STDOUT: 'inst+7': {kind: TupleLiteral, arg0: empty, type: type(inst+1)} @@ -59,26 +59,29 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: 'inst+11': {kind: Converted, arg0: inst+7, arg1: inst+1, type: typeTypeType} // CHECK:STDOUT: 'inst+12': {kind: Converted, arg0: inst+8, arg1: inst+1, type: typeTypeType} // CHECK:STDOUT: 'inst+13': {kind: Converted, arg0: inst+10, arg1: inst+9, type: typeTypeType} -// CHECK:STDOUT: 'inst+14': {kind: VarStorage, arg0: nameReturnSlot, type: type(inst+9)} -// CHECK:STDOUT: 'inst+15': {kind: Param, arg0: runtime_param0, type: type(inst+1)} -// CHECK:STDOUT: 'inst+16': {kind: FunctionDecl, arg0: function0, arg1: block8, type: type(inst+17)} -// CHECK:STDOUT: 'inst+17': {kind: FunctionType, arg0: function0, arg1: specific, type: typeTypeType} -// CHECK:STDOUT: 'inst+18': {kind: StructValue, arg0: empty, type: type(inst+17)} -// CHECK:STDOUT: 'inst+19': {kind: PointerType, arg0: type(inst+9), type: typeTypeType} -// CHECK:STDOUT: 'inst+20': {kind: NameRef, arg0: name1, arg1: inst+4, type: type(inst+1)} -// CHECK:STDOUT: 'inst+21': {kind: TupleLiteral, arg0: empty, type: type(inst+1)} -// CHECK:STDOUT: 'inst+22': {kind: TupleLiteral, arg0: block10, type: type(inst+9)} -// CHECK:STDOUT: 'inst+23': {kind: TupleAccess, arg0: inst+14, arg1: element0, type: type(inst+1)} -// CHECK:STDOUT: 'inst+24': {kind: TupleInit, arg0: block11, arg1: inst+23, type: type(inst+1)} -// CHECK:STDOUT: 'inst+25': {kind: TupleValue, arg0: empty, type: type(inst+1)} -// CHECK:STDOUT: 'inst+26': {kind: Converted, arg0: inst+20, arg1: inst+24, type: type(inst+1)} -// CHECK:STDOUT: 'inst+27': {kind: TupleAccess, arg0: inst+14, arg1: element1, type: type(inst+1)} -// CHECK:STDOUT: 'inst+28': {kind: TupleInit, arg0: empty, arg1: inst+27, type: type(inst+1)} -// CHECK:STDOUT: 'inst+29': {kind: Converted, arg0: inst+21, arg1: inst+28, type: type(inst+1)} -// CHECK:STDOUT: 'inst+30': {kind: TupleInit, arg0: block12, arg1: inst+14, type: type(inst+9)} -// CHECK:STDOUT: 'inst+31': {kind: TupleValue, arg0: block13, type: type(inst+9)} -// CHECK:STDOUT: 'inst+32': {kind: Converted, arg0: inst+22, arg1: inst+30, type: type(inst+9)} -// CHECK:STDOUT: 'inst+33': {kind: ReturnExpr, arg0: inst+32, arg1: inst+14} +// CHECK:STDOUT: 'inst+14': {kind: ReturnSlotPattern, arg0: inst+10, type: type(inst+9)} +// CHECK:STDOUT: 'inst+15': {kind: ParamPattern, arg0: inst+14, arg1: runtime_param1, type: type(inst+9)} +// CHECK:STDOUT: 'inst+16': {kind: Param, arg0: runtime_param0, arg1: name1, type: type(inst+1)} +// CHECK:STDOUT: 'inst+17': {kind: Param, arg0: runtime_param1, arg1: nameReturnSlot, type: type(inst+9)} +// CHECK:STDOUT: 'inst+18': {kind: ReturnSlot, arg0: inst+10, arg1: inst+17, type: type(inst+9)} +// CHECK:STDOUT: 'inst+19': {kind: FunctionDecl, arg0: function0, arg1: block8, type: type(inst+20)} +// CHECK:STDOUT: 'inst+20': {kind: FunctionType, arg0: function0, arg1: specific, type: typeTypeType} +// CHECK:STDOUT: 'inst+21': {kind: StructValue, arg0: empty, type: type(inst+20)} +// CHECK:STDOUT: 'inst+22': {kind: PointerType, arg0: type(inst+9), type: typeTypeType} +// CHECK:STDOUT: 'inst+23': {kind: NameRef, arg0: name1, arg1: inst+4, type: type(inst+1)} +// CHECK:STDOUT: 'inst+24': {kind: TupleLiteral, arg0: empty, type: type(inst+1)} +// CHECK:STDOUT: 'inst+25': {kind: TupleLiteral, arg0: block10, type: type(inst+9)} +// CHECK:STDOUT: 'inst+26': {kind: TupleAccess, arg0: inst+18, arg1: element0, type: type(inst+1)} +// CHECK:STDOUT: 'inst+27': {kind: TupleInit, arg0: block11, arg1: inst+26, type: type(inst+1)} +// CHECK:STDOUT: 'inst+28': {kind: TupleValue, arg0: empty, type: type(inst+1)} +// CHECK:STDOUT: 'inst+29': {kind: Converted, arg0: inst+23, arg1: inst+27, type: type(inst+1)} +// CHECK:STDOUT: 'inst+30': {kind: TupleAccess, arg0: inst+18, arg1: element1, type: type(inst+1)} +// CHECK:STDOUT: 'inst+31': {kind: TupleInit, arg0: empty, arg1: inst+30, type: type(inst+1)} +// CHECK:STDOUT: 'inst+32': {kind: Converted, arg0: inst+24, arg1: inst+31, type: type(inst+1)} +// CHECK:STDOUT: 'inst+33': {kind: TupleInit, arg0: block12, arg1: inst+18, type: type(inst+9)} +// CHECK:STDOUT: 'inst+34': {kind: TupleValue, arg0: block13, type: type(inst+9)} +// CHECK:STDOUT: 'inst+35': {kind: Converted, arg0: inst+25, arg1: inst+33, type: type(inst+9)} +// CHECK:STDOUT: 'inst+36': {kind: ReturnExpr, arg0: inst+35, arg1: inst+18} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: 'inst+0': templateConstant(inst+0) // CHECK:STDOUT: 'inst+1': templateConstant(inst+1) @@ -87,23 +90,23 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: 'inst+11': templateConstant(inst+1) // CHECK:STDOUT: 'inst+12': templateConstant(inst+1) // CHECK:STDOUT: 'inst+13': templateConstant(inst+9) -// CHECK:STDOUT: 'inst+16': templateConstant(inst+18) -// CHECK:STDOUT: 'inst+17': templateConstant(inst+17) -// CHECK:STDOUT: 'inst+18': templateConstant(inst+18) -// CHECK:STDOUT: 'inst+19': templateConstant(inst+19) -// CHECK:STDOUT: 'inst+24': templateConstant(inst+25) -// CHECK:STDOUT: 'inst+25': templateConstant(inst+25) -// CHECK:STDOUT: 'inst+26': templateConstant(inst+25) -// CHECK:STDOUT: 'inst+28': templateConstant(inst+25) -// CHECK:STDOUT: 'inst+29': templateConstant(inst+25) -// CHECK:STDOUT: 'inst+30': templateConstant(inst+31) -// CHECK:STDOUT: 'inst+31': templateConstant(inst+31) -// CHECK:STDOUT: 'inst+32': templateConstant(inst+31) +// CHECK:STDOUT: 'inst+19': templateConstant(inst+21) +// CHECK:STDOUT: 'inst+20': templateConstant(inst+20) +// CHECK:STDOUT: 'inst+21': templateConstant(inst+21) +// CHECK:STDOUT: 'inst+22': templateConstant(inst+22) +// CHECK:STDOUT: 'inst+27': templateConstant(inst+28) +// CHECK:STDOUT: 'inst+28': templateConstant(inst+28) +// CHECK:STDOUT: 'inst+29': templateConstant(inst+28) +// CHECK:STDOUT: 'inst+31': templateConstant(inst+28) +// CHECK:STDOUT: 'inst+32': templateConstant(inst+28) +// CHECK:STDOUT: 'inst+33': templateConstant(inst+34) +// CHECK:STDOUT: 'inst+34': templateConstant(inst+34) +// CHECK:STDOUT: 'inst+35': templateConstant(inst+34) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst+16 +// CHECK:STDOUT: 0: inst+19 // CHECK:STDOUT: import_refs: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: block4: @@ -116,6 +119,8 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: block7: // CHECK:STDOUT: 0: inst+5 // CHECK:STDOUT: 1: inst+6 +// CHECK:STDOUT: 2: inst+14 +// CHECK:STDOUT: 3: inst+15 // CHECK:STDOUT: block8: // CHECK:STDOUT: 0: inst+2 // CHECK:STDOUT: 1: inst+3 @@ -125,35 +130,36 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: 5: inst+11 // CHECK:STDOUT: 6: inst+12 // CHECK:STDOUT: 7: inst+13 -// CHECK:STDOUT: 8: inst+14 -// CHECK:STDOUT: 9: inst+15 -// CHECK:STDOUT: 10: inst+4 +// CHECK:STDOUT: 8: inst+16 +// CHECK:STDOUT: 9: inst+4 +// CHECK:STDOUT: 10: inst+17 +// CHECK:STDOUT: 11: inst+18 // CHECK:STDOUT: block9: -// CHECK:STDOUT: 0: inst+20 -// CHECK:STDOUT: 1: inst+21 -// CHECK:STDOUT: 2: inst+22 -// CHECK:STDOUT: 3: inst+23 -// CHECK:STDOUT: 4: inst+24 -// CHECK:STDOUT: 5: inst+26 -// CHECK:STDOUT: 6: inst+27 -// CHECK:STDOUT: 7: inst+28 -// CHECK:STDOUT: 8: inst+29 -// CHECK:STDOUT: 9: inst+30 -// CHECK:STDOUT: 10: inst+32 -// CHECK:STDOUT: 11: inst+33 +// CHECK:STDOUT: 0: inst+23 +// CHECK:STDOUT: 1: inst+24 +// CHECK:STDOUT: 2: inst+25 +// CHECK:STDOUT: 3: inst+26 +// CHECK:STDOUT: 4: inst+27 +// CHECK:STDOUT: 5: inst+29 +// CHECK:STDOUT: 6: inst+30 +// CHECK:STDOUT: 7: inst+31 +// CHECK:STDOUT: 8: inst+32 +// CHECK:STDOUT: 9: inst+33 +// CHECK:STDOUT: 10: inst+35 +// CHECK:STDOUT: 11: inst+36 // CHECK:STDOUT: block10: -// CHECK:STDOUT: 0: inst+20 -// CHECK:STDOUT: 1: inst+21 +// CHECK:STDOUT: 0: inst+23 +// CHECK:STDOUT: 1: inst+24 // CHECK:STDOUT: block11: {} // CHECK:STDOUT: block12: -// CHECK:STDOUT: 0: inst+26 -// CHECK:STDOUT: 1: inst+29 +// CHECK:STDOUT: 0: inst+29 +// CHECK:STDOUT: 1: inst+32 // CHECK:STDOUT: block13: -// CHECK:STDOUT: 0: inst+25 -// CHECK:STDOUT: 1: inst+25 +// CHECK:STDOUT: 0: inst+28 +// CHECK:STDOUT: 1: inst+28 // CHECK:STDOUT: block14: // CHECK:STDOUT: 0: inst+0 -// CHECK:STDOUT: 1: inst+16 +// CHECK:STDOUT: 1: inst+19 // CHECK:STDOUT: ... // CHECK:STDOUT: // CHECK:STDOUT: --- raw_and_textual_ir.carbon @@ -175,6 +181,8 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %n.patt: %.1 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.1 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%.1 [template = constants.%.1] @@ -184,9 +192,10 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %.loc15_25.2: type = converted %.loc15_20, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc15_25.3: type = converted %.loc15_24, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc15_25.4: type = converted %.loc15_25.1, constants.%.2 [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %n: %.1 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.2 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/no_prelude/raw_identifier.carbon b/toolchain/check/testdata/basics/no_prelude/raw_identifier.carbon index 2c2418a54452..54320f9ea5a8 100644 --- a/toolchain/check/testdata/basics/no_prelude/raw_identifier.carbon +++ b/toolchain/check/testdata/basics/no_prelude/raw_identifier.carbon @@ -45,38 +45,47 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { // CHECK:STDOUT: %n.patt: %.1 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.1 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc15_10.2: type = converted %.loc15_10.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc15_17.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc15_17.2: type = converted %.loc15_17.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %n: %.1 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %n.patt: %.1 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.1 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc19_12.2: type = converted %.loc19_12.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc19_19.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc19_19.2: type = converted %.loc19_19.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %n: %.1 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { // CHECK:STDOUT: %if.patt: %.1 = binding_pattern r#if // CHECK:STDOUT: %if.param_patt: %.1 = param_pattern %if.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc23_13.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc23_13.2: type = converted %.loc23_13.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc23_20.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc23_20.2: type = converted %.loc23_20.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %if: %.1 = bind_name r#if, %param +// CHECK:STDOUT: %if.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %if: %.1 = bind_name r#if, %if.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/no_prelude/raw_ir.carbon b/toolchain/check/testdata/basics/no_prelude/raw_ir.carbon index f8eccebc0440..bf1af9a8ff35 100644 --- a/toolchain/check/testdata/basics/no_prelude/raw_ir.carbon +++ b/toolchain/check/testdata/basics/no_prelude/raw_ir.carbon @@ -23,22 +23,22 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: ir0: {decl_id: inst, is_export: false} // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: inst+0, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst+21}} +// CHECK:STDOUT: name_scope0: {inst: inst+0, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst+24}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name0: {name: name1, parent_scope: name_scope, index: comp_time_bind0} // CHECK:STDOUT: entity_name1: {name: name2, parent_scope: name_scope, index: comp_time_bind} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, return_storage: inst+18, body: [block15]} +// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, return_slot: inst+23, body: [block15]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: -// CHECK:STDOUT: generic0: {decl: inst+21, bindings: block11} +// CHECK:STDOUT: generic0: {decl: inst+24, bindings: block11} // CHECK:STDOUT: specifics: // CHECK:STDOUT: specific0: {generic: generic0, args: block13} // CHECK:STDOUT: types: // CHECK:STDOUT: typeTypeType: {kind: copy, type: typeTypeType} // CHECK:STDOUT: typeError: {kind: copy, type: typeError} // CHECK:STDOUT: 'type(instNamespaceType)': {kind: copy, type: type(instNamespaceType)} -// CHECK:STDOUT: 'type(inst+25)': {kind: none, type: type(inst+11)} +// CHECK:STDOUT: 'type(inst+28)': {kind: none, type: type(inst+11)} // CHECK:STDOUT: 'type(inst+11)': {kind: none, type: type(inst+11)} // CHECK:STDOUT: 'type(symbolicConstant0)': {kind: copy, type: type(symbolicConstant0)} // CHECK:STDOUT: 'type(symbolicConstant2)': {kind: pointer, type: type(symbolicConstant6)} @@ -58,13 +58,13 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: 1: type(inst+11) // CHECK:STDOUT: insts: // CHECK:STDOUT: 'inst+0': {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(instNamespaceType)} -// CHECK:STDOUT: 'inst+1': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst+19, type: typeTypeType} +// CHECK:STDOUT: 'inst+1': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst+20, type: typeTypeType} // CHECK:STDOUT: 'inst+2': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst, type: typeTypeType} // CHECK:STDOUT: 'inst+3': {kind: SymbolicBindingPattern, arg0: entity_name0, arg1: inst+1, type: typeTypeType} // CHECK:STDOUT: 'inst+4': {kind: SymbolicBindingPattern, arg0: entity_name0, arg1: inst+1, type: typeTypeType} // CHECK:STDOUT: 'inst+5': {kind: ParamPattern, arg0: inst+3, arg1: runtime_param, type: typeTypeType} // CHECK:STDOUT: 'inst+6': {kind: NameRef, arg0: name1, arg1: inst+1, type: typeTypeType} -// CHECK:STDOUT: 'inst+7': {kind: BindName, arg0: entity_name1, arg1: inst+20, type: type(symbolicConstant3)} +// CHECK:STDOUT: 'inst+7': {kind: BindName, arg0: entity_name1, arg1: inst+21, type: type(symbolicConstant3)} // CHECK:STDOUT: 'inst+8': {kind: BindingPattern, arg0: entity_name1, arg1: inst+7, type: type(symbolicConstant3)} // CHECK:STDOUT: 'inst+9': {kind: ParamPattern, arg0: inst+8, arg1: runtime_param0, type: type(symbolicConstant3)} // CHECK:STDOUT: 'inst+10': {kind: NameRef, arg0: name1, arg1: inst+1, type: typeTypeType} @@ -75,28 +75,31 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: 'inst+15': {kind: Converted, arg0: inst+12, arg1: inst+11, type: typeTypeType} // CHECK:STDOUT: 'inst+16': {kind: TupleType, arg0: type_block2, type: typeTypeType} // CHECK:STDOUT: 'inst+17': {kind: Converted, arg0: inst+14, arg1: inst+16, type: typeTypeType} -// CHECK:STDOUT: 'inst+18': {kind: VarStorage, arg0: nameReturnSlot, type: type(symbolicConstant5)} -// CHECK:STDOUT: 'inst+19': {kind: Param, arg0: runtime_param, type: typeTypeType} -// CHECK:STDOUT: 'inst+20': {kind: Param, arg0: runtime_param0, type: type(symbolicConstant3)} -// CHECK:STDOUT: 'inst+21': {kind: FunctionDecl, arg0: function0, arg1: block10, type: type(inst+25)} -// CHECK:STDOUT: 'inst+22': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst, type: typeTypeType} -// CHECK:STDOUT: 'inst+23': {kind: SymbolicBindingPattern, arg0: entity_name0, arg1: inst+1, type: typeTypeType} -// CHECK:STDOUT: 'inst+24': {kind: TupleType, arg0: type_block3, type: typeTypeType} -// CHECK:STDOUT: 'inst+25': {kind: FunctionType, arg0: function0, arg1: specific, type: typeTypeType} -// CHECK:STDOUT: 'inst+26': {kind: StructValue, arg0: empty, type: type(inst+25)} -// CHECK:STDOUT: 'inst+27': {kind: PointerType, arg0: type(symbolicConstant2), type: typeTypeType} -// CHECK:STDOUT: 'inst+28': {kind: NameRef, arg0: name2, arg1: inst+7, type: type(symbolicConstant3)} -// CHECK:STDOUT: 'inst+29': {kind: TupleLiteral, arg0: empty, type: type(inst+11)} -// CHECK:STDOUT: 'inst+30': {kind: TupleLiteral, arg0: block16, type: type(symbolicConstant5)} -// CHECK:STDOUT: 'inst+31': {kind: TupleAccess, arg0: inst+18, arg1: element0, type: type(symbolicConstant3)} -// CHECK:STDOUT: 'inst+32': {kind: InitializeFrom, arg0: inst+28, arg1: inst+31, type: type(symbolicConstant3)} -// CHECK:STDOUT: 'inst+33': {kind: TupleAccess, arg0: inst+18, arg1: element1, type: type(inst+11)} -// CHECK:STDOUT: 'inst+34': {kind: TupleInit, arg0: empty, arg1: inst+33, type: type(inst+11)} -// CHECK:STDOUT: 'inst+35': {kind: TupleValue, arg0: empty, type: type(inst+11)} -// CHECK:STDOUT: 'inst+36': {kind: Converted, arg0: inst+29, arg1: inst+34, type: type(inst+11)} -// CHECK:STDOUT: 'inst+37': {kind: TupleInit, arg0: block17, arg1: inst+18, type: type(symbolicConstant5)} -// CHECK:STDOUT: 'inst+38': {kind: Converted, arg0: inst+30, arg1: inst+37, type: type(symbolicConstant5)} -// CHECK:STDOUT: 'inst+39': {kind: ReturnExpr, arg0: inst+38, arg1: inst+18} +// CHECK:STDOUT: 'inst+18': {kind: ReturnSlotPattern, arg0: inst+14, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+19': {kind: ParamPattern, arg0: inst+18, arg1: runtime_param1, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+20': {kind: Param, arg0: runtime_param, arg1: name1, type: typeTypeType} +// CHECK:STDOUT: 'inst+21': {kind: Param, arg0: runtime_param0, arg1: name2, type: type(symbolicConstant3)} +// CHECK:STDOUT: 'inst+22': {kind: Param, arg0: runtime_param1, arg1: nameReturnSlot, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+23': {kind: ReturnSlot, arg0: inst+14, arg1: inst+22, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+24': {kind: FunctionDecl, arg0: function0, arg1: block10, type: type(inst+28)} +// CHECK:STDOUT: 'inst+25': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst, type: typeTypeType} +// CHECK:STDOUT: 'inst+26': {kind: SymbolicBindingPattern, arg0: entity_name0, arg1: inst+1, type: typeTypeType} +// CHECK:STDOUT: 'inst+27': {kind: TupleType, arg0: type_block3, type: typeTypeType} +// CHECK:STDOUT: 'inst+28': {kind: FunctionType, arg0: function0, arg1: specific, type: typeTypeType} +// CHECK:STDOUT: 'inst+29': {kind: StructValue, arg0: empty, type: type(inst+28)} +// CHECK:STDOUT: 'inst+30': {kind: PointerType, arg0: type(symbolicConstant2), type: typeTypeType} +// CHECK:STDOUT: 'inst+31': {kind: NameRef, arg0: name2, arg1: inst+7, type: type(symbolicConstant3)} +// CHECK:STDOUT: 'inst+32': {kind: TupleLiteral, arg0: empty, type: type(inst+11)} +// CHECK:STDOUT: 'inst+33': {kind: TupleLiteral, arg0: block16, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+34': {kind: TupleAccess, arg0: inst+23, arg1: element0, type: type(symbolicConstant3)} +// CHECK:STDOUT: 'inst+35': {kind: InitializeFrom, arg0: inst+31, arg1: inst+34, type: type(symbolicConstant3)} +// CHECK:STDOUT: 'inst+36': {kind: TupleAccess, arg0: inst+23, arg1: element1, type: type(inst+11)} +// CHECK:STDOUT: 'inst+37': {kind: TupleInit, arg0: empty, arg1: inst+36, type: type(inst+11)} +// CHECK:STDOUT: 'inst+38': {kind: TupleValue, arg0: empty, type: type(inst+11)} +// CHECK:STDOUT: 'inst+39': {kind: Converted, arg0: inst+32, arg1: inst+37, type: type(inst+11)} +// CHECK:STDOUT: 'inst+40': {kind: TupleInit, arg0: block17, arg1: inst+23, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+41': {kind: Converted, arg0: inst+33, arg1: inst+40, type: type(symbolicConstant5)} +// CHECK:STDOUT: 'inst+42': {kind: ReturnExpr, arg0: inst+41, arg1: inst+23} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: 'inst+0': templateConstant(inst+0) // CHECK:STDOUT: 'inst+1': symbolicConstant3 @@ -111,16 +114,16 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: 'inst+15': templateConstant(inst+11) // CHECK:STDOUT: 'inst+16': symbolicConstant2 // CHECK:STDOUT: 'inst+17': symbolicConstant5 -// CHECK:STDOUT: 'inst+21': templateConstant(inst+26) -// CHECK:STDOUT: 'inst+22': symbolicConstant3 -// CHECK:STDOUT: 'inst+23': symbolicConstant4 -// CHECK:STDOUT: 'inst+24': symbolicConstant5 -// CHECK:STDOUT: 'inst+25': templateConstant(inst+25) -// CHECK:STDOUT: 'inst+26': templateConstant(inst+26) -// CHECK:STDOUT: 'inst+27': symbolicConstant6 -// CHECK:STDOUT: 'inst+34': templateConstant(inst+35) -// CHECK:STDOUT: 'inst+35': templateConstant(inst+35) -// CHECK:STDOUT: 'inst+36': templateConstant(inst+35) +// CHECK:STDOUT: 'inst+24': templateConstant(inst+29) +// CHECK:STDOUT: 'inst+25': symbolicConstant3 +// CHECK:STDOUT: 'inst+26': symbolicConstant4 +// CHECK:STDOUT: 'inst+27': symbolicConstant5 +// CHECK:STDOUT: 'inst+28': templateConstant(inst+28) +// CHECK:STDOUT: 'inst+29': templateConstant(inst+29) +// CHECK:STDOUT: 'inst+30': symbolicConstant6 +// CHECK:STDOUT: 'inst+37': templateConstant(inst+38) +// CHECK:STDOUT: 'inst+38': templateConstant(inst+38) +// CHECK:STDOUT: 'inst+39': templateConstant(inst+38) // CHECK:STDOUT: symbolic_constants: // CHECK:STDOUT: symbolicConstant0: {inst: inst+2, generic: generic, index: genericInst} // CHECK:STDOUT: symbolicConstant1: {inst: inst+4, generic: generic, index: genericInst} @@ -128,11 +131,11 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: symbolicConstant3: {inst: inst+2, generic: generic0, index: genericInstInDecl0} // CHECK:STDOUT: symbolicConstant4: {inst: inst+4, generic: generic0, index: genericInstInDecl1} // CHECK:STDOUT: symbolicConstant5: {inst: inst+16, generic: generic0, index: genericInstInDecl2} -// CHECK:STDOUT: symbolicConstant6: {inst: inst+27, generic: generic, index: genericInst} +// CHECK:STDOUT: symbolicConstant6: {inst: inst+30, generic: generic, index: genericInst} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst+21 +// CHECK:STDOUT: 0: inst+24 // CHECK:STDOUT: import_refs: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: block4: @@ -151,6 +154,8 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: 1: inst+5 // CHECK:STDOUT: 2: inst+8 // CHECK:STDOUT: 3: inst+9 +// CHECK:STDOUT: 4: inst+18 +// CHECK:STDOUT: 5: inst+19 // CHECK:STDOUT: block10: // CHECK:STDOUT: 0: inst+6 // CHECK:STDOUT: 1: inst+10 @@ -158,17 +163,18 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: 3: inst+14 // CHECK:STDOUT: 4: inst+15 // CHECK:STDOUT: 5: inst+17 -// CHECK:STDOUT: 6: inst+18 -// CHECK:STDOUT: 7: inst+19 -// CHECK:STDOUT: 8: inst+1 -// CHECK:STDOUT: 9: inst+20 -// CHECK:STDOUT: 10: inst+7 +// CHECK:STDOUT: 6: inst+20 +// CHECK:STDOUT: 7: inst+1 +// CHECK:STDOUT: 8: inst+21 +// CHECK:STDOUT: 9: inst+7 +// CHECK:STDOUT: 10: inst+22 +// CHECK:STDOUT: 11: inst+23 // CHECK:STDOUT: block11: // CHECK:STDOUT: 0: inst+1 // CHECK:STDOUT: block12: -// CHECK:STDOUT: 0: inst+22 -// CHECK:STDOUT: 1: inst+23 -// CHECK:STDOUT: 2: inst+24 +// CHECK:STDOUT: 0: inst+25 +// CHECK:STDOUT: 1: inst+26 +// CHECK:STDOUT: 2: inst+27 // CHECK:STDOUT: block13: // CHECK:STDOUT: 0: inst+2 // CHECK:STDOUT: block14: @@ -176,24 +182,24 @@ fn Foo[T:! type](n: T) -> (T, ()) { // CHECK:STDOUT: 1: inst+2 // CHECK:STDOUT: 2: inst+16 // CHECK:STDOUT: block15: -// CHECK:STDOUT: 0: inst+28 -// CHECK:STDOUT: 1: inst+29 -// CHECK:STDOUT: 2: inst+30 -// CHECK:STDOUT: 3: inst+31 -// CHECK:STDOUT: 4: inst+32 -// CHECK:STDOUT: 5: inst+33 -// CHECK:STDOUT: 6: inst+34 -// CHECK:STDOUT: 7: inst+36 -// CHECK:STDOUT: 8: inst+37 -// CHECK:STDOUT: 9: inst+38 -// CHECK:STDOUT: 10: inst+39 +// CHECK:STDOUT: 0: inst+31 +// CHECK:STDOUT: 1: inst+32 +// CHECK:STDOUT: 2: inst+33 +// CHECK:STDOUT: 3: inst+34 +// CHECK:STDOUT: 4: inst+35 +// CHECK:STDOUT: 5: inst+36 +// CHECK:STDOUT: 6: inst+37 +// CHECK:STDOUT: 7: inst+39 +// CHECK:STDOUT: 8: inst+40 +// CHECK:STDOUT: 9: inst+41 +// CHECK:STDOUT: 10: inst+42 // CHECK:STDOUT: block16: -// CHECK:STDOUT: 0: inst+28 -// CHECK:STDOUT: 1: inst+29 +// CHECK:STDOUT: 0: inst+31 +// CHECK:STDOUT: 1: inst+32 // CHECK:STDOUT: block17: -// CHECK:STDOUT: 0: inst+32 -// CHECK:STDOUT: 1: inst+36 +// CHECK:STDOUT: 0: inst+35 +// CHECK:STDOUT: 1: inst+39 // CHECK:STDOUT: block18: // CHECK:STDOUT: 0: inst+0 -// CHECK:STDOUT: 1: inst+21 +// CHECK:STDOUT: 1: inst+24 // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/no_prelude/textual_ir.carbon b/toolchain/check/testdata/basics/no_prelude/textual_ir.carbon index 38a6caa90148..8d38110f5462 100644 --- a/toolchain/check/testdata/basics/no_prelude/textual_ir.carbon +++ b/toolchain/check/testdata/basics/no_prelude/textual_ir.carbon @@ -35,6 +35,8 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %n.patt: %.1 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.1 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%.1 [template = constants.%.1] @@ -44,9 +46,10 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %.loc15_25.2: type = converted %.loc15_20, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc15_25.3: type = converted %.loc15_24, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc15_25.4: type = converted %.loc15_25.1, constants.%.2 [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %n: %.1 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.2 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/numeric_literals.carbon b/toolchain/check/testdata/basics/numeric_literals.carbon index 84ec6d914084..a652d5b218ad 100644 --- a/toolchain/check/testdata/basics/numeric_literals.carbon +++ b/toolchain/check/testdata/basics/numeric_literals.carbon @@ -79,8 +79,8 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/basics/parens.carbon b/toolchain/check/testdata/basics/parens.carbon index d3a9389e6f2e..40417c4730b7 100644 --- a/toolchain/check/testdata/basics/parens.carbon +++ b/toolchain/check/testdata/basics/parens.carbon @@ -33,7 +33,7 @@ var b: i32 = ((2)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/basics/run_i32.carbon b/toolchain/check/testdata/basics/run_i32.carbon index 7a23300295c7..891f2ed57253 100644 --- a/toolchain/check/testdata/basics/run_i32.carbon +++ b/toolchain/check/testdata/basics/run_i32.carbon @@ -33,7 +33,7 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -42,11 +42,15 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} { +// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_13.2: type = converted %int.make_type_32, %.loc11_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/type_literals.carbon b/toolchain/check/testdata/basics/type_literals.carbon index e5135a6c2f5b..6a2b148831c5 100644 --- a/toolchain/check/testdata/basics/type_literals.carbon +++ b/toolchain/check/testdata/basics/type_literals.carbon @@ -137,7 +137,7 @@ var test_f128: f128; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int.type = import_ref Core//prelude/types, inst+20, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref: %Int.type = import_ref Core//prelude/types, inst+29, loaded [template = constants.%Int] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -195,7 +195,7 @@ var test_f128: f128; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int.type = import_ref Core//prelude/types, inst+20, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref: %Int.type = import_ref Core//prelude/types, inst+29, loaded [template = constants.%Int] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -264,7 +264,7 @@ var test_f128: f128; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Core//prelude/types, inst+31, loaded [template = constants.%UInt] +// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Core//prelude/types, inst+43, loaded [template = constants.%UInt] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -322,7 +322,7 @@ var test_f128: f128; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Core//prelude/types, inst+31, loaded [template = constants.%UInt] +// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Core//prelude/types, inst+43, loaded [template = constants.%UInt] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/builtins/big_int/make_type.carbon b/toolchain/check/testdata/builtins/big_int/make_type.carbon index ced8986dfa8b..76a91bac80b0 100644 --- a/toolchain/check/testdata/builtins/big_int/make_type.carbon +++ b/toolchain/check/testdata/builtins/big_int/make_type.carbon @@ -49,8 +49,12 @@ var i: BigInt(); // CHECK:STDOUT: .BigInt = %BigInt.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %BigInt.decl: %BigInt.type = fn_decl @BigInt [template = constants.%BigInt] {} { -// CHECK:STDOUT: %return: ref type = var +// CHECK:STDOUT: %BigInt.decl: %BigInt.type = fn_decl @BigInt [template = constants.%BigInt] { +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: type = param runtime_param0 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -65,7 +69,7 @@ var i: BigInt(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %BigInt.type = import_ref Main//types, inst+4, loaded [template = constants.%BigInt] +// CHECK:STDOUT: %import_ref: %BigInt.type = import_ref Main//types, inst+7, loaded [template = constants.%BigInt] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/builtins/bool/make_type.carbon b/toolchain/check/testdata/builtins/bool/make_type.carbon index 83d48650bc92..b33a2d5f2f90 100644 --- a/toolchain/check/testdata/builtins/bool/make_type.carbon +++ b/toolchain/check/testdata/builtins/bool/make_type.carbon @@ -49,8 +49,12 @@ var b: Bool() = false; // CHECK:STDOUT: .Bool = %Bool.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Bool.decl: %Bool.type = fn_decl @Bool [template = constants.%Bool] {} { -// CHECK:STDOUT: %return: ref type = var +// CHECK:STDOUT: %Bool.decl: %Bool.type = fn_decl @Bool [template = constants.%Bool] { +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: type = param runtime_param0 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -66,7 +70,7 @@ var b: Bool() = false; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Main//types, inst+4, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Main//types, inst+7, loaded [template = constants.%Bool] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/builtins/float/add.carbon b/toolchain/check/testdata/builtins/float/add.carbon index 812393b04a09..eeaace13d910 100644 --- a/toolchain/check/testdata/builtins/float/add.carbon +++ b/toolchain/check/testdata/builtins/float/add.carbon @@ -78,7 +78,7 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,6 +94,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_11.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_11: init type = call constants.%Float(%.loc2_11.1) [template = f64] @@ -107,17 +109,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc2_27: init type = call constants.%Float(%.loc2_27.1) [template = f64] // CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %float.make_type.loc2_27 [template = f64] // CHECK:STDOUT: %.loc2_27.3: type = converted %float.make_type.loc2_27, %.loc2_27.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc2_9: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc4_19: init type = call constants.%Float(%.loc4_19.1) [template = f64] @@ -131,11 +136,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc4_35: init type = call constants.%Float(%.loc4_35.1) [template = f64] // CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %float.make_type.loc4_35 [template = f64] // CHECK:STDOUT: %.loc4_35.3: type = converted %float.make_type.loc4_35, %.loc4_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc4_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc4_17 -// CHECK:STDOUT: %param.loc4_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc4_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_8.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc8_8.1) [template = f64] @@ -208,8 +214,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -227,6 +233,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc8_14: init type = call constants.%Float(%.loc8_14.1) [template = f64] @@ -236,9 +244,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc8_22: init type = call constants.%Float(%.loc8_22.1) [template = f64] // CHECK:STDOUT: %.loc8_22.2: type = value_of_initializer %float.make_type.loc8_22 [template = f64] // CHECK:STDOUT: %.loc8_22.3: type = converted %float.make_type.loc8_22, %.loc8_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -247,6 +256,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_15.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc13_15: init type = call constants.%Float(%.loc13_15.1) [template = f64] @@ -264,19 +275,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc13_39: init type = call constants.%Float(%.loc13_39.1) [template = f64] // CHECK:STDOUT: %.loc13_39.2: type = value_of_initializer %float.make_type.loc13_39 [template = f64] // CHECK:STDOUT: %.loc13_39.3: type = converted %float.make_type.loc13_39, %.loc13_39.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc13_13: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc13_21 -// CHECK:STDOUT: %param.loc13_29: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc13_29 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_21.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc17_21: init type = call constants.%Float(%.loc17_21.1) [template = f64] @@ -289,17 +303,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc17_37.2: type = converted %bool.make_type, %.loc17_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc17_19: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc17_19 -// CHECK:STDOUT: %param.loc17_27: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc17_27 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_17.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc18_17: init type = call constants.%Float(%.loc18_17.1) [template = f64] @@ -313,15 +330,18 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc18_33: init type = call constants.%Float(%.loc18_33.1) [template = f64] // CHECK:STDOUT: %.loc18_33.2: type = value_of_initializer %float.make_type.loc18_33 [template = f64] // CHECK:STDOUT: %.loc18_33.3: type = converted %float.make_type.loc18_33, %.loc18_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc18_15: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc18_15 -// CHECK:STDOUT: %param.loc18_23: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc18_23 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_25.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc20_25: init type = call constants.%Float(%.loc20_25.1) [template = f64] @@ -331,9 +351,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc20_33: init type = call constants.%Float(%.loc20_33.1) [template = f64] // CHECK:STDOUT: %.loc20_33.2: type = value_of_initializer %float.make_type.loc20_33 [template = f64] // CHECK:STDOUT: %.loc20_33.3: type = converted %float.make_type.loc20_33, %.loc20_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -342,6 +363,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc24_26.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc24_26: init type = call constants.%Float(%.loc24_26.1) [template = f64] @@ -359,19 +382,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc24_50: init type = call constants.%Float(%.loc24_50.1) [template = f64] // CHECK:STDOUT: %.loc24_50.2: type = value_of_initializer %float.make_type.loc24_50 [template = f64] // CHECK:STDOUT: %.loc24_50.3: type = converted %float.make_type.loc24_50, %.loc24_50.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc24_24: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc24_24 -// CHECK:STDOUT: %param.loc24_32: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc24_32 -// CHECK:STDOUT: %param.loc24_40: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc24_40 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc28_32.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc28_32: init type = call constants.%Float(%.loc28_32.1) [template = f64] @@ -384,11 +410,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc28_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc28_48.2: type = converted %bool.make_type, %.loc28_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc28_30: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc28_30 -// CHECK:STDOUT: %param.loc28_38: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc28_38 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/div.carbon b/toolchain/check/testdata/builtins/float/div.carbon index 42550e39ba23..88288e66b540 100644 --- a/toolchain/check/testdata/builtins/float/div.carbon +++ b/toolchain/check/testdata/builtins/float/div.carbon @@ -84,7 +84,7 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -102,6 +102,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_11.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_11: init type = call constants.%Float(%.loc2_11.1) [template = f64] @@ -115,17 +117,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc2_27: init type = call constants.%Float(%.loc2_27.1) [template = f64] // CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %float.make_type.loc2_27 [template = f64] // CHECK:STDOUT: %.loc2_27.3: type = converted %float.make_type.loc2_27, %.loc2_27.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc2_9: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc4_19: init type = call constants.%Float(%.loc4_19.1) [template = f64] @@ -139,11 +144,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc4_35: init type = call constants.%Float(%.loc4_35.1) [template = f64] // CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %float.make_type.loc4_35 [template = f64] // CHECK:STDOUT: %.loc4_35.3: type = converted %float.make_type.loc4_35, %.loc4_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc4_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc4_17 -// CHECK:STDOUT: %param.loc4_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc4_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_8.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc8: init type = call constants.%Float(%.loc8_8.1) [template = f64] @@ -238,8 +244,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -257,6 +263,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc8_14: init type = call constants.%Float(%.loc8_14.1) [template = f64] @@ -266,9 +274,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc8_22: init type = call constants.%Float(%.loc8_22.1) [template = f64] // CHECK:STDOUT: %.loc8_22.2: type = value_of_initializer %float.make_type.loc8_22 [template = f64] // CHECK:STDOUT: %.loc8_22.3: type = converted %float.make_type.loc8_22, %.loc8_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -277,6 +286,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_15.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc13_15: init type = call constants.%Float(%.loc13_15.1) [template = f64] @@ -294,19 +305,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc13_39: init type = call constants.%Float(%.loc13_39.1) [template = f64] // CHECK:STDOUT: %.loc13_39.2: type = value_of_initializer %float.make_type.loc13_39 [template = f64] // CHECK:STDOUT: %.loc13_39.3: type = converted %float.make_type.loc13_39, %.loc13_39.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc13_13: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc13_21 -// CHECK:STDOUT: %param.loc13_29: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc13_29 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_21.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc17_21: init type = call constants.%Float(%.loc17_21.1) [template = f64] @@ -319,17 +333,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc17_37.2: type = converted %bool.make_type, %.loc17_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc17_19: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc17_19 -// CHECK:STDOUT: %param.loc17_27: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc17_27 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_17.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc18_17: init type = call constants.%Float(%.loc18_17.1) [template = f64] @@ -343,15 +360,18 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc18_33: init type = call constants.%Float(%.loc18_33.1) [template = f64] // CHECK:STDOUT: %.loc18_33.2: type = value_of_initializer %float.make_type.loc18_33 [template = f64] // CHECK:STDOUT: %.loc18_33.3: type = converted %float.make_type.loc18_33, %.loc18_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc18_15: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc18_15 -// CHECK:STDOUT: %param.loc18_23: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc18_23 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_25.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc20_25: init type = call constants.%Float(%.loc20_25.1) [template = f64] @@ -361,9 +381,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc20_33: init type = call constants.%Float(%.loc20_33.1) [template = f64] // CHECK:STDOUT: %.loc20_33.2: type = value_of_initializer %float.make_type.loc20_33 [template = f64] // CHECK:STDOUT: %.loc20_33.3: type = converted %float.make_type.loc20_33, %.loc20_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -372,6 +393,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc24_26.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc24_26: init type = call constants.%Float(%.loc24_26.1) [template = f64] @@ -389,19 +412,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc24_50: init type = call constants.%Float(%.loc24_50.1) [template = f64] // CHECK:STDOUT: %.loc24_50.2: type = value_of_initializer %float.make_type.loc24_50 [template = f64] // CHECK:STDOUT: %.loc24_50.3: type = converted %float.make_type.loc24_50, %.loc24_50.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc24_24: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc24_24 -// CHECK:STDOUT: %param.loc24_32: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc24_32 -// CHECK:STDOUT: %param.loc24_40: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc24_40 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc28_32.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc28_32: init type = call constants.%Float(%.loc28_32.1) [template = f64] @@ -414,11 +440,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc28_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc28_48.2: type = converted %bool.make_type, %.loc28_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc28_30: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc28_30 -// CHECK:STDOUT: %param.loc28_38: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc28_38 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/eq.carbon b/toolchain/check/testdata/builtins/float/eq.carbon index eb01a691bda5..51f8819f3ede 100644 --- a/toolchain/check/testdata/builtins/float/eq.carbon +++ b/toolchain/check/testdata/builtins/float/eq.carbon @@ -72,8 +72,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,6 +91,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_10.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_10: init type = call constants.%Float(%.loc2_10.1) [template = f64] @@ -103,11 +105,12 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_26.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_26.2: type = converted %bool.make_type, %.loc2_26.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_8: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_8 -// CHECK:STDOUT: %param.loc2_16: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_16 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -119,16 +122,18 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc7: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc7: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc7_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc7_11 -// CHECK:STDOUT: %param.loc7_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc7_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc12_19: init type = call constants.%Float(%.loc12_19.1) [template = f64] @@ -141,11 +146,12 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_35.2: type = converted %bool.make_type, %.loc12_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc12_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc12_17 -// CHECK:STDOUT: %param.loc12_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc12_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -246,7 +252,7 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -260,6 +266,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc7_19: init type = call constants.%Float(%.loc7_19.1) [template = f64] @@ -273,11 +281,12 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %float.make_type.loc7_35: init type = call constants.%Float(%.loc7_35.1) [template = f64] // CHECK:STDOUT: %.loc7_35.2: type = value_of_initializer %float.make_type.loc7_35 [template = f64] // CHECK:STDOUT: %.loc7_35.3: type = converted %float.make_type.loc7_35, %.loc7_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc7_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/greater.carbon b/toolchain/check/testdata/builtins/float/greater.carbon index f609aea02f5e..065dbde6f833 100644 --- a/toolchain/check/testdata/builtins/float/greater.carbon +++ b/toolchain/check/testdata/builtins/float/greater.carbon @@ -71,8 +71,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,6 +91,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_15.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_15: init type = call constants.%Float(%.loc2_15.1) [template = f64] @@ -103,15 +105,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_31.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_31.2: type = converted %bool.make_type, %.loc2_31.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_13: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_13 -// CHECK:STDOUT: %param.loc2_21: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_21 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc3_14: init type = call constants.%Float(%.loc3_14.1) [template = f64] @@ -121,9 +126,10 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc3_22: init type = call constants.%Float(%.loc3_22.1) [template = f64] // CHECK:STDOUT: %.loc3_22.2: type = value_of_initializer %float.make_type.loc3_22 [template = f64] // CHECK:STDOUT: %.loc3_22.3: type = converted %float.make_type.loc3_22, %.loc3_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -135,16 +141,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc16_19: init type = call constants.%Float(%.loc16_19.1) [template = f64] @@ -157,11 +165,12 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/greater_eq.carbon b/toolchain/check/testdata/builtins/float/greater_eq.carbon index ea483dd3a3e0..6da0892308a5 100644 --- a/toolchain/check/testdata/builtins/float/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/float/greater_eq.carbon @@ -71,8 +71,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,6 +91,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_17.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_17: init type = call constants.%Float(%.loc2_17.1) [template = f64] @@ -103,15 +105,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_33.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_33.2: type = converted %bool.make_type, %.loc2_33.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_15: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_15 -// CHECK:STDOUT: %param.loc2_23: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_23 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc3_14: init type = call constants.%Float(%.loc3_14.1) [template = f64] @@ -121,9 +126,10 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc3_22: init type = call constants.%Float(%.loc3_22.1) [template = f64] // CHECK:STDOUT: %.loc3_22.2: type = value_of_initializer %float.make_type.loc3_22 [template = f64] // CHECK:STDOUT: %.loc3_22.3: type = converted %float.make_type.loc3_22, %.loc3_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -135,16 +141,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc16_19: init type = call constants.%Float(%.loc16_19.1) [template = f64] @@ -157,11 +165,12 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/less.carbon b/toolchain/check/testdata/builtins/float/less.carbon index 3890662753b7..62a9bc26d841 100644 --- a/toolchain/check/testdata/builtins/float/less.carbon +++ b/toolchain/check/testdata/builtins/float/less.carbon @@ -71,8 +71,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,6 +91,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_12.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_12: init type = call constants.%Float(%.loc2_12.1) [template = f64] @@ -103,15 +105,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_28.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_28.2: type = converted %bool.make_type, %.loc2_28.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_10: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_10 -// CHECK:STDOUT: %param.loc2_18: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_18 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc3_14: init type = call constants.%Float(%.loc3_14.1) [template = f64] @@ -121,9 +126,10 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc3_22: init type = call constants.%Float(%.loc3_22.1) [template = f64] // CHECK:STDOUT: %.loc3_22.2: type = value_of_initializer %float.make_type.loc3_22 [template = f64] // CHECK:STDOUT: %.loc3_22.3: type = converted %float.make_type.loc3_22, %.loc3_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -135,16 +141,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc16_19: init type = call constants.%Float(%.loc16_19.1) [template = f64] @@ -157,11 +165,12 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/less_eq.carbon b/toolchain/check/testdata/builtins/float/less_eq.carbon index e827e5419ee1..70f867ac6444 100644 --- a/toolchain/check/testdata/builtins/float/less_eq.carbon +++ b/toolchain/check/testdata/builtins/float/less_eq.carbon @@ -71,8 +71,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,6 +91,8 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_14: init type = call constants.%Float(%.loc2_14.1) [template = f64] @@ -103,15 +105,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_30.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_30.2: type = converted %bool.make_type, %.loc2_30.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_12: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_12 -// CHECK:STDOUT: %param.loc2_20: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_20 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc3_14: init type = call constants.%Float(%.loc3_14.1) [template = f64] @@ -121,9 +126,10 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc3_22: init type = call constants.%Float(%.loc3_22.1) [template = f64] // CHECK:STDOUT: %.loc3_22.2: type = value_of_initializer %float.make_type.loc3_22 [template = f64] // CHECK:STDOUT: %.loc3_22.3: type = converted %float.make_type.loc3_22, %.loc3_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -135,16 +141,18 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc16_19: init type = call constants.%Float(%.loc16_19.1) [template = f64] @@ -157,11 +165,12 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/make_type.carbon b/toolchain/check/testdata/builtins/float/make_type.carbon index b35d3a78c6b3..7c87caf24286 100644 --- a/toolchain/check/testdata/builtins/float/make_type.carbon +++ b/toolchain/check/testdata/builtins/float/make_type.carbon @@ -66,7 +66,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -78,13 +78,16 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: %Float.decl: %Float.type = fn_decl @Float [template = constants.%Float] { // CHECK:STDOUT: %size.patt: i32 = binding_pattern size // CHECK:STDOUT: %size.param_patt: i32 = param_pattern %size.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_16.2: type = converted %int.make_type_32, %.loc4_16.1 [template = i32] -// CHECK:STDOUT: %return: ref type = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %size: i32 = bind_name size, %param +// CHECK:STDOUT: %size.param: i32 = param runtime_param0 +// CHECK:STDOUT: %size: i32 = bind_name size, %size.param +// CHECK:STDOUT: %return.param: type = param runtime_param1 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -107,7 +110,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Main//types, inst+17, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Main//types, inst+20, loaded [template = constants.%Float] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.2 // CHECK:STDOUT: import Core//prelude @@ -119,7 +122,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -141,13 +144,16 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: %GetFloat.decl: %GetFloat.type = fn_decl @GetFloat [template = constants.%GetFloat] { // CHECK:STDOUT: %dyn_size.patt: i32 = binding_pattern dyn_size // CHECK:STDOUT: %dyn_size.param_patt: i32 = param_pattern %dyn_size.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_23.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_23.2: type = converted %int.make_type_32, %.loc8_23.1 [template = i32] -// CHECK:STDOUT: %return: ref type = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %dyn_size: i32 = bind_name dyn_size, %param +// CHECK:STDOUT: %dyn_size.param: i32 = param runtime_param0 +// CHECK:STDOUT: %dyn_size: i32 = bind_name dyn_size, %dyn_size.param +// CHECK:STDOUT: %return.param: type = param runtime_param1 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -185,7 +191,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Main//types, inst+17, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Main//types, inst+20, loaded [template = constants.%Float] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.2 // CHECK:STDOUT: import Core//prelude @@ -197,7 +203,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/builtins/float/mul.carbon b/toolchain/check/testdata/builtins/float/mul.carbon index 8b0321a2ef6e..c393a4ed0da1 100644 --- a/toolchain/check/testdata/builtins/float/mul.carbon +++ b/toolchain/check/testdata/builtins/float/mul.carbon @@ -78,7 +78,7 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,6 +94,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_11.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_11: init type = call constants.%Float(%.loc2_11.1) [template = f64] @@ -107,17 +109,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc2_27: init type = call constants.%Float(%.loc2_27.1) [template = f64] // CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %float.make_type.loc2_27 [template = f64] // CHECK:STDOUT: %.loc2_27.3: type = converted %float.make_type.loc2_27, %.loc2_27.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc2_9: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc4_19: init type = call constants.%Float(%.loc4_19.1) [template = f64] @@ -131,11 +136,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc4_35: init type = call constants.%Float(%.loc4_35.1) [template = f64] // CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %float.make_type.loc4_35 [template = f64] // CHECK:STDOUT: %.loc4_35.3: type = converted %float.make_type.loc4_35, %.loc4_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc4_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc4_17 -// CHECK:STDOUT: %param.loc4_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc4_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_8.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc8_8.1) [template = f64] @@ -208,8 +214,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -227,6 +233,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc8_14: init type = call constants.%Float(%.loc8_14.1) [template = f64] @@ -236,9 +244,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc8_22: init type = call constants.%Float(%.loc8_22.1) [template = f64] // CHECK:STDOUT: %.loc8_22.2: type = value_of_initializer %float.make_type.loc8_22 [template = f64] // CHECK:STDOUT: %.loc8_22.3: type = converted %float.make_type.loc8_22, %.loc8_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -247,6 +256,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_15.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc13_15: init type = call constants.%Float(%.loc13_15.1) [template = f64] @@ -264,19 +275,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc13_39: init type = call constants.%Float(%.loc13_39.1) [template = f64] // CHECK:STDOUT: %.loc13_39.2: type = value_of_initializer %float.make_type.loc13_39 [template = f64] // CHECK:STDOUT: %.loc13_39.3: type = converted %float.make_type.loc13_39, %.loc13_39.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc13_13: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc13_21 -// CHECK:STDOUT: %param.loc13_29: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc13_29 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_21.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc17_21: init type = call constants.%Float(%.loc17_21.1) [template = f64] @@ -289,17 +303,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc17_37.2: type = converted %bool.make_type, %.loc17_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc17_19: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc17_19 -// CHECK:STDOUT: %param.loc17_27: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc17_27 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_17.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc18_17: init type = call constants.%Float(%.loc18_17.1) [template = f64] @@ -313,15 +330,18 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc18_33: init type = call constants.%Float(%.loc18_33.1) [template = f64] // CHECK:STDOUT: %.loc18_33.2: type = value_of_initializer %float.make_type.loc18_33 [template = f64] // CHECK:STDOUT: %.loc18_33.3: type = converted %float.make_type.loc18_33, %.loc18_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc18_15: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc18_15 -// CHECK:STDOUT: %param.loc18_23: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc18_23 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_25.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc20_25: init type = call constants.%Float(%.loc20_25.1) [template = f64] @@ -331,9 +351,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc20_33: init type = call constants.%Float(%.loc20_33.1) [template = f64] // CHECK:STDOUT: %.loc20_33.2: type = value_of_initializer %float.make_type.loc20_33 [template = f64] // CHECK:STDOUT: %.loc20_33.3: type = converted %float.make_type.loc20_33, %.loc20_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -342,6 +363,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc24_26.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc24_26: init type = call constants.%Float(%.loc24_26.1) [template = f64] @@ -359,19 +382,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc24_50: init type = call constants.%Float(%.loc24_50.1) [template = f64] // CHECK:STDOUT: %.loc24_50.2: type = value_of_initializer %float.make_type.loc24_50 [template = f64] // CHECK:STDOUT: %.loc24_50.3: type = converted %float.make_type.loc24_50, %.loc24_50.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc24_24: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc24_24 -// CHECK:STDOUT: %param.loc24_32: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc24_32 -// CHECK:STDOUT: %param.loc24_40: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc24_40 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc28_32.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc28_32: init type = call constants.%Float(%.loc28_32.1) [template = f64] @@ -384,11 +410,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc28_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc28_48.2: type = converted %bool.make_type, %.loc28_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc28_30: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc28_30 -// CHECK:STDOUT: %param.loc28_38: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc28_38 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/negate.carbon b/toolchain/check/testdata/builtins/float/negate.carbon index e6ac9ef652a0..6536943dc217 100644 --- a/toolchain/check/testdata/builtins/float/negate.carbon +++ b/toolchain/check/testdata/builtins/float/negate.carbon @@ -98,7 +98,7 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -112,6 +112,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_14: init type = call constants.%Float(%.loc2_14.1) [template = f64] @@ -121,15 +123,18 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc2_22: init type = call constants.%Float(%.loc2_22.1) [template = f64] // CHECK:STDOUT: %.loc2_22.2: type = value_of_initializer %float.make_type.loc2_22 [template = f64] // CHECK:STDOUT: %.loc2_22.3: type = converted %float.make_type.loc2_22, %.loc2_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc4_19: init type = call constants.%Float(%.loc4_19.1) [template = f64] @@ -143,11 +148,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc4_35: init type = call constants.%Float(%.loc4_35.1) [template = f64] // CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %float.make_type.loc4_35 [template = f64] // CHECK:STDOUT: %.loc4_35.3: type = converted %float.make_type.loc4_35, %.loc4_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc4_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc4_17 -// CHECK:STDOUT: %param.loc4_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc4_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_8.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc8_8.1) [template = f64] @@ -218,8 +224,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -234,18 +240,24 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: .RuntimeCallBadReturnType = %RuntimeCallBadReturnType.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] {} { +// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_16.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc8_16.1) [template = f64] // CHECK:STDOUT: %.loc8_16.2: type = value_of_initializer %float.make_type [template = f64] // CHECK:STDOUT: %.loc8_16.3: type = converted %float.make_type, %.loc8_16.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var +// CHECK:STDOUT: %return.param: f64 = param runtime_param0 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_15.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc13_15: init type = call constants.%Float(%.loc13_15.1) [template = f64] @@ -259,15 +271,18 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc13_31: init type = call constants.%Float(%.loc13_31.1) [template = f64] // CHECK:STDOUT: %.loc13_31.2: type = value_of_initializer %float.make_type.loc13_31 [template = f64] // CHECK:STDOUT: %.loc13_31.3: type = converted %float.make_type.loc13_31, %.loc13_31.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc13_13: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc13_21 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_21.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc18_21.1) [template = f64] @@ -276,13 +291,16 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc18_29.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc18_29.2: type = converted %bool.make_type, %.loc18_29.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: bool = param runtime_param1 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_17.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc19_17: init type = call constants.%Float(%.loc19_17.1) [template = f64] @@ -292,13 +310,16 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc19_25: init type = call constants.%Float(%.loc19_25.1) [template = f64] // CHECK:STDOUT: %.loc19_25.2: type = value_of_initializer %float.make_type.loc19_25 [template = f64] // CHECK:STDOUT: %.loc19_25.3: type = converted %float.make_type.loc19_25, %.loc19_25.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_25.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc21_25: init type = call constants.%Float(%.loc21_25.1) [template = f64] @@ -308,9 +329,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc21_33: init type = call constants.%Float(%.loc21_33.1) [template = f64] // CHECK:STDOUT: %.loc21_33.2: type = value_of_initializer %float.make_type.loc21_33 [template = f64] // CHECK:STDOUT: %.loc21_33.3: type = converted %float.make_type.loc21_33, %.loc21_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -319,6 +341,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc32_26.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc32_26: init type = call constants.%Float(%.loc32_26.1) [template = f64] @@ -336,19 +360,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc32_50: init type = call constants.%Float(%.loc32_50.1) [template = f64] // CHECK:STDOUT: %.loc32_50.2: type = value_of_initializer %float.make_type.loc32_50 [template = f64] // CHECK:STDOUT: %.loc32_50.3: type = converted %float.make_type.loc32_50, %.loc32_50.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc32_24: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc32_24 -// CHECK:STDOUT: %param.loc32_32: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc32_32 -// CHECK:STDOUT: %param.loc32_40: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc32_40 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc43_32.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc43_32: init type = call constants.%Float(%.loc43_32.1) [template = f64] @@ -361,11 +388,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc43_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc43_48.2: type = converted %bool.make_type, %.loc43_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc43_30: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc43_30 -// CHECK:STDOUT: %param.loc43_38: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc43_38 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/neq.carbon b/toolchain/check/testdata/builtins/float/neq.carbon index 312191695fa2..76220055c20f 100644 --- a/toolchain/check/testdata/builtins/float/neq.carbon +++ b/toolchain/check/testdata/builtins/float/neq.carbon @@ -72,8 +72,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,6 +91,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_11.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_11: init type = call constants.%Float(%.loc2_11.1) [template = f64] @@ -103,11 +105,12 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_27.2: type = converted %bool.make_type, %.loc2_27.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_9: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -119,16 +122,18 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc7: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc7: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc7_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc7_11 -// CHECK:STDOUT: %param.loc7_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc7_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc12_19: init type = call constants.%Float(%.loc12_19.1) [template = f64] @@ -141,11 +146,12 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_35.2: type = converted %bool.make_type, %.loc12_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc12_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc12_17 -// CHECK:STDOUT: %param.loc12_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc12_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -246,7 +252,7 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -260,6 +266,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc7_19: init type = call constants.%Float(%.loc7_19.1) [template = f64] @@ -273,11 +281,12 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %float.make_type.loc7_35: init type = call constants.%Float(%.loc7_35.1) [template = f64] // CHECK:STDOUT: %.loc7_35.2: type = value_of_initializer %float.make_type.loc7_35 [template = f64] // CHECK:STDOUT: %.loc7_35.3: type = converted %float.make_type.loc7_35, %.loc7_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc7_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/sub.carbon b/toolchain/check/testdata/builtins/float/sub.carbon index 4c7e44cef378..c4c3f3e08139 100644 --- a/toolchain/check/testdata/builtins/float/sub.carbon +++ b/toolchain/check/testdata/builtins/float/sub.carbon @@ -78,7 +78,7 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,6 +94,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_11.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc2_11: init type = call constants.%Float(%.loc2_11.1) [template = f64] @@ -107,17 +109,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc2_27: init type = call constants.%Float(%.loc2_27.1) [template = f64] // CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %float.make_type.loc2_27 [template = f64] // CHECK:STDOUT: %.loc2_27.3: type = converted %float.make_type.loc2_27, %.loc2_27.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc2_9: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc4_19: init type = call constants.%Float(%.loc4_19.1) [template = f64] @@ -131,11 +136,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc4_35: init type = call constants.%Float(%.loc4_35.1) [template = f64] // CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %float.make_type.loc4_35 [template = f64] // CHECK:STDOUT: %.loc4_35.3: type = converted %float.make_type.loc4_35, %.loc4_35.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc4_17: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc4_17 -// CHECK:STDOUT: %param.loc4_25: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc4_25 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_8.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc8_8.1) [template = f64] @@ -208,8 +214,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -227,6 +233,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_14.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc8_14: init type = call constants.%Float(%.loc8_14.1) [template = f64] @@ -236,9 +244,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc8_22: init type = call constants.%Float(%.loc8_22.1) [template = f64] // CHECK:STDOUT: %.loc8_22.2: type = value_of_initializer %float.make_type.loc8_22 [template = f64] // CHECK:STDOUT: %.loc8_22.3: type = converted %float.make_type.loc8_22, %.loc8_22.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -247,6 +256,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_15.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc13_15: init type = call constants.%Float(%.loc13_15.1) [template = f64] @@ -264,19 +275,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc13_39: init type = call constants.%Float(%.loc13_39.1) [template = f64] // CHECK:STDOUT: %.loc13_39.2: type = value_of_initializer %float.make_type.loc13_39 [template = f64] // CHECK:STDOUT: %.loc13_39.3: type = converted %float.make_type.loc13_39, %.loc13_39.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc13_13: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc13_21 -// CHECK:STDOUT: %param.loc13_29: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc13_29 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_21.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc17_21: init type = call constants.%Float(%.loc17_21.1) [template = f64] @@ -289,17 +303,20 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc17_37.2: type = converted %bool.make_type, %.loc17_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc17_19: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc17_19 -// CHECK:STDOUT: %param.loc17_27: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc17_27 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_17.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc18_17: init type = call constants.%Float(%.loc18_17.1) [template = f64] @@ -313,15 +330,18 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc18_33: init type = call constants.%Float(%.loc18_33.1) [template = f64] // CHECK:STDOUT: %.loc18_33.2: type = value_of_initializer %float.make_type.loc18_33 [template = f64] // CHECK:STDOUT: %.loc18_33.3: type = converted %float.make_type.loc18_33, %.loc18_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc18_15: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc18_15 -// CHECK:STDOUT: %param.loc18_23: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc18_23 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param2 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_25.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc20_25: init type = call constants.%Float(%.loc20_25.1) [template = f64] @@ -331,9 +351,10 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc20_33: init type = call constants.%Float(%.loc20_33.1) [template = f64] // CHECK:STDOUT: %.loc20_33.2: type = value_of_initializer %float.make_type.loc20_33 [template = f64] // CHECK:STDOUT: %.loc20_33.3: type = converted %float.make_type.loc20_33, %.loc20_33.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param1 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a @@ -342,6 +363,8 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: f64 = binding_pattern c // CHECK:STDOUT: %c.param_patt: f64 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc24_26.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc24_26: init type = call constants.%Float(%.loc24_26.1) [template = f64] @@ -359,19 +382,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %float.make_type.loc24_50: init type = call constants.%Float(%.loc24_50.1) [template = f64] // CHECK:STDOUT: %.loc24_50.2: type = value_of_initializer %float.make_type.loc24_50 [template = f64] // CHECK:STDOUT: %.loc24_50.3: type = converted %float.make_type.loc24_50, %.loc24_50.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var -// CHECK:STDOUT: %param.loc24_24: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc24_24 -// CHECK:STDOUT: %param.loc24_32: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc24_32 -// CHECK:STDOUT: %param.loc24_40: f64 = param runtime_param2 -// CHECK:STDOUT: %c: f64 = bind_name c, %param.loc24_40 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: f64 = param runtime_param2 +// CHECK:STDOUT: %c: f64 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: f64 = param runtime_param3 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: f64 = binding_pattern b // CHECK:STDOUT: %b.param_patt: f64 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc28_32.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type.loc28_32: init type = call constants.%Float(%.loc28_32.1) [template = f64] @@ -384,11 +410,12 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc28_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc28_48.2: type = converted %bool.make_type, %.loc28_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc28_30: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param.loc28_30 -// CHECK:STDOUT: %param.loc28_38: f64 = param runtime_param1 -// CHECK:STDOUT: %b: f64 = bind_name b, %param.loc28_38 +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: f64 = param runtime_param1 +// CHECK:STDOUT: %b: f64 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/and.carbon b/toolchain/check/testdata/builtins/int/and.carbon index af31e39ded86..2b36c333c168 100644 --- a/toolchain/check/testdata/builtins/int/and.carbon +++ b/toolchain/check/testdata/builtins/int/and.carbon @@ -48,7 +48,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -65,6 +65,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -75,11 +77,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %And.ref: %And.type = name_ref And, %And.decl [template = constants.%And] @@ -102,6 +105,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -112,11 +117,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/complement.carbon b/toolchain/check/testdata/builtins/int/complement.carbon index f1f51250f36a..764074a98150 100644 --- a/toolchain/check/testdata/builtins/int/complement.carbon +++ b/toolchain/check/testdata/builtins/int/complement.carbon @@ -52,7 +52,7 @@ fn RuntimeCall(a: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -68,6 +68,8 @@ fn RuntimeCall(a: i32) -> i32 { // CHECK:STDOUT: %Complement.decl: %Complement.type = fn_decl @Complement [template = constants.%Complement] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_18.1: type = value_of_initializer %int.make_type_32.loc2_18 [template = i32] @@ -75,15 +77,18 @@ fn RuntimeCall(a: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc2_26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_26.1: type = value_of_initializer %int.make_type_32.loc2_26 [template = i32] // CHECK:STDOUT: %.loc2_26.2: type = converted %int.make_type_32.loc2_26, %.loc2_26.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %And.decl: %And.type = fn_decl @And [template = constants.%And] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc3_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_11.1: type = value_of_initializer %int.make_type_32.loc3_11 [template = i32] @@ -94,11 +99,12 @@ fn RuntimeCall(a: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc3_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_27.1: type = value_of_initializer %int.make_type_32.loc3_27 [template = i32] // CHECK:STDOUT: %.loc3_27.2: type = converted %int.make_type_32.loc3_27, %.loc3_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc3_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc3_9 -// CHECK:STDOUT: %param.loc3_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc3_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc5: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %And.ref: %And.type = name_ref And, %And.decl [template = constants.%And] @@ -123,6 +129,8 @@ fn RuntimeCall(a: i32) -> i32 { // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc8_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_19.1: type = value_of_initializer %int.make_type_32.loc8_19 [template = i32] @@ -130,9 +138,10 @@ fn RuntimeCall(a: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc8_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_27.1: type = value_of_initializer %int.make_type_32.loc8_27 [template = i32] // CHECK:STDOUT: %.loc8_27.2: type = converted %int.make_type_32.loc8_27, %.loc8_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/eq.carbon b/toolchain/check/testdata/builtins/int/eq.carbon index 40d515a836f7..8acf3bf497ab 100644 --- a/toolchain/check/testdata/builtins/int/eq.carbon +++ b/toolchain/check/testdata/builtins/int/eq.carbon @@ -71,8 +71,8 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -90,6 +90,8 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_10.1: type = value_of_initializer %int.make_type_32.loc2_10 [template = i32] @@ -100,11 +102,12 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_26.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_26.2: type = converted %bool.make_type, %.loc2_26.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_8: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_8 -// CHECK:STDOUT: %param.loc2_16: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_16 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -116,16 +119,18 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc7: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc7: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc7_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc7_11 -// CHECK:STDOUT: %param.loc7_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc7_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_19.1: type = value_of_initializer %int.make_type_32.loc12_19 [template = i32] @@ -136,11 +141,12 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_35.2: type = converted %bool.make_type, %.loc12_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc12_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc12_17 -// CHECK:STDOUT: %param.loc12_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc12_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -240,7 +246,7 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -254,6 +260,8 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -264,11 +272,12 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/greater.carbon b/toolchain/check/testdata/builtins/int/greater.carbon index e83b25cc2b20..55d1ed78c996 100644 --- a/toolchain/check/testdata/builtins/int/greater.carbon +++ b/toolchain/check/testdata/builtins/int/greater.carbon @@ -70,8 +70,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -90,6 +90,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_15.1: type = value_of_initializer %int.make_type_32.loc2_15 [template = i32] @@ -100,15 +102,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_31.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_31.2: type = converted %bool.make_type, %.loc2_31.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_13: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_13 -// CHECK:STDOUT: %param.loc2_21: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_21 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc3_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_14.1: type = value_of_initializer %int.make_type_32.loc3_14 [template = i32] @@ -116,9 +121,10 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %int.make_type_32.loc3_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_22.1: type = value_of_initializer %int.make_type_32.loc3_22 [template = i32] // CHECK:STDOUT: %.loc3_22.2: type = converted %int.make_type_32.loc3_22, %.loc3_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -130,16 +136,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_19.1: type = value_of_initializer %int.make_type_32.loc16_19 [template = i32] @@ -150,11 +158,12 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/greater_eq.carbon b/toolchain/check/testdata/builtins/int/greater_eq.carbon index af632898ed69..64c197e6002d 100644 --- a/toolchain/check/testdata/builtins/int/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/int/greater_eq.carbon @@ -70,8 +70,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -90,6 +90,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_17.1: type = value_of_initializer %int.make_type_32.loc2_17 [template = i32] @@ -100,15 +102,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_33.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_33.2: type = converted %bool.make_type, %.loc2_33.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_15: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_15 -// CHECK:STDOUT: %param.loc2_23: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_23 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc3_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_14.1: type = value_of_initializer %int.make_type_32.loc3_14 [template = i32] @@ -116,9 +121,10 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %int.make_type_32.loc3_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_22.1: type = value_of_initializer %int.make_type_32.loc3_22 [template = i32] // CHECK:STDOUT: %.loc3_22.2: type = converted %int.make_type_32.loc3_22, %.loc3_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -130,16 +136,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_19.1: type = value_of_initializer %int.make_type_32.loc16_19 [template = i32] @@ -150,11 +158,12 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/left_shift.carbon b/toolchain/check/testdata/builtins/int/left_shift.carbon index af7ef572a814..eb7c24f1bdba 100644 --- a/toolchain/check/testdata/builtins/int/left_shift.carbon +++ b/toolchain/check/testdata/builtins/int/left_shift.carbon @@ -92,7 +92,7 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -109,6 +109,8 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_17.1: type = value_of_initializer %int.make_type_32.loc2_17 [template = i32] @@ -119,11 +121,12 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc2_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_33.1: type = value_of_initializer %int.make_type_32.loc2_33 [template = i32] // CHECK:STDOUT: %.loc2_33.2: type = converted %int.make_type_32.loc2_33, %.loc2_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_15: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_15 -// CHECK:STDOUT: %param.loc2_23: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_23 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %LeftShift.ref: %LeftShift.type = name_ref LeftShift, %LeftShift.decl [template = constants.%LeftShift] @@ -146,6 +149,8 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -156,11 +161,12 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,7 +225,7 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -242,6 +248,8 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_17.1: type = value_of_initializer %int.make_type_32.loc4_17 [template = i32] @@ -252,15 +260,18 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc4_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_33.1: type = value_of_initializer %int.make_type_32.loc4_33 [template = i32] // CHECK:STDOUT: %.loc4_33.2: type = converted %int.make_type_32.loc4_33, %.loc4_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_15: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_15 -// CHECK:STDOUT: %param.loc4_23: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_23 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_14.1: type = value_of_initializer %int.make_type_32.loc5_14 [template = i32] @@ -268,9 +279,10 @@ let negative: i32 = LeftShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc5_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_22.1: type = value_of_initializer %int.make_type_32.loc5_22 [template = i32] // CHECK:STDOUT: %.loc5_22.2: type = converted %int.make_type_32.loc5_22, %.loc5_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc8: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_13.1: type = value_of_initializer %int.make_type_32.loc8 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/less.carbon b/toolchain/check/testdata/builtins/int/less.carbon index 8e12cdfc654d..43891b3941f6 100644 --- a/toolchain/check/testdata/builtins/int/less.carbon +++ b/toolchain/check/testdata/builtins/int/less.carbon @@ -70,8 +70,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -90,6 +90,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_12.1: type = value_of_initializer %int.make_type_32.loc2_12 [template = i32] @@ -100,15 +102,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_28.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_28.2: type = converted %bool.make_type, %.loc2_28.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_10: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_10 -// CHECK:STDOUT: %param.loc2_18: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_18 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc3_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_14.1: type = value_of_initializer %int.make_type_32.loc3_14 [template = i32] @@ -116,9 +121,10 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %int.make_type_32.loc3_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_22.1: type = value_of_initializer %int.make_type_32.loc3_22 [template = i32] // CHECK:STDOUT: %.loc3_22.2: type = converted %int.make_type_32.loc3_22, %.loc3_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -130,16 +136,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_19.1: type = value_of_initializer %int.make_type_32.loc16_19 [template = i32] @@ -150,11 +158,12 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/less_eq.carbon b/toolchain/check/testdata/builtins/int/less_eq.carbon index c5886c398b92..a4c8d9cc0563 100644 --- a/toolchain/check/testdata/builtins/int/less_eq.carbon +++ b/toolchain/check/testdata/builtins/int/less_eq.carbon @@ -70,8 +70,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -90,6 +90,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_14.1: type = value_of_initializer %int.make_type_32.loc2_14 [template = i32] @@ -100,15 +102,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_30.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_30.2: type = converted %bool.make_type, %.loc2_30.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_12: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_12 -// CHECK:STDOUT: %param.loc2_20: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_20 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc3_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_14.1: type = value_of_initializer %int.make_type_32.loc3_14 [template = i32] @@ -116,9 +121,10 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %int.make_type_32.loc3_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc3_22.1: type = value_of_initializer %int.make_type_32.loc3_22 [template = i32] // CHECK:STDOUT: %.loc3_22.2: type = converted %int.make_type_32.loc3_22, %.loc3_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -130,16 +136,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc8: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc8: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc8_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc8_11 -// CHECK:STDOUT: %param.loc8_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc8_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_19.1: type = value_of_initializer %int.make_type_32.loc16_19 [template = i32] @@ -150,11 +158,12 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_35.2: type = converted %bool.make_type, %.loc16_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc16_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc16_17 -// CHECK:STDOUT: %param.loc16_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc16_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/make_type_32.carbon b/toolchain/check/testdata/builtins/int/make_type_32.carbon index e931b296ac9c..5ccb4d169a51 100644 --- a/toolchain/check/testdata/builtins/int/make_type_32.carbon +++ b/toolchain/check/testdata/builtins/int/make_type_32.carbon @@ -49,8 +49,12 @@ var i: Int() = 0; // CHECK:STDOUT: .Int = %Int.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [template = constants.%Int] {} { -// CHECK:STDOUT: %return: ref type = var +// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [template = constants.%Int] { +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: type = param runtime_param0 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -66,7 +70,7 @@ var i: Int() = 0; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %Int.type = import_ref Main//types, inst+4, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref: %Int.type = import_ref Main//types, inst+7, loaded [template = constants.%Int] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/builtins/int/make_type_signed.carbon b/toolchain/check/testdata/builtins/int/make_type_signed.carbon index 69a86e9ed5c3..15d0590bae21 100644 --- a/toolchain/check/testdata/builtins/int/make_type_signed.carbon +++ b/toolchain/check/testdata/builtins/int/make_type_signed.carbon @@ -91,7 +91,7 @@ var m: Int(1000000000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -103,13 +103,16 @@ var m: Int(1000000000); // CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [template = constants.%Int] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_11.2: type = converted %int.make_type_32, %.loc4_11.1 [template = i32] -// CHECK:STDOUT: %return: ref type = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: type = param runtime_param1 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -141,7 +144,7 @@ var m: Int(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Int.type = import_ref Main//types, inst+17, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref.1: %Int.type = import_ref Main//types, inst+20, loaded [template = constants.%Int] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.2 // CHECK:STDOUT: import Core//prelude @@ -153,7 +156,7 @@ var m: Int(1000000000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -169,6 +172,8 @@ var m: Int(1000000000); // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %n.patt: %.3 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.3 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref.loc6_9: %Int.type = name_ref Int, imports.%import_ref.1 [template = constants.%Int] // CHECK:STDOUT: %.loc6_13: i32 = int_literal 64 [template = constants.%.2] @@ -180,13 +185,16 @@ var m: Int(1000000000); // CHECK:STDOUT: %int.make_type_signed.loc6_24: init type = call %Int.ref.loc6_21(%.loc6_25) [template = constants.%.3] // CHECK:STDOUT: %.loc6_27.1: type = value_of_initializer %int.make_type_signed.loc6_24 [template = constants.%.3] // CHECK:STDOUT: %.loc6_27.2: type = converted %int.make_type_signed.loc6_24, %.loc6_27.1 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %n: %.3 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %n: %.3 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.3 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %n.patt: %.5 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.5 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.5 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.5 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref.loc10_9: %Int.type = name_ref Int, imports.%import_ref.1 [template = constants.%Int] // CHECK:STDOUT: %.loc10_13: i32 = int_literal 13 [template = constants.%.4] @@ -198,15 +206,18 @@ var m: Int(1000000000); // CHECK:STDOUT: %int.make_type_signed.loc10_24: init type = call %Int.ref.loc10_21(%.loc10_25) [template = constants.%.5] // CHECK:STDOUT: %.loc10_27.1: type = value_of_initializer %int.make_type_signed.loc10_24 [template = constants.%.5] // CHECK:STDOUT: %.loc10_27.2: type = converted %int.make_type_signed.loc10_24, %.loc10_27.1 [template = constants.%.5] -// CHECK:STDOUT: %return: ref %.5 = var -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %n: %.5 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %n: %.5 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.5 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.5 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Symbolic.decl: %Symbolic.type = fn_decl @Symbolic [template = constants.%Symbolic] { // CHECK:STDOUT: %N.patt.loc14_13.1: i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc14_13.2 (constants.%N.patt)] // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc14_13.1, runtime_param [symbolic = %N.patt.loc14_13.2 (constants.%N.patt)] // CHECK:STDOUT: %x.patt: @Symbolic.%.loc14_28 (%.6) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @Symbolic.%.loc14_28 (%.6) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Symbolic.%.loc14_28 (%.6) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Symbolic.%.loc14_28 (%.6) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_17.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -221,11 +232,12 @@ var m: Int(1000000000); // CHECK:STDOUT: %int.make_type_signed.loc14_39: init type = call %Int.ref.loc14_36(%N.ref.loc14_40) [symbolic = %.loc14_28 (constants.%.6)] // CHECK:STDOUT: %.loc14_41.1: type = value_of_initializer %int.make_type_signed.loc14_39 [symbolic = %.loc14_28 (constants.%.6)] // CHECK:STDOUT: %.loc14_41.2: type = converted %int.make_type_signed.loc14_39, %.loc14_41.1 [symbolic = %.loc14_28 (constants.%.6)] -// CHECK:STDOUT: %return: ref @Symbolic.%.loc14_28 (%.6) = var -// CHECK:STDOUT: %param.loc14_14: i32 = param runtime_param -// CHECK:STDOUT: %N.loc14_13.1: i32 = bind_symbolic_name N, 0, %param.loc14_14 [symbolic = %N.loc14_13.2 (constants.%N)] -// CHECK:STDOUT: %param.loc14_23: @Symbolic.%.loc14_28 (%.6) = param runtime_param0 -// CHECK:STDOUT: %x: @Symbolic.%.loc14_28 (%.6) = bind_name x, %param.loc14_23 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc14_13.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_13.2 (constants.%N)] +// CHECK:STDOUT: %x.param: @Symbolic.%.loc14_28 (%.6) = param runtime_param0 +// CHECK:STDOUT: %x: @Symbolic.%.loc14_28 (%.6) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @Symbolic.%.loc14_28 (%.6) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Symbolic.%.loc14_28 (%.6) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,7 +287,7 @@ var m: Int(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %Int.type = import_ref Main//types, inst+17, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref: %Int.type = import_ref Main//types, inst+20, loaded [template = constants.%Int] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators @@ -322,7 +334,7 @@ var m: Int(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Int.type = import_ref Main//types, inst+17, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref.1: %Int.type = import_ref Main//types, inst+20, loaded [template = constants.%Int] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.2 // CHECK:STDOUT: import Core//prelude @@ -334,7 +346,7 @@ var m: Int(1000000000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -349,6 +361,8 @@ var m: Int(1000000000); // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: type = value_of_initializer %int.make_type_32.loc6_14 [template = i32] @@ -356,9 +370,10 @@ var m: Int(1000000000); // CHECK:STDOUT: %int.make_type_32.loc6_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_22.1: type = value_of_initializer %int.make_type_32.loc6_22 [template = i32] // CHECK:STDOUT: %.loc6_22.2: type = converted %int.make_type_32.loc6_22, %.loc6_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%import_ref.1 [template = constants.%Int] // CHECK:STDOUT: %Negate.ref: %Negate.type = name_ref Negate, %Negate.decl [template = constants.%Negate] @@ -389,7 +404,7 @@ var m: Int(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %Int.type = import_ref Main//types, inst+17, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref: %Int.type = import_ref Main//types, inst+20, loaded [template = constants.%Int] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/builtins/int/make_type_unsigned.carbon b/toolchain/check/testdata/builtins/int/make_type_unsigned.carbon index 8692dc169081..ec01b4c2b7ca 100644 --- a/toolchain/check/testdata/builtins/int/make_type_unsigned.carbon +++ b/toolchain/check/testdata/builtins/int/make_type_unsigned.carbon @@ -91,7 +91,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -103,13 +103,16 @@ var m: UInt(1000000000); // CHECK:STDOUT: %UInt.decl: %UInt.type = fn_decl @UInt [template = constants.%UInt] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_12.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_12.2: type = converted %int.make_type_32, %.loc4_12.1 [template = i32] -// CHECK:STDOUT: %return: ref type = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: type = param runtime_param1 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -141,7 +144,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %UInt.type = import_ref Main//types, inst+17, loaded [template = constants.%UInt] +// CHECK:STDOUT: %import_ref.1: %UInt.type = import_ref Main//types, inst+20, loaded [template = constants.%UInt] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.2 // CHECK:STDOUT: import Core//prelude @@ -153,7 +156,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -169,6 +172,8 @@ var m: UInt(1000000000); // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %n.patt: %.3 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.3 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %UInt.ref.loc6_9: %UInt.type = name_ref UInt, imports.%import_ref.1 [template = constants.%UInt] // CHECK:STDOUT: %.loc6_14: i32 = int_literal 64 [template = constants.%.2] @@ -180,13 +185,16 @@ var m: UInt(1000000000); // CHECK:STDOUT: %int.make_type_unsigned.loc6_26: init type = call %UInt.ref.loc6_22(%.loc6_27) [template = constants.%.3] // CHECK:STDOUT: %.loc6_29.1: type = value_of_initializer %int.make_type_unsigned.loc6_26 [template = constants.%.3] // CHECK:STDOUT: %.loc6_29.2: type = converted %int.make_type_unsigned.loc6_26, %.loc6_29.1 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %n: %.3 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %n: %.3 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.3 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %n.patt: %.5 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %.5 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.5 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.5 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %UInt.ref.loc10_9: %UInt.type = name_ref UInt, imports.%import_ref.1 [template = constants.%UInt] // CHECK:STDOUT: %.loc10_14: i32 = int_literal 13 [template = constants.%.4] @@ -198,15 +206,18 @@ var m: UInt(1000000000); // CHECK:STDOUT: %int.make_type_unsigned.loc10_26: init type = call %UInt.ref.loc10_22(%.loc10_27) [template = constants.%.5] // CHECK:STDOUT: %.loc10_29.1: type = value_of_initializer %int.make_type_unsigned.loc10_26 [template = constants.%.5] // CHECK:STDOUT: %.loc10_29.2: type = converted %int.make_type_unsigned.loc10_26, %.loc10_29.1 [template = constants.%.5] -// CHECK:STDOUT: %return: ref %.5 = var -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %n: %.5 = bind_name n, %param +// CHECK:STDOUT: %n.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %n: %.5 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.5 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.5 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Symbolic.decl: %Symbolic.type = fn_decl @Symbolic [template = constants.%Symbolic] { // CHECK:STDOUT: %N.patt.loc14_13.1: i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc14_13.2 (constants.%N.patt)] // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc14_13.1, runtime_param [symbolic = %N.patt.loc14_13.2 (constants.%N.patt)] // CHECK:STDOUT: %x.patt: @Symbolic.%.loc14_29 (%.6) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @Symbolic.%.loc14_29 (%.6) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Symbolic.%.loc14_29 (%.6) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Symbolic.%.loc14_29 (%.6) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_17.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -221,11 +232,12 @@ var m: UInt(1000000000); // CHECK:STDOUT: %int.make_type_unsigned.loc14_41: init type = call %UInt.ref.loc14_37(%N.ref.loc14_42) [symbolic = %.loc14_29 (constants.%.6)] // CHECK:STDOUT: %.loc14_43.1: type = value_of_initializer %int.make_type_unsigned.loc14_41 [symbolic = %.loc14_29 (constants.%.6)] // CHECK:STDOUT: %.loc14_43.2: type = converted %int.make_type_unsigned.loc14_41, %.loc14_43.1 [symbolic = %.loc14_29 (constants.%.6)] -// CHECK:STDOUT: %return: ref @Symbolic.%.loc14_29 (%.6) = var -// CHECK:STDOUT: %param.loc14_14: i32 = param runtime_param -// CHECK:STDOUT: %N.loc14_13.1: i32 = bind_symbolic_name N, 0, %param.loc14_14 [symbolic = %N.loc14_13.2 (constants.%N)] -// CHECK:STDOUT: %param.loc14_23: @Symbolic.%.loc14_29 (%.6) = param runtime_param0 -// CHECK:STDOUT: %x: @Symbolic.%.loc14_29 (%.6) = bind_name x, %param.loc14_23 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc14_13.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_13.2 (constants.%N)] +// CHECK:STDOUT: %x.param: @Symbolic.%.loc14_29 (%.6) = param runtime_param0 +// CHECK:STDOUT: %x: @Symbolic.%.loc14_29 (%.6) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @Symbolic.%.loc14_29 (%.6) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Symbolic.%.loc14_29 (%.6) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,7 +287,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Main//types, inst+17, loaded [template = constants.%UInt] +// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Main//types, inst+20, loaded [template = constants.%UInt] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators @@ -322,7 +334,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %UInt.type = import_ref Main//types, inst+17, loaded [template = constants.%UInt] +// CHECK:STDOUT: %import_ref.1: %UInt.type = import_ref Main//types, inst+20, loaded [template = constants.%UInt] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.2 // CHECK:STDOUT: import Core//prelude @@ -334,7 +346,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -349,6 +361,8 @@ var m: UInt(1000000000); // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: type = value_of_initializer %int.make_type_32.loc6_14 [template = i32] @@ -356,9 +370,10 @@ var m: UInt(1000000000); // CHECK:STDOUT: %int.make_type_32.loc6_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_22.1: type = value_of_initializer %int.make_type_32.loc6_22 [template = i32] // CHECK:STDOUT: %.loc6_22.2: type = converted %int.make_type_32.loc6_22, %.loc6_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %UInt.ref: %UInt.type = name_ref UInt, imports.%import_ref.1 [template = constants.%UInt] // CHECK:STDOUT: %Negate.ref: %Negate.type = name_ref Negate, %Negate.decl [template = constants.%Negate] @@ -389,7 +404,7 @@ var m: UInt(1000000000); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Main//types, inst+17, loaded [template = constants.%UInt] +// CHECK:STDOUT: %import_ref: %UInt.type = import_ref Main//types, inst+20, loaded [template = constants.%UInt] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/builtins/int/neq.carbon b/toolchain/check/testdata/builtins/int/neq.carbon index 6748652dca7b..b397e858744c 100644 --- a/toolchain/check/testdata/builtins/int/neq.carbon +++ b/toolchain/check/testdata/builtins/int/neq.carbon @@ -62,8 +62,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -81,6 +81,8 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -91,11 +93,12 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc2_27.2: type = converted %bool.make_type, %.loc2_27.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: type = class_decl @True [template = constants.%True] {} {} // CHECK:STDOUT: %False.decl: type = class_decl @False [template = constants.%False] {} {} @@ -107,16 +110,18 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: } { // CHECK:STDOUT: %True.ref.loc7: type = name_ref True, file.%True.decl [template = constants.%True] // CHECK:STDOUT: %False.ref.loc7: type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %param.loc7_11: %True = param runtime_param0 -// CHECK:STDOUT: %true_: %True = bind_name true_, %param.loc7_11 -// CHECK:STDOUT: %param.loc7_25: %False = param runtime_param1 -// CHECK:STDOUT: %false_: %False = bind_name false_, %param.loc7_25 +// CHECK:STDOUT: %true_.param: %True = param runtime_param0 +// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param +// CHECK:STDOUT: %false_.param: %False = param runtime_param1 +// CHECK:STDOUT: %false_: %False = bind_name false_, %false_.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [template = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_19.1: type = value_of_initializer %int.make_type_32.loc12_19 [template = i32] @@ -127,11 +132,12 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_35.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_35.2: type = converted %bool.make_type, %.loc12_35.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc12_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc12_17 -// CHECK:STDOUT: %param.loc12_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc12_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/or.carbon b/toolchain/check/testdata/builtins/int/or.carbon index 4a3b65d6892d..1737dfa878e7 100644 --- a/toolchain/check/testdata/builtins/int/or.carbon +++ b/toolchain/check/testdata/builtins/int/or.carbon @@ -48,7 +48,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -65,6 +65,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_10.1: type = value_of_initializer %int.make_type_32.loc2_10 [template = i32] @@ -75,11 +77,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc2_26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_26.1: type = value_of_initializer %int.make_type_32.loc2_26 [template = i32] // CHECK:STDOUT: %.loc2_26.2: type = converted %int.make_type_32.loc2_26, %.loc2_26.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_8: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_8 -// CHECK:STDOUT: %param.loc2_16: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_16 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Or.ref: %Or.type = name_ref Or, %Or.decl [template = constants.%Or] @@ -102,6 +105,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -112,11 +117,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/int/right_shift.carbon b/toolchain/check/testdata/builtins/int/right_shift.carbon index 89f5c2123680..384574ee0cd5 100644 --- a/toolchain/check/testdata/builtins/int/right_shift.carbon +++ b/toolchain/check/testdata/builtins/int/right_shift.carbon @@ -93,7 +93,7 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -110,6 +110,8 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_18.1: type = value_of_initializer %int.make_type_32.loc2_18 [template = i32] @@ -120,11 +122,12 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc2_34: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_34.1: type = value_of_initializer %int.make_type_32.loc2_34 [template = i32] // CHECK:STDOUT: %.loc2_34.2: type = converted %int.make_type_32.loc2_34, %.loc2_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_16: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_16 -// CHECK:STDOUT: %param.loc2_24: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_24 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %RightShift.ref: %RightShift.type = name_ref RightShift, %RightShift.decl [template = constants.%RightShift] @@ -147,6 +150,8 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -157,11 +162,12 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -223,7 +229,7 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -242,6 +248,8 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_18.1: type = value_of_initializer %int.make_type_32.loc6_18 [template = i32] @@ -252,15 +260,18 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc6_34: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_34.1: type = value_of_initializer %int.make_type_32.loc6_34 [template = i32] // CHECK:STDOUT: %.loc6_34.2: type = converted %int.make_type_32.loc6_34, %.loc6_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc6_16: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc6_16 -// CHECK:STDOUT: %param.loc6_24: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc6_24 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_14.1: type = value_of_initializer %int.make_type_32.loc7_14 [template = i32] @@ -268,9 +279,10 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc7_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_22.1: type = value_of_initializer %int.make_type_32.loc7_22 [template = i32] // CHECK:STDOUT: %.loc7_22.2: type = converted %int.make_type_32.loc7_22, %.loc7_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Negate.ref.loc10_17: %Negate.type = name_ref Negate, %Negate.decl [template = constants.%Negate] @@ -369,7 +381,7 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -388,6 +400,8 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_18.1: type = value_of_initializer %int.make_type_32.loc4_18 [template = i32] @@ -398,15 +412,18 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc4_34: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_34.1: type = value_of_initializer %int.make_type_32.loc4_34 [template = i32] // CHECK:STDOUT: %.loc4_34.2: type = converted %int.make_type_32.loc4_34, %.loc4_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_16: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_16 -// CHECK:STDOUT: %param.loc4_24: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_24 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_14.1: type = value_of_initializer %int.make_type_32.loc5_14 [template = i32] @@ -414,9 +431,10 @@ let negative: i32 = RightShift(1, Negate(1)); // CHECK:STDOUT: %int.make_type_32.loc5_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_22.1: type = value_of_initializer %int.make_type_32.loc5_22 [template = i32] // CHECK:STDOUT: %.loc5_22.2: type = converted %int.make_type_32.loc5_22, %.loc5_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc8: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_13.1: type = value_of_initializer %int.make_type_32.loc8 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/sadd.carbon b/toolchain/check/testdata/builtins/int/sadd.carbon index 3a29405c8a2c..c570a8ff2014 100644 --- a/toolchain/check/testdata/builtins/int/sadd.carbon +++ b/toolchain/check/testdata/builtins/int/sadd.carbon @@ -118,7 +118,7 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -135,6 +135,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -145,11 +147,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, %Add.decl [template = constants.%Add] @@ -172,6 +175,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -182,11 +187,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,8 +259,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -276,6 +282,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc8_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_14.1: type = value_of_initializer %int.make_type_32.loc8_14 [template = i32] @@ -283,9 +291,10 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc8_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_22.1: type = value_of_initializer %int.make_type_32.loc8_22 [template = i32] // CHECK:STDOUT: %.loc8_22.2: type = converted %int.make_type_32.loc8_22, %.loc8_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -294,6 +303,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: i32 = binding_pattern c // CHECK:STDOUT: %c.param_patt: i32 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_15.1: type = value_of_initializer %int.make_type_32.loc13_15 [template = i32] @@ -307,19 +318,22 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc13_39: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_39.1: type = value_of_initializer %int.make_type_32.loc13_39 [template = i32] // CHECK:STDOUT: %.loc13_39.2: type = converted %int.make_type_32.loc13_39, %.loc13_39.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc13_13: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_21 -// CHECK:STDOUT: %param.loc13_29: i32 = param runtime_param2 -// CHECK:STDOUT: %c: i32 = bind_name c, %param.loc13_29 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: i32 = param runtime_param2 +// CHECK:STDOUT: %c: i32 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc18_21: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_21.1: type = value_of_initializer %int.make_type_32.loc18_21 [template = i32] @@ -330,17 +344,20 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc18_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc18_37.2: type = converted %bool.make_type, %.loc18_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc18_19: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc18_19 -// CHECK:STDOUT: %param.loc18_27: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc18_27 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc19_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_17.1: type = value_of_initializer %int.make_type_32.loc19_17 [template = i32] @@ -351,11 +368,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc19_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_33.1: type = value_of_initializer %int.make_type_32.loc19_33 [template = i32] // CHECK:STDOUT: %.loc19_33.2: type = converted %int.make_type_32.loc19_33, %.loc19_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc19_15: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc19_15 -// CHECK:STDOUT: %param.loc19_23: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc19_23 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %TooFew.ref: %TooFew.type = name_ref TooFew, %TooFew.decl [template = constants.%TooFew] @@ -391,6 +409,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc46_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc46_25.1: type = value_of_initializer %int.make_type_32.loc46_25 [template = i32] @@ -398,9 +418,10 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc46_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc46_33.1: type = value_of_initializer %int.make_type_32.loc46_33 [template = i32] // CHECK:STDOUT: %.loc46_33.2: type = converted %int.make_type_32.loc46_33, %.loc46_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -409,6 +430,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: i32 = binding_pattern c // CHECK:STDOUT: %c.param_patt: i32 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc50_26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc50_26.1: type = value_of_initializer %int.make_type_32.loc50_26 [template = i32] @@ -422,19 +445,22 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc50_50: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc50_50.1: type = value_of_initializer %int.make_type_32.loc50_50 [template = i32] // CHECK:STDOUT: %.loc50_50.2: type = converted %int.make_type_32.loc50_50, %.loc50_50.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc50_24: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc50_24 -// CHECK:STDOUT: %param.loc50_32: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc50_32 -// CHECK:STDOUT: %param.loc50_40: i32 = param runtime_param2 -// CHECK:STDOUT: %c: i32 = bind_name c, %param.loc50_40 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: i32 = param runtime_param2 +// CHECK:STDOUT: %c: i32 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc54_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc54_32.1: type = value_of_initializer %int.make_type_32.loc54_32 [template = i32] @@ -445,11 +471,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc54_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc54_48.2: type = converted %bool.make_type, %.loc54_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc54_30: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc54_30 -// CHECK:STDOUT: %param.loc54_38: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc54_38 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -524,7 +551,7 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -540,6 +567,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -550,11 +579,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_8.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/sdiv.carbon b/toolchain/check/testdata/builtins/int/sdiv.carbon index a223dd4c6c95..e2e550f9f7fd 100644 --- a/toolchain/check/testdata/builtins/int/sdiv.carbon +++ b/toolchain/check/testdata/builtins/int/sdiv.carbon @@ -86,7 +86,7 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -103,6 +103,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -113,11 +115,12 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Div.ref: %Div.type = name_ref Div, %Div.decl [template = constants.%Div] @@ -140,6 +143,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -150,11 +155,12 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -212,7 +218,7 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -231,6 +237,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -241,17 +249,20 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_11.1: type = value_of_initializer %int.make_type_32.loc5_11 [template = i32] @@ -262,15 +273,18 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc5_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_27.1: type = value_of_initializer %int.make_type_32.loc5_27 [template = i32] // CHECK:STDOUT: %.loc5_27.2: type = converted %int.make_type_32.loc5_27, %.loc5_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_9 -// CHECK:STDOUT: %param.loc5_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: type = value_of_initializer %int.make_type_32.loc6_14 [template = i32] @@ -278,9 +292,10 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc6_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_22.1: type = value_of_initializer %int.make_type_32.loc6_22 [template = i32] // CHECK:STDOUT: %.loc6_22.2: type = converted %int.make_type_32.loc6_22, %.loc6_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_8.1: type = value_of_initializer %int.make_type_32.loc9 [template = i32] @@ -381,7 +396,7 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -397,6 +412,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -407,11 +424,12 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_8.1: type = value_of_initializer %int.make_type_32.loc10 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/smod.carbon b/toolchain/check/testdata/builtins/int/smod.carbon index 81e8bab0ae68..1691043ddb5f 100644 --- a/toolchain/check/testdata/builtins/int/smod.carbon +++ b/toolchain/check/testdata/builtins/int/smod.carbon @@ -89,7 +89,7 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -106,6 +106,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -116,11 +118,12 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Mod.ref: %Mod.type = name_ref Mod, %Mod.decl [template = constants.%Mod] @@ -143,6 +146,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -153,11 +158,12 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -216,7 +222,7 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -235,6 +241,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -245,17 +253,20 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_11.1: type = value_of_initializer %int.make_type_32.loc5_11 [template = i32] @@ -266,15 +277,18 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc5_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_27.1: type = value_of_initializer %int.make_type_32.loc5_27 [template = i32] // CHECK:STDOUT: %.loc5_27.2: type = converted %int.make_type_32.loc5_27, %.loc5_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_9 -// CHECK:STDOUT: %param.loc5_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: type = value_of_initializer %int.make_type_32.loc6_14 [template = i32] @@ -282,9 +296,10 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc6_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_22.1: type = value_of_initializer %int.make_type_32.loc6_22 [template = i32] // CHECK:STDOUT: %.loc6_22.2: type = converted %int.make_type_32.loc6_22, %.loc6_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_8.1: type = value_of_initializer %int.make_type_32.loc9 [template = i32] @@ -385,7 +400,7 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -401,6 +416,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -411,11 +428,12 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_8.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/smul.carbon b/toolchain/check/testdata/builtins/int/smul.carbon index 45fe82ecdc23..198e717f0947 100644 --- a/toolchain/check/testdata/builtins/int/smul.carbon +++ b/toolchain/check/testdata/builtins/int/smul.carbon @@ -60,7 +60,7 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,6 +77,8 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -87,11 +89,12 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Mul.ref: %Mul.type = name_ref Mul, %Mul.decl [template = constants.%Mul] @@ -114,6 +117,8 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -124,11 +129,12 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -182,7 +188,7 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -198,6 +204,8 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -208,11 +216,12 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_8.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/snegate.carbon b/toolchain/check/testdata/builtins/int/snegate.carbon index 383e64d779aa..84d61e5ae114 100644 --- a/toolchain/check/testdata/builtins/int/snegate.carbon +++ b/toolchain/check/testdata/builtins/int/snegate.carbon @@ -146,7 +146,7 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -162,6 +162,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_14.1: type = value_of_initializer %int.make_type_32.loc2_14 [template = i32] @@ -169,9 +171,10 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc2_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_22.1: type = value_of_initializer %int.make_type_32.loc2_22 [template = i32] // CHECK:STDOUT: %.loc2_22.2: type = converted %int.make_type_32.loc2_22, %.loc2_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Negate.ref.loc4_16: %Negate.type = name_ref Negate, %Negate.decl [template = constants.%Negate] @@ -200,6 +203,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc9_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_19.1: type = value_of_initializer %int.make_type_32.loc9_19 [template = i32] @@ -210,11 +215,12 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc9_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_35.1: type = value_of_initializer %int.make_type_32.loc9_35 [template = i32] // CHECK:STDOUT: %.loc9_35.2: type = converted %int.make_type_32.loc9_35, %.loc9_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc9_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc9_17 -// CHECK:STDOUT: %param.loc9_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc9_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -285,8 +291,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -305,17 +311,23 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: .RuntimeCallBadReturnType = %RuntimeCallBadReturnType.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] {} { +// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_16.2: type = converted %int.make_type_32, %.loc8_16.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_15.1: type = value_of_initializer %int.make_type_32.loc13_15 [template = i32] @@ -326,15 +338,18 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc13_31: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_31.1: type = value_of_initializer %int.make_type_32.loc13_31 [template = i32] // CHECK:STDOUT: %.loc13_31.2: type = converted %int.make_type_32.loc13_31, %.loc13_31.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc13_13: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_21 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_21.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -342,13 +357,16 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc18_29.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc18_29.2: type = converted %bool.make_type, %.loc18_29.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: bool = param runtime_param1 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc19_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_17.1: type = value_of_initializer %int.make_type_32.loc19_17 [template = i32] @@ -356,9 +374,10 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc19_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_25.1: type = value_of_initializer %int.make_type_32.loc19_25 [template = i32] // CHECK:STDOUT: %.loc19_25.2: type = converted %int.make_type_32.loc19_25, %.loc19_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %TooFew.ref: %TooFew.type = name_ref TooFew, %TooFew.decl [template = constants.%TooFew] @@ -390,6 +409,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc46_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc46_25.1: type = value_of_initializer %int.make_type_32.loc46_25 [template = i32] @@ -397,9 +418,10 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc46_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc46_33.1: type = value_of_initializer %int.make_type_32.loc46_33 [template = i32] // CHECK:STDOUT: %.loc46_33.2: type = converted %int.make_type_32.loc46_33, %.loc46_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -408,6 +430,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: i32 = binding_pattern c // CHECK:STDOUT: %c.param_patt: i32 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc57_26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc57_26.1: type = value_of_initializer %int.make_type_32.loc57_26 [template = i32] @@ -421,19 +445,22 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc57_50: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc57_50.1: type = value_of_initializer %int.make_type_32.loc57_50 [template = i32] // CHECK:STDOUT: %.loc57_50.2: type = converted %int.make_type_32.loc57_50, %.loc57_50.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc57_24: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc57_24 -// CHECK:STDOUT: %param.loc57_32: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc57_32 -// CHECK:STDOUT: %param.loc57_40: i32 = param runtime_param2 -// CHECK:STDOUT: %c: i32 = bind_name c, %param.loc57_40 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: i32 = param runtime_param2 +// CHECK:STDOUT: %c: i32 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc68_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc68_32.1: type = value_of_initializer %int.make_type_32.loc68_32 [template = i32] @@ -444,11 +471,12 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc68_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc68_48.2: type = converted %bool.make_type, %.loc68_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc68_30: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc68_30 -// CHECK:STDOUT: %param.loc68_38: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc68_38 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -516,7 +544,7 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -531,6 +559,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_14.1: type = value_of_initializer %int.make_type_32.loc4_14 [template = i32] @@ -538,15 +568,18 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc4_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_22.1: type = value_of_initializer %int.make_type_32.loc4_22 [template = i32] // CHECK:STDOUT: %.loc4_22.2: type = converted %int.make_type_32.loc4_22, %.loc4_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_11.1: type = value_of_initializer %int.make_type_32.loc5_11 [template = i32] @@ -557,11 +590,12 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc5_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_27.1: type = value_of_initializer %int.make_type_32.loc5_27 [template = i32] // CHECK:STDOUT: %.loc5_27.2: type = converted %int.make_type_32.loc5_27, %.loc5_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_9 -// CHECK:STDOUT: %param.loc5_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc8: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_8.1: type = value_of_initializer %int.make_type_32.loc8 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/ssub.carbon b/toolchain/check/testdata/builtins/int/ssub.carbon index be1c0e34ae78..b12c539ce2f6 100644 --- a/toolchain/check/testdata/builtins/int/ssub.carbon +++ b/toolchain/check/testdata/builtins/int/ssub.carbon @@ -61,7 +61,7 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -78,6 +78,8 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -88,11 +90,12 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Sub.ref: %Sub.type = name_ref Sub, %Sub.decl [template = constants.%Sub] @@ -115,6 +118,8 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -125,11 +130,12 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -184,7 +190,7 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -201,6 +207,8 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -211,11 +219,12 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_8.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/uadd.carbon b/toolchain/check/testdata/builtins/int/uadd.carbon index ad32c3445b99..bb429528f9b0 100644 --- a/toolchain/check/testdata/builtins/int/uadd.carbon +++ b/toolchain/check/testdata/builtins/int/uadd.carbon @@ -115,7 +115,7 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -132,6 +132,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -142,11 +144,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, %Add.decl [template = constants.%Add] @@ -169,6 +172,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -179,11 +184,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -250,8 +256,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -273,6 +279,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc8_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_14.1: type = value_of_initializer %int.make_type_32.loc8_14 [template = i32] @@ -280,9 +288,10 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc8_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_22.1: type = value_of_initializer %int.make_type_32.loc8_22 [template = i32] // CHECK:STDOUT: %.loc8_22.2: type = converted %int.make_type_32.loc8_22, %.loc8_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -291,6 +300,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: i32 = binding_pattern c // CHECK:STDOUT: %c.param_patt: i32 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_15.1: type = value_of_initializer %int.make_type_32.loc13_15 [template = i32] @@ -304,19 +315,22 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc13_39: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_39.1: type = value_of_initializer %int.make_type_32.loc13_39 [template = i32] // CHECK:STDOUT: %.loc13_39.2: type = converted %int.make_type_32.loc13_39, %.loc13_39.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc13_13: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_21 -// CHECK:STDOUT: %param.loc13_29: i32 = param runtime_param2 -// CHECK:STDOUT: %c: i32 = bind_name c, %param.loc13_29 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: i32 = param runtime_param2 +// CHECK:STDOUT: %c: i32 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc18_21: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_21.1: type = value_of_initializer %int.make_type_32.loc18_21 [template = i32] @@ -327,17 +341,20 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc18_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc18_37.2: type = converted %bool.make_type, %.loc18_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc18_19: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc18_19 -// CHECK:STDOUT: %param.loc18_27: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc18_27 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc19_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_17.1: type = value_of_initializer %int.make_type_32.loc19_17 [template = i32] @@ -348,11 +365,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc19_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_33.1: type = value_of_initializer %int.make_type_32.loc19_33 [template = i32] // CHECK:STDOUT: %.loc19_33.2: type = converted %int.make_type_32.loc19_33, %.loc19_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc19_15: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc19_15 -// CHECK:STDOUT: %param.loc19_23: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc19_23 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %TooFew.ref: %TooFew.type = name_ref TooFew, %TooFew.decl [template = constants.%TooFew] @@ -388,6 +406,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc45_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc45_25.1: type = value_of_initializer %int.make_type_32.loc45_25 [template = i32] @@ -395,9 +415,10 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc45_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc45_33.1: type = value_of_initializer %int.make_type_32.loc45_33 [template = i32] // CHECK:STDOUT: %.loc45_33.2: type = converted %int.make_type_32.loc45_33, %.loc45_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -406,6 +427,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: i32 = binding_pattern c // CHECK:STDOUT: %c.param_patt: i32 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc49_26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc49_26.1: type = value_of_initializer %int.make_type_32.loc49_26 [template = i32] @@ -419,19 +442,22 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc49_50: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc49_50.1: type = value_of_initializer %int.make_type_32.loc49_50 [template = i32] // CHECK:STDOUT: %.loc49_50.2: type = converted %int.make_type_32.loc49_50, %.loc49_50.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc49_24: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc49_24 -// CHECK:STDOUT: %param.loc49_32: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc49_32 -// CHECK:STDOUT: %param.loc49_40: i32 = param runtime_param2 -// CHECK:STDOUT: %c: i32 = bind_name c, %param.loc49_40 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: i32 = param runtime_param2 +// CHECK:STDOUT: %c: i32 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc53_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc53_32.1: type = value_of_initializer %int.make_type_32.loc53_32 [template = i32] @@ -442,11 +468,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc53_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc53_48.2: type = converted %bool.make_type, %.loc53_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc53_30: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc53_30 -// CHECK:STDOUT: %param.loc53_38: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc53_38 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -521,7 +548,7 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -537,6 +564,8 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -547,11 +576,12 @@ let b: i32 = Add(0x7FFFFFFF, 1); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc7: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_8.1: type = value_of_initializer %int.make_type_32.loc7 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/udiv.carbon b/toolchain/check/testdata/builtins/int/udiv.carbon index b9077bf5180f..982dd5b98c90 100644 --- a/toolchain/check/testdata/builtins/int/udiv.carbon +++ b/toolchain/check/testdata/builtins/int/udiv.carbon @@ -82,7 +82,7 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -99,6 +99,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -109,11 +111,12 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Div.ref: %Div.type = name_ref Div, %Div.decl [template = constants.%Div] @@ -136,6 +139,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -146,11 +151,12 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -209,7 +215,7 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -228,6 +234,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -238,17 +246,20 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_11.1: type = value_of_initializer %int.make_type_32.loc5_11 [template = i32] @@ -259,15 +270,18 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc5_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_27.1: type = value_of_initializer %int.make_type_32.loc5_27 [template = i32] // CHECK:STDOUT: %.loc5_27.2: type = converted %int.make_type_32.loc5_27, %.loc5_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_9 -// CHECK:STDOUT: %param.loc5_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: type = value_of_initializer %int.make_type_32.loc6_14 [template = i32] @@ -275,9 +289,10 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc6_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_22.1: type = value_of_initializer %int.make_type_32.loc6_22 [template = i32] // CHECK:STDOUT: %.loc6_22.2: type = converted %int.make_type_32.loc6_22, %.loc6_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_8.1: type = value_of_initializer %int.make_type_32.loc9 [template = i32] @@ -378,7 +393,7 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -394,6 +409,8 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -404,11 +421,12 @@ let b: i32 = Div(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_8.1: type = value_of_initializer %int.make_type_32.loc10 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/umod.carbon b/toolchain/check/testdata/builtins/int/umod.carbon index 4c5dba67699c..1dc63abe78ee 100644 --- a/toolchain/check/testdata/builtins/int/umod.carbon +++ b/toolchain/check/testdata/builtins/int/umod.carbon @@ -84,7 +84,7 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -101,6 +101,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -111,11 +113,12 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Mod.ref: %Mod.type = name_ref Mod, %Mod.decl [template = constants.%Mod] @@ -138,6 +141,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -148,11 +153,12 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -211,7 +217,7 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -230,6 +236,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -240,17 +248,20 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_11.1: type = value_of_initializer %int.make_type_32.loc5_11 [template = i32] @@ -261,15 +272,18 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc5_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_27.1: type = value_of_initializer %int.make_type_32.loc5_27 [template = i32] // CHECK:STDOUT: %.loc5_27.2: type = converted %int.make_type_32.loc5_27, %.loc5_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_9 -// CHECK:STDOUT: %param.loc5_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: type = value_of_initializer %int.make_type_32.loc6_14 [template = i32] @@ -277,9 +291,10 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc6_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_22.1: type = value_of_initializer %int.make_type_32.loc6_22 [template = i32] // CHECK:STDOUT: %.loc6_22.2: type = converted %int.make_type_32.loc6_22, %.loc6_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_8.1: type = value_of_initializer %int.make_type_32.loc9 [template = i32] @@ -380,7 +395,7 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -396,6 +411,8 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -406,11 +423,12 @@ let b: i32 = Mod(0, 0); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_8.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/umul.carbon b/toolchain/check/testdata/builtins/int/umul.carbon index d21b91e35e70..f9e8090d1cf7 100644 --- a/toolchain/check/testdata/builtins/int/umul.carbon +++ b/toolchain/check/testdata/builtins/int/umul.carbon @@ -57,7 +57,7 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -74,6 +74,8 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -84,11 +86,12 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Mul.ref: %Mul.type = name_ref Mul, %Mul.decl [template = constants.%Mul] @@ -111,6 +114,8 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -121,11 +126,12 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -179,7 +185,7 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -195,6 +201,8 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -205,11 +213,12 @@ let b: i32 = Mul(0x8000, 0x10000); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_8.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/unegate.carbon b/toolchain/check/testdata/builtins/int/unegate.carbon index 8450ed9bc30f..245cffc38763 100644 --- a/toolchain/check/testdata/builtins/int/unegate.carbon +++ b/toolchain/check/testdata/builtins/int/unegate.carbon @@ -142,7 +142,7 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -158,6 +158,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_14.1: type = value_of_initializer %int.make_type_32.loc2_14 [template = i32] @@ -165,9 +167,10 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc2_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_22.1: type = value_of_initializer %int.make_type_32.loc2_22 [template = i32] // CHECK:STDOUT: %.loc2_22.2: type = converted %int.make_type_32.loc2_22, %.loc2_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Negate.ref.loc4_16: %Negate.type = name_ref Negate, %Negate.decl [template = constants.%Negate] @@ -196,6 +199,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc9_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_19.1: type = value_of_initializer %int.make_type_32.loc9_19 [template = i32] @@ -206,11 +211,12 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc9_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc9_35.1: type = value_of_initializer %int.make_type_32.loc9_35 [template = i32] // CHECK:STDOUT: %.loc9_35.2: type = converted %int.make_type_32.loc9_35, %.loc9_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc9_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc9_17 -// CHECK:STDOUT: %param.loc9_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc9_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -281,8 +287,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -301,17 +307,23 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: .RuntimeCallBadReturnType = %RuntimeCallBadReturnType.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] {} { +// CHECK:STDOUT: %TooFew.decl: %TooFew.type = fn_decl @TooFew [template = constants.%TooFew] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_16.2: type = converted %int.make_type_32, %.loc8_16.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TooMany.decl: %TooMany.type = fn_decl @TooMany [template = constants.%TooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_15.1: type = value_of_initializer %int.make_type_32.loc13_15 [template = i32] @@ -322,15 +334,18 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc13_31: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_31.1: type = value_of_initializer %int.make_type_32.loc13_31 [template = i32] // CHECK:STDOUT: %.loc13_31.2: type = converted %int.make_type_32.loc13_31, %.loc13_31.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc13_13: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_13 -// CHECK:STDOUT: %param.loc13_21: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_21 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %BadReturnType.decl: %BadReturnType.type = fn_decl @BadReturnType [template = constants.%BadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_21.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -338,13 +353,16 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc18_29.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc18_29.2: type = converted %bool.make_type, %.loc18_29.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: bool = param runtime_param1 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %JustRight.decl: %JustRight.type = fn_decl @JustRight [template = constants.%JustRight] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc19_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_17.1: type = value_of_initializer %int.make_type_32.loc19_17 [template = i32] @@ -352,9 +370,10 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc19_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_25.1: type = value_of_initializer %int.make_type_32.loc19_25 [template = i32] // CHECK:STDOUT: %.loc19_25.2: type = converted %int.make_type_32.loc19_25, %.loc19_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %TooFew.ref: %TooFew.type = name_ref TooFew, %TooFew.decl [template = constants.%TooFew] @@ -386,6 +405,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %RuntimeCallTooFew.decl: %RuntimeCallTooFew.type = fn_decl @RuntimeCallTooFew [template = constants.%RuntimeCallTooFew] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc46_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc46_25.1: type = value_of_initializer %int.make_type_32.loc46_25 [template = i32] @@ -393,9 +414,10 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc46_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc46_33.1: type = value_of_initializer %int.make_type_32.loc46_33 [template = i32] // CHECK:STDOUT: %.loc46_33.2: type = converted %int.make_type_32.loc46_33, %.loc46_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallTooMany.decl: %RuntimeCallTooMany.type = fn_decl @RuntimeCallTooMany [template = constants.%RuntimeCallTooMany] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -404,6 +426,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: i32 = binding_pattern c // CHECK:STDOUT: %c.param_patt: i32 = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc57_26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc57_26.1: type = value_of_initializer %int.make_type_32.loc57_26 [template = i32] @@ -417,19 +441,22 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc57_50: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc57_50.1: type = value_of_initializer %int.make_type_32.loc57_50 [template = i32] // CHECK:STDOUT: %.loc57_50.2: type = converted %int.make_type_32.loc57_50, %.loc57_50.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc57_24: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc57_24 -// CHECK:STDOUT: %param.loc57_32: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc57_32 -// CHECK:STDOUT: %param.loc57_40: i32 = param runtime_param2 -// CHECK:STDOUT: %c: i32 = bind_name c, %param.loc57_40 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: i32 = param runtime_param2 +// CHECK:STDOUT: %c: i32 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %RuntimeCallBadReturnType.decl: %RuntimeCallBadReturnType.type = fn_decl @RuntimeCallBadReturnType [template = constants.%RuntimeCallBadReturnType] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc68_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc68_32.1: type = value_of_initializer %int.make_type_32.loc68_32 [template = i32] @@ -440,11 +467,12 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc68_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc68_48.2: type = converted %bool.make_type, %.loc68_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc68_30: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc68_30 -// CHECK:STDOUT: %param.loc68_38: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc68_38 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -512,7 +540,7 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -527,6 +555,8 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %Negate.decl: %Negate.type = fn_decl @Negate [template = constants.%Negate] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_14.1: type = value_of_initializer %int.make_type_32.loc4_14 [template = i32] @@ -534,15 +564,18 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc4_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_22.1: type = value_of_initializer %int.make_type_32.loc4_22 [template = i32] // CHECK:STDOUT: %.loc4_22.2: type = converted %int.make_type_32.loc4_22, %.loc4_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_11.1: type = value_of_initializer %int.make_type_32.loc5_11 [template = i32] @@ -553,11 +586,12 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1)); // CHECK:STDOUT: %int.make_type_32.loc5_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_27.1: type = value_of_initializer %int.make_type_32.loc5_27 [template = i32] // CHECK:STDOUT: %.loc5_27.2: type = converted %int.make_type_32.loc5_27, %.loc5_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_9 -// CHECK:STDOUT: %param.loc5_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc8: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_8.1: type = value_of_initializer %int.make_type_32.loc8 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/usub.carbon b/toolchain/check/testdata/builtins/int/usub.carbon index 2394778eac3e..8f752ac2948f 100644 --- a/toolchain/check/testdata/builtins/int/usub.carbon +++ b/toolchain/check/testdata/builtins/int/usub.carbon @@ -58,7 +58,7 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -75,6 +75,8 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -85,11 +87,12 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Sub.ref: %Sub.type = name_ref Sub, %Sub.decl [template = constants.%Sub] @@ -112,6 +115,8 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -122,11 +127,12 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -181,7 +187,7 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -198,6 +204,8 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4_11 [template = i32] @@ -208,11 +216,12 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2); // CHECK:STDOUT: %int.make_type_32.loc4_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32.loc4_27 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32.loc4_27, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc4_9 -// CHECK:STDOUT: %param.loc4_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc4_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_8.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] diff --git a/toolchain/check/testdata/builtins/int/xor.carbon b/toolchain/check/testdata/builtins/int/xor.carbon index fcc7e9f7ef86..a2f1c394b9cd 100644 --- a/toolchain/check/testdata/builtins/int/xor.carbon +++ b/toolchain/check/testdata/builtins/int/xor.carbon @@ -48,7 +48,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -65,6 +65,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc2_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_11.1: type = value_of_initializer %int.make_type_32.loc2_11 [template = i32] @@ -75,11 +77,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc2_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_27.1: type = value_of_initializer %int.make_type_32.loc2_27 [template = i32] // CHECK:STDOUT: %.loc2_27.2: type = converted %int.make_type_32.loc2_27, %.loc2_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc2_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc2_9 -// CHECK:STDOUT: %param.loc2_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc2_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Xor.ref: %Xor.type = name_ref Xor, %Xor.decl [template = constants.%Xor] @@ -102,6 +105,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc7_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_19.1: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] @@ -112,11 +117,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc7_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_35.1: type = value_of_initializer %int.make_type_32.loc7_35 [template = i32] // CHECK:STDOUT: %.loc7_35.2: type = converted %int.make_type_32.loc7_35, %.loc7_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc7_17 -// CHECK:STDOUT: %param.loc7_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc7_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/print.carbon b/toolchain/check/testdata/builtins/print.carbon index b2b760a6e342..7848be08d91d 100644 --- a/toolchain/check/testdata/builtins/print.carbon +++ b/toolchain/check/testdata/builtins/print.carbon @@ -45,7 +45,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.2: %Print.type.2 = import_ref Core//prelude, inst+48, loaded [template = constants.%Print.2] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -63,8 +63,8 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_13.2: type = converted %int.make_type_32, %.loc11_13.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index e29044ba8add..ab67a4fca651 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -179,7 +179,7 @@ class A { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -203,15 +203,23 @@ class A { // CHECK:STDOUT: %.loc6_39.2: type = converted %int.make_type_32.loc6, %.loc6_39.1 [template = i32] // CHECK:STDOUT: %.loc6_45: i32 = int_literal 5 [template = constants.%.3] // CHECK:STDOUT: %SOME_INTERNAL_CONSTANT: i32 = bind_name SOME_INTERNAL_CONSTANT, %.loc6_45 -// CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [template = constants.%SomeInternalFunction] {} { +// CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [template = constants.%SomeInternalFunction] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_40.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_40.2: type = converted %int.make_type_32, %.loc8_40.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %Circle = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Circle = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [template = constants.%Circle] -// CHECK:STDOUT: %return: ref %Circle = var +// CHECK:STDOUT: %return.param: %Circle = param runtime_param0 +// CHECK:STDOUT: %return: ref %Circle = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.4 [template = constants.%.5] // CHECK:STDOUT: @@ -296,7 +304,7 @@ class A { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -367,7 +375,7 @@ class A { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -387,32 +395,42 @@ class A { // CHECK:STDOUT: %GetRadius.decl: %GetRadius.type = fn_decl @GetRadius [template = constants.%GetRadius] { // CHECK:STDOUT: %self.patt: %Circle = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Circle = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [template = constants.%Circle] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_33.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc7_33.2: type = converted %int.make_type_32, %.loc7_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Circle = param runtime_param0 -// CHECK:STDOUT: %self: %Circle = bind_name self, %param +// CHECK:STDOUT: %self.param: %Circle = param runtime_param0 +// CHECK:STDOUT: %self: %Circle = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [template = constants.%SomeInternalFunction] {} { +// CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [template = constants.%SomeInternalFunction] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_40.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_40.2: type = converted %int.make_type_32, %.loc11_40.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Compute.decl: %Compute.type = fn_decl @Compute [template = constants.%Compute] { // CHECK:STDOUT: %self.patt: %Circle = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Circle = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [template = constants.%Circle] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_31.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_31.2: type = converted %int.make_type_32, %.loc15_31.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Circle = param runtime_param0 -// CHECK:STDOUT: %self: %Circle = bind_name self, %param +// CHECK:STDOUT: %self.param: %Circle = param runtime_param0 +// CHECK:STDOUT: %self: %Circle = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: @@ -476,7 +494,7 @@ class A { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -540,7 +558,7 @@ class A { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/adapt.carbon b/toolchain/check/testdata/class/adapt.carbon index 1a6f4b72afd8..deefb19e4305 100644 --- a/toolchain/check/testdata/class/adapt.carbon +++ b/toolchain/check/testdata/class/adapt.carbon @@ -73,7 +73,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -176,8 +176,8 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: %a.param_patt: %AdaptNotExtend = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptNotExtend.ref: type = name_ref AdaptNotExtend, file.%AdaptNotExtend.decl [template = constants.%AdaptNotExtend] -// CHECK:STDOUT: %param: %AdaptNotExtend = param runtime_param0 -// CHECK:STDOUT: %a: %AdaptNotExtend = bind_name a, %param +// CHECK:STDOUT: %a.param: %AdaptNotExtend = param runtime_param0 +// CHECK:STDOUT: %a: %AdaptNotExtend = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index a1e4291383b6..fc8d9b62be61 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -71,7 +71,7 @@ fn Access(d: Derived) -> (i32, i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,13 +85,19 @@ fn Access(d: Derived) -> (i32, i32) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {} -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %Derived = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Derived = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %return: ref %Derived = var +// CHECK:STDOUT: %return.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %return: ref %Derived = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [template = constants.%Access] { // CHECK:STDOUT: %d.patt: %Derived = binding_pattern d // CHECK:STDOUT: %d.param_patt: %Derived = param_pattern %d.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.17 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.17 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32.loc25_27: init type = call constants.%Int32() [template = i32] @@ -102,9 +108,10 @@ fn Access(d: Derived) -> (i32, i32) { // CHECK:STDOUT: %.loc25_35.4: type = value_of_initializer %int.make_type_32.loc25_32 [template = i32] // CHECK:STDOUT: %.loc25_35.5: type = converted %int.make_type_32.loc25_32, %.loc25_35.4 [template = i32] // CHECK:STDOUT: %.loc25_35.6: type = converted %.loc25_35.1, constants.%.17 [template = constants.%.17] -// CHECK:STDOUT: %return: ref %.17 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %d: %Derived = bind_name d, %param +// CHECK:STDOUT: %d.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param +// CHECK:STDOUT: %return.param: %.17 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.17 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_field.carbon b/toolchain/check/testdata/class/base_field.carbon index 050ec18a3d6e..d62483f71808 100644 --- a/toolchain/check/testdata/class/base_field.carbon +++ b/toolchain/check/testdata/class/base_field.carbon @@ -62,7 +62,7 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -78,6 +78,8 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [template = constants.%Access] { // CHECK:STDOUT: %p.patt: %.10 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.10 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.11 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.11 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %.loc24_21: type = ptr_type %Derived [template = constants.%.10] @@ -85,9 +87,10 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %.loc24_30.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc24_30.2: type = converted %int.make_type_32, %.loc24_30.1 [template = i32] // CHECK:STDOUT: %.loc24_30.3: type = ptr_type i32 [template = constants.%.11] -// CHECK:STDOUT: %return: ref %.11 = var -// CHECK:STDOUT: %param: %.10 = param runtime_param0 -// CHECK:STDOUT: %p: %.10 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.10 = param runtime_param0 +// CHECK:STDOUT: %p: %.10 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.11 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.11 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method.carbon b/toolchain/check/testdata/class/base_method.carbon index 0c630ab0f754..bb353569302e 100644 --- a/toolchain/check/testdata/class/base_method.carbon +++ b/toolchain/check/testdata/class/base_method.carbon @@ -64,7 +64,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -83,8 +83,8 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Base [template = constants.%Base] // CHECK:STDOUT: %.loc17_26: type = ptr_type %Base [template = constants.%.3] -// CHECK:STDOUT: %param.loc17: %.3 = param runtime_param0 -// CHECK:STDOUT: %self.loc17: %.3 = bind_name self, %param.loc17 +// CHECK:STDOUT: %self.param.loc17: %.3 = param runtime_param0 +// CHECK:STDOUT: %self.loc17: %.3 = bind_name self, %self.param.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {} // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { @@ -93,8 +93,8 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %.loc25: type = ptr_type %Derived [template = constants.%.11] -// CHECK:STDOUT: %param: %.11 = param runtime_param0 -// CHECK:STDOUT: %p: %.11 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.11 = param runtime_param0 +// CHECK:STDOUT: %p: %.11 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -110,8 +110,8 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, constants.%Base [template = constants.%Base] // CHECK:STDOUT: %.loc14: type = ptr_type %Base [template = constants.%.3] -// CHECK:STDOUT: %param.loc14: %.3 = param runtime_param0 -// CHECK:STDOUT: %self.loc14: %.3 = bind_name self, %param.loc14 +// CHECK:STDOUT: %self.param.loc14: %.3 = param runtime_param0 +// CHECK:STDOUT: %self.loc14: %.3 = bind_name self, %self.param.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.4 [template = constants.%.5] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method_qualified.carbon b/toolchain/check/testdata/class/base_method_qualified.carbon index c1f5ab5b9070..5affc9ff0d03 100644 --- a/toolchain/check/testdata/class/base_method_qualified.carbon +++ b/toolchain/check/testdata/class/base_method_qualified.carbon @@ -85,7 +85,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -105,52 +105,64 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { // CHECK:STDOUT: %a.patt: %Derived = binding_pattern a // CHECK:STDOUT: %a.param_patt: %Derived = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc25_24.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc25_24.2: type = converted %int.make_type_32, %.loc25_24.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %a: %Derived = bind_name a, %param +// CHECK:STDOUT: %a.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %a: %Derived = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallIndirect.decl: %CallIndirect.type = fn_decl @CallIndirect [template = constants.%CallIndirect] { // CHECK:STDOUT: %p.patt: %.10 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.10 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] // CHECK:STDOUT: %.loc29_27: type = ptr_type %Derived [template = constants.%.10] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc29_33.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc29_33.2: type = converted %int.make_type_32, %.loc29_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.10 = param runtime_param0 -// CHECK:STDOUT: %p: %.10 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.10 = param runtime_param0 +// CHECK:STDOUT: %p: %.10 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %PassDerivedToBase.decl: %PassDerivedToBase.type = fn_decl @PassDerivedToBase [template = constants.%PassDerivedToBase] { // CHECK:STDOUT: %a.patt: %Derived = binding_pattern a // CHECK:STDOUT: %a.param_patt: %Derived = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc33_37.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc33_37.2: type = converted %int.make_type_32, %.loc33_37.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %a: %Derived = bind_name a, %param +// CHECK:STDOUT: %a.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %a: %Derived = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %PassDerivedToBaseIndirect.decl: %PassDerivedToBaseIndirect.type = fn_decl @PassDerivedToBaseIndirect [template = constants.%PassDerivedToBaseIndirect] { // CHECK:STDOUT: %p.patt: %.10 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.10 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] // CHECK:STDOUT: %.loc37_40: type = ptr_type %Derived [template = constants.%.10] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc37_46.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc37_46.2: type = converted %int.make_type_32, %.loc37_46.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.10 = param runtime_param0 -// CHECK:STDOUT: %p: %.10 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.10 = param runtime_param0 +// CHECK:STDOUT: %p: %.10 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -162,16 +174,16 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %self.param_patt: %Derived = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [template = constants.%Derived] -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %self: %Derived = bind_name self, %param +// CHECK:STDOUT: %self.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %self: %Derived = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] { // CHECK:STDOUT: %self.patt: %Derived = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Derived = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [template = constants.%Derived] -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %self: %Derived = bind_name self, %param +// CHECK:STDOUT: %self.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %self: %Derived = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc23: = complete_type_witness %.6 [template = constants.%.7] // CHECK:STDOUT: @@ -187,26 +199,32 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { // CHECK:STDOUT: %self.patt: %Base = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Base = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [template = constants.%Base] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_25.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_25.2: type = converted %int.make_type_32, %.loc14_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Base = param runtime_param0 -// CHECK:STDOUT: %self: %Base = bind_name self, %param +// CHECK:STDOUT: %self.param: %Base = param runtime_param0 +// CHECK:STDOUT: %self: %Base = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] { // CHECK:STDOUT: %self.patt: %Derived = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Derived = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_28.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_28.2: type = converted %int.make_type_32, %.loc15_28.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %self: %Derived = bind_name self, %param +// CHECK:STDOUT: %self.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %self: %Derived = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method_shadow.carbon b/toolchain/check/testdata/class/base_method_shadow.carbon index 227fdd91d9a8..e8ccba97c96e 100644 --- a/toolchain/check/testdata/class/base_method_shadow.carbon +++ b/toolchain/check/testdata/class/base_method_shadow.carbon @@ -114,14 +114,14 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: %.loc29_27: type = ptr_type %C [template = constants.%.13] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %.loc29_34: type = ptr_type %D [template = constants.%.17] -// CHECK:STDOUT: %param.loc29_10: %.1 = param runtime_param0 -// CHECK:STDOUT: %a: %.1 = bind_name a, %param.loc29_10 -// CHECK:STDOUT: %param.loc29_17: %.7 = param runtime_param1 -// CHECK:STDOUT: %b: %.7 = bind_name b, %param.loc29_17 -// CHECK:STDOUT: %param.loc29_24: %.13 = param runtime_param2 -// CHECK:STDOUT: %c: %.13 = bind_name c, %param.loc29_24 -// CHECK:STDOUT: %param.loc29_31: %.17 = param runtime_param3 -// CHECK:STDOUT: %d: %.17 = bind_name d, %param.loc29_31 +// CHECK:STDOUT: %a.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %a: %.1 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %.7 = param runtime_param1 +// CHECK:STDOUT: %b: %.7 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: %.13 = param runtime_param2 +// CHECK:STDOUT: %c: %.13 = bind_name c, %c.param +// CHECK:STDOUT: %d.param: %.17 = param runtime_param3 +// CHECK:STDOUT: %d: %.17 = bind_name d, %d.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -133,8 +133,8 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [template = constants.%A] // CHECK:STDOUT: %.loc12_23: type = ptr_type %A [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %self: %.1 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: @@ -153,8 +153,8 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] // CHECK:STDOUT: %.loc17_23: type = ptr_type %B [template = constants.%.7] -// CHECK:STDOUT: %param: %.7 = param runtime_param0 -// CHECK:STDOUT: %self: %.7 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %self: %.7 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: = complete_type_witness %.8 [template = constants.%.9] // CHECK:STDOUT: @@ -175,8 +175,8 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] // CHECK:STDOUT: %.loc22_23: type = ptr_type %C [template = constants.%.13] -// CHECK:STDOUT: %param: %.13 = param runtime_param0 -// CHECK:STDOUT: %self: %.13 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.13 = param runtime_param0 +// CHECK:STDOUT: %self: %.13 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc23: = complete_type_witness %.14 [template = constants.%.15] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index f9142aba9c59..cdcdc5f168e0 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -58,7 +58,7 @@ fn Run() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -72,6 +72,8 @@ fn Run() -> i32 { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc21_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_15.1: type = value_of_initializer %int.make_type_32.loc21_15 [template = i32] @@ -79,15 +81,20 @@ fn Run() -> i32 { // CHECK:STDOUT: %int.make_type_32.loc21_23: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_23.1: type = value_of_initializer %int.make_type_32.loc21_23 [template = i32] // CHECK:STDOUT: %.loc21_23.2: type = converted %int.make_type_32.loc21_23, %.loc21_23.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc21: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc21: i32 = bind_name n, %param.loc21 +// CHECK:STDOUT: %n.param.loc21: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc21: i32 = bind_name n, %n.param.loc21 +// CHECK:STDOUT: %return.param.loc21: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc21 // CHECK:STDOUT: } -// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} { +// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc25_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc25_13.2: type = converted %int.make_type_32, %.loc25_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -95,6 +102,8 @@ fn Run() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_11.1: type = value_of_initializer %int.make_type_32.loc12_11 [template = i32] @@ -102,13 +111,16 @@ fn Run() -> i32 { // CHECK:STDOUT: %int.make_type_32.loc12_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_19.1: type = value_of_initializer %int.make_type_32.loc12_19 [template = i32] // CHECK:STDOUT: %.loc12_19.2: type = converted %int.make_type_32.loc12_19, %.loc12_19.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %int.make_type_32.loc16_11 [template = i32] @@ -116,9 +128,10 @@ fn Run() -> i32 { // CHECK:STDOUT: %int.make_type_32.loc16_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_19.1: type = value_of_initializer %int.make_type_32.loc16_19 [template = i32] // CHECK:STDOUT: %.loc16_19.2: type = converted %int.make_type_32.loc16_19, %.loc16_19.1 [template = i32] -// CHECK:STDOUT: %return.var.loc16: ref i32 = var -// CHECK:STDOUT: %param.loc16: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc16: i32 = bind_name n, %param.loc16 +// CHECK:STDOUT: %n.param.loc16: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc16: i32 = bind_name n, %n.param.loc16 +// CHECK:STDOUT: %return.param.loc16: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc16_16: ref i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_10.1: type = value_of_initializer %int.make_type_32 [template = i32] diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index 973eea4d1860..37a10fb8cb91 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -41,7 +41,7 @@ class C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -57,14 +57,17 @@ class C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c // CHECK:STDOUT: %c.param_patt: %C = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_17.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_17.2: type = converted %int.make_type_32, %.loc12_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_10.1: type = value_of_initializer %int.make_type_32 [template = i32] diff --git a/toolchain/check/testdata/class/compound_field.carbon b/toolchain/check/testdata/class/compound_field.carbon index 6ade8292a6b0..64b74a5518e6 100644 --- a/toolchain/check/testdata/class/compound_field.carbon +++ b/toolchain/check/testdata/class/compound_field.carbon @@ -80,7 +80,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -99,30 +99,38 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %AccessDerived.decl: %AccessDerived.type = fn_decl @AccessDerived [template = constants.%AccessDerived] { // CHECK:STDOUT: %d.patt: %Derived = binding_pattern d // CHECK:STDOUT: %d.param_patt: %Derived = param_pattern %d.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref.loc24: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc24_33.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc24_33.2: type = converted %int.make_type_32, %.loc24_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %d: %Derived = bind_name d, %param +// CHECK:STDOUT: %d.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessBase.decl: %AccessBase.type = fn_decl @AccessBase [template = constants.%AccessBase] { // CHECK:STDOUT: %d.patt: %Derived = binding_pattern d // CHECK:STDOUT: %d.param_patt: %Derived = param_pattern %d.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc28_30.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc28_30.2: type = converted %int.make_type_32, %.loc28_30.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %d: %Derived = bind_name d, %param +// CHECK:STDOUT: %d.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessDerivedIndirect.decl: %AccessDerivedIndirect.type = fn_decl @AccessDerivedIndirect [template = constants.%AccessDerivedIndirect] { // CHECK:STDOUT: %p.patt: %.13 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.13 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.14 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.14 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref.loc32: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %.loc32_36: type = ptr_type %Derived [template = constants.%.13] @@ -130,13 +138,16 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %.loc32_45.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc32_45.2: type = converted %int.make_type_32, %.loc32_45.1 [template = i32] // CHECK:STDOUT: %.loc32_45.3: type = ptr_type i32 [template = constants.%.14] -// CHECK:STDOUT: %return: ref %.14 = var -// CHECK:STDOUT: %param: %.13 = param runtime_param0 -// CHECK:STDOUT: %p: %.13 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.13 = param runtime_param0 +// CHECK:STDOUT: %p: %.13 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.14 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.14 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessBaseIndirect.decl: %AccessBaseIndirect.type = fn_decl @AccessBaseIndirect [template = constants.%AccessBaseIndirect] { // CHECK:STDOUT: %p.patt: %.13 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.13 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.14 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.14 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %.loc36_33: type = ptr_type %Derived [template = constants.%.13] @@ -144,9 +155,10 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %.loc36_42.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc36_42.2: type = converted %int.make_type_32, %.loc36_42.1 [template = i32] // CHECK:STDOUT: %.loc36_42.3: type = ptr_type i32 [template = constants.%.14] -// CHECK:STDOUT: %return: ref %.14 = var -// CHECK:STDOUT: %param: %.13 = param runtime_param0 -// CHECK:STDOUT: %p: %.13 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.13 = param runtime_param0 +// CHECK:STDOUT: %p: %.13 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.14 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.14 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index bfa39ad1c103..d4c82bfbda50 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -102,7 +102,7 @@ fn ConvertInit() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -125,58 +125,70 @@ fn ConvertInit() { // CHECK:STDOUT: %ConvertCToB.decl: %ConvertCToB.type = fn_decl @ConvertCToB [template = constants.%ConvertCToB] { // CHECK:STDOUT: %p.patt: %.17 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.17 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.18 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.18 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc25_20: type = ptr_type %C [template = constants.%.17] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc25_27: type = ptr_type %B [template = constants.%.18] -// CHECK:STDOUT: %return: ref %.18 = var -// CHECK:STDOUT: %param: %.17 = param runtime_param0 -// CHECK:STDOUT: %p: %.17 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.17 = param runtime_param0 +// CHECK:STDOUT: %p: %.17 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.18 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.18 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertBToA.decl: %ConvertBToA.type = fn_decl @ConvertBToA [template = constants.%ConvertBToA] { // CHECK:STDOUT: %p.patt: %.18 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.18 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.22 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.22 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc26_20: type = ptr_type %B [template = constants.%.18] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc26_27: type = ptr_type %A [template = constants.%.22] -// CHECK:STDOUT: %return: ref %.22 = var -// CHECK:STDOUT: %param: %.18 = param runtime_param0 -// CHECK:STDOUT: %p: %.18 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.18 = param runtime_param0 +// CHECK:STDOUT: %p: %.18 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.22 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.22 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertCToA.decl: %ConvertCToA.type = fn_decl @ConvertCToA [template = constants.%ConvertCToA] { // CHECK:STDOUT: %p.patt: %.17 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.17 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.22 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.22 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc27_20: type = ptr_type %C [template = constants.%.17] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc27_27: type = ptr_type %A [template = constants.%.22] -// CHECK:STDOUT: %return: ref %.22 = var -// CHECK:STDOUT: %param: %.17 = param runtime_param0 -// CHECK:STDOUT: %p: %.17 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.17 = param runtime_param0 +// CHECK:STDOUT: %p: %.17 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.22 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.22 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertValue.decl: %ConvertValue.type = fn_decl @ConvertValue [template = constants.%ConvertValue] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c // CHECK:STDOUT: %c.param_patt: %C = param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertRef.decl: %ConvertRef.type = fn_decl @ConvertRef [template = constants.%ConvertRef] { // CHECK:STDOUT: %c.patt: %.17 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %.17 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.22 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.22 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc33_19: type = ptr_type %C [template = constants.%.17] // CHECK:STDOUT: %A.ref.loc33: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc33_26: type = ptr_type %A [template = constants.%.22] -// CHECK:STDOUT: %return: ref %.22 = var -// CHECK:STDOUT: %param: %.17 = param runtime_param0 -// CHECK:STDOUT: %c: %.17 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.17 = param runtime_param0 +// CHECK:STDOUT: %c: %.17 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.22 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.22 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertInit.decl: %ConvertInit.type = fn_decl @ConvertInit [template = constants.%ConvertInit] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/extend_adapt.carbon b/toolchain/check/testdata/class/extend_adapt.carbon index 9ba6b704c84d..53e5f0f7b306 100644 --- a/toolchain/check/testdata/class/extend_adapt.carbon +++ b/toolchain/check/testdata/class/extend_adapt.carbon @@ -131,7 +131,7 @@ class StructAdapter { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -151,16 +151,16 @@ class StructAdapter { // CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [template = constants.%SomeClassAdapter] -// CHECK:STDOUT: %param: %SomeClassAdapter = param runtime_param0 -// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %param +// CHECK:STDOUT: %a.param: %SomeClassAdapter = param runtime_param0 +// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAdapterMethod.decl: %TestAdapterMethod.type = fn_decl @TestAdapterMethod [template = constants.%TestAdapterMethod] { // CHECK:STDOUT: %a.patt: %SomeClassAdapter = binding_pattern a // CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [template = constants.%SomeClassAdapter] -// CHECK:STDOUT: %param: %SomeClassAdapter = param runtime_param0 -// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %param +// CHECK:STDOUT: %a.param: %SomeClassAdapter = param runtime_param0 +// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -189,8 +189,8 @@ class StructAdapter { // CHECK:STDOUT: %self.param_patt: %SomeClassAdapter = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [template = constants.%SomeClassAdapter] -// CHECK:STDOUT: %param: %SomeClassAdapter = param runtime_param0 -// CHECK:STDOUT: %self: %SomeClassAdapter = bind_name self, %param +// CHECK:STDOUT: %self.param: %SomeClassAdapter = param runtime_param0 +// CHECK:STDOUT: %self: %SomeClassAdapter = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: @@ -270,12 +270,12 @@ class StructAdapter { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.10)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.10)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -293,8 +293,8 @@ class StructAdapter { // CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl [template = constants.%SomeClassAdapter] -// CHECK:STDOUT: %param: %SomeClassAdapter = param runtime_param0 -// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %param +// CHECK:STDOUT: %a.param: %SomeClassAdapter = param runtime_param0 +// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -324,8 +324,8 @@ class StructAdapter { // CHECK:STDOUT: %self.param_patt: %SomeClass = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SomeClass [template = constants.%SomeClass] -// CHECK:STDOUT: %param: %SomeClass = param runtime_param0 -// CHECK:STDOUT: %self: %SomeClass = bind_name self, %param +// CHECK:STDOUT: %self.param: %SomeClass = param runtime_param0 +// CHECK:STDOUT: %self: %SomeClass = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -448,13 +448,13 @@ class StructAdapter { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.7) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.11)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.7) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.11)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -470,14 +470,17 @@ class StructAdapter { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %a.patt: %SomeClassAdapter = binding_pattern a // CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl [template = constants.%SomeClassAdapter] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_30.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_30.2: type = converted %int.make_type_32, %.loc13_30.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %SomeClassAdapter = param runtime_param0 -// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %param +// CHECK:STDOUT: %a.param: %SomeClassAdapter = param runtime_param0 +// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -608,7 +611,7 @@ class StructAdapter { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index c4883d61307d..ea25fb6de632 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -329,8 +329,8 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %a.param_patt: %Abstract = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref.loc7: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %param: %Abstract = param runtime_param0 -// CHECK:STDOUT: %a: %Abstract = bind_name a, %param +// CHECK:STDOUT: %a.param: %Abstract = param runtime_param0 +// CHECK:STDOUT: %a: %Abstract = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -441,16 +441,16 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %a.param_patt: %Abstract = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %param: %Abstract = param runtime_param0 -// CHECK:STDOUT: %a: %Abstract = bind_name a, %param +// CHECK:STDOUT: %a.param: %Abstract = param runtime_param0 +// CHECK:STDOUT: %a: %Abstract = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { // CHECK:STDOUT: %p.patt: %Abstract = binding_pattern p // CHECK:STDOUT: %p.param_patt: %Abstract = param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %param: %Abstract = param runtime_param0 -// CHECK:STDOUT: %p: %Abstract = bind_name p, %param +// CHECK:STDOUT: %p.param: %Abstract = param runtime_param0 +// CHECK:STDOUT: %p: %Abstract = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -509,7 +509,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -522,9 +522,13 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [template = constants.%Abstract] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {} -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %Derived = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Derived = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %return: ref %Derived = var +// CHECK:STDOUT: %return.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %return: ref %Derived = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -593,7 +597,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -609,12 +613,15 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Return.decl: %Return.type = fn_decl @Return [template = constants.%Return] { // CHECK:STDOUT: %a.patt: %Abstract = binding_pattern a // CHECK:STDOUT: %a.param_patt: %Abstract = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %Abstract = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Abstract = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref.loc13_14: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] // CHECK:STDOUT: %Abstract.ref.loc13_27: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %return: ref %Abstract = var -// CHECK:STDOUT: %param: %Abstract = param runtime_param0 -// CHECK:STDOUT: %a: %Abstract = bind_name a, %param +// CHECK:STDOUT: %a.param: %Abstract = param runtime_param0 +// CHECK:STDOUT: %a: %Abstract = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %Abstract = param runtime_param1 +// CHECK:STDOUT: %return: ref %Abstract = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -684,7 +691,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -700,14 +707,17 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [template = constants.%Access] { // CHECK:STDOUT: %d.patt: %Derived = binding_pattern d // CHECK:STDOUT: %d.param_patt: %Derived = param_pattern %d.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_26.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_26.2: type = converted %int.make_type_32, %.loc14_26.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Derived = param runtime_param0 -// CHECK:STDOUT: %d: %Derived = bind_name d, %param +// CHECK:STDOUT: %d.param: %Derived = param runtime_param0 +// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -836,9 +846,13 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [template = constants.%Abstract] {} {} -// CHECK:STDOUT: %ReturnAbstract.decl: %ReturnAbstract.type = fn_decl @ReturnAbstract [template = constants.%ReturnAbstract] {} { +// CHECK:STDOUT: %ReturnAbstract.decl: %ReturnAbstract.type = fn_decl @ReturnAbstract [template = constants.%ReturnAbstract] { +// CHECK:STDOUT: %return.patt: %Abstract = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Abstract = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %return: ref %Abstract = var +// CHECK:STDOUT: %return.param: %Abstract = param runtime_param0 +// CHECK:STDOUT: %return: ref %Abstract = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallReturnAbstract.decl: %CallReturnAbstract.type = fn_decl @CallReturnAbstract [template = constants.%CallReturnAbstract] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon b/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon index 6357c5d44b27..492688bbca74 100644 --- a/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon +++ b/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon @@ -141,12 +141,12 @@ class C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -162,8 +162,8 @@ class C { // CHECK:STDOUT: %b.param_patt: %Bad = param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Bad.ref: type = name_ref Bad, file.%Bad.decl [template = constants.%Bad] -// CHECK:STDOUT: %param: %Bad = param runtime_param0 -// CHECK:STDOUT: %b: %Bad = bind_name b, %param +// CHECK:STDOUT: %b.param: %Bad = param runtime_param0 +// CHECK:STDOUT: %b: %Bad = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,12 +288,12 @@ class C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -309,8 +309,8 @@ class C { // CHECK:STDOUT: %b.param_patt: %Bad = param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Bad.ref: type = name_ref Bad, file.%Bad.decl [template = constants.%Bad] -// CHECK:STDOUT: %param: %Bad = param runtime_param0 -// CHECK:STDOUT: %b: %Bad = bind_name b, %param +// CHECK:STDOUT: %b.param: %Bad = param runtime_param0 +// CHECK:STDOUT: %b: %Bad = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon b/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon index 4f775974e475..35a7603ae777 100644 --- a/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon +++ b/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon @@ -100,7 +100,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -161,7 +161,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -244,7 +244,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/fail_addr_not_self.carbon b/toolchain/check/testdata/class/fail_addr_not_self.carbon index ddad5dc037cf..63dce0b1454f 100644 --- a/toolchain/check/testdata/class/fail_addr_not_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_not_self.carbon @@ -66,8 +66,8 @@ class Class { // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc16: type = ptr_type %Class [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param -// CHECK:STDOUT: %a.loc16_13.2: %.1 = bind_symbolic_name a, 0, %param [symbolic = %a.loc16_13.1 (constants.%a)] +// CHECK:STDOUT: %a.param: %.1 = param runtime_param +// CHECK:STDOUT: %a.loc16_13.2: %.1 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc16_13.1 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %b.patt: %.1 = binding_pattern b @@ -75,8 +75,8 @@ class Class { // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc21: type = ptr_type %Class [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %b: %.1 = bind_name b, %param +// CHECK:STDOUT: %b.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %b: %.1 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index a3c24463137f..a638d5c92c95 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -81,10 +81,10 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %Class.ref.loc20_9: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %Class.ref.loc20_19: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc20: type = ptr_type %Class [template = constants.%.1] -// CHECK:STDOUT: %param.loc20_7: %Class = param runtime_param0 -// CHECK:STDOUT: %c: %Class = bind_name c, %param.loc20_7 -// CHECK:STDOUT: %param.loc20_17: %.1 = param runtime_param1 -// CHECK:STDOUT: %p: %.1 = bind_name p, %param.loc20_17 +// CHECK:STDOUT: %c.param: %Class = param runtime_param0 +// CHECK:STDOUT: %c: %Class = bind_name c, %c.param +// CHECK:STDOUT: %p.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -96,16 +96,16 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc12_24: type = ptr_type %Class [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %self: %.1 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %self: %Class = bind_name self, %param +// CHECK:STDOUT: %self.param: %Class = param runtime_param0 +// CHECK:STDOUT: %self: %Class = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_bad_type.carbon b/toolchain/check/testdata/class/fail_base_bad_type.carbon index a76d1100a6cf..1f495c5d3c9b 100644 --- a/toolchain/check/testdata/class/fail_base_bad_type.carbon +++ b/toolchain/check/testdata/class/fail_base_bad_type.carbon @@ -202,7 +202,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -216,15 +216,18 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %AccessMemberWithInvalidBaseError.decl: %AccessMemberWithInvalidBaseError.type = fn_decl @AccessMemberWithInvalidBaseError [template = constants.%AccessMemberWithInvalidBaseError] { // CHECK:STDOUT: %p.patt: %.1 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.1 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromError.ref: type = name_ref DeriveFromError, file.%DeriveFromError.decl [template = constants.%DeriveFromError] // CHECK:STDOUT: %.loc13_55: type = ptr_type %DeriveFromError [template = constants.%.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_61.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_61.2: type = converted %int.make_type_32, %.loc13_61.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %p: %.1 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -292,13 +295,13 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -312,15 +315,18 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %AccessMemberWithInvalidBasNonType.decl: %AccessMemberWithInvalidBasNonType.type = fn_decl @AccessMemberWithInvalidBasNonType [template = constants.%AccessMemberWithInvalidBasNonType] { // CHECK:STDOUT: %p.patt: %.8 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.8 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromNonType.ref: type = name_ref DeriveFromNonType, file.%DeriveFromNonType.decl [template = constants.%DeriveFromNonType] // CHECK:STDOUT: %.loc15_58: type = ptr_type %DeriveFromNonType [template = constants.%.8] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_64.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_64.2: type = converted %int.make_type_32, %.loc15_64.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.8 = param runtime_param0 -// CHECK:STDOUT: %p: %.8 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.8 = param runtime_param0 +// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -456,13 +462,13 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -477,6 +483,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %ConvertToBadBasei32.decl: %ConvertToBadBasei32.type = fn_decl @ConvertToBadBasei32 [template = constants.%ConvertToBadBasei32] { // CHECK:STDOUT: %p.patt: %.2 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.2 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromi32.ref: type = name_ref DeriveFromi32, file.%DeriveFromi32.decl [template = constants.%DeriveFromi32] // CHECK:STDOUT: %.loc21_40: type = ptr_type %DeriveFromi32 [template = constants.%.2] @@ -484,22 +492,26 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc21_49.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc21_49.2: type = converted %int.make_type_32, %.loc21_49.1 [template = i32] // CHECK:STDOUT: %.loc21_49.3: type = ptr_type i32 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %p: %.2 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.3 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBasei32.decl: %AccessMemberWithInvalidBasei32.type = fn_decl @AccessMemberWithInvalidBasei32 [template = constants.%AccessMemberWithInvalidBasei32] { // CHECK:STDOUT: %p.patt: %.2 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.2 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromi32.ref: type = name_ref DeriveFromi32, file.%DeriveFromi32.decl [template = constants.%DeriveFromi32] // CHECK:STDOUT: %.loc23_51: type = ptr_type %DeriveFromi32 [template = constants.%.2] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc23_57.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc23_57.2: type = converted %int.make_type_32, %.loc23_57.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %p: %.2 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -650,13 +662,13 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.10) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.14)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.10) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.14)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -673,6 +685,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %ConvertToBadBaseTuple.decl: %ConvertToBadBaseTuple.type = fn_decl @ConvertToBadBaseTuple [template = constants.%ConvertToBadBaseTuple] { // CHECK:STDOUT: %p.patt: %.8 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.8 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.9 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromTuple.ref: type = name_ref DeriveFromTuple, file.%DeriveFromTuple.decl [template = constants.%DeriveFromTuple] // CHECK:STDOUT: %.loc21_44: type = ptr_type %DeriveFromTuple [template = constants.%.8] @@ -680,22 +694,26 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc21_56: %.3 = tuple_literal (%Base.ref) // CHECK:STDOUT: %.loc21_57.1: type = converted %.loc21_56, constants.%.4 [template = constants.%.4] // CHECK:STDOUT: %.loc21_57.2: type = ptr_type %.4 [template = constants.%.9] -// CHECK:STDOUT: %return: ref %.9 = var -// CHECK:STDOUT: %param: %.8 = param runtime_param0 -// CHECK:STDOUT: %p: %.8 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.8 = param runtime_param0 +// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.9 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple.decl: %AccessMemberWithInvalidBaseTuple.type = fn_decl @AccessMemberWithInvalidBaseTuple [template = constants.%AccessMemberWithInvalidBaseTuple] { // CHECK:STDOUT: %p.patt: %.8 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.8 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromTuple.ref: type = name_ref DeriveFromTuple, file.%DeriveFromTuple.decl [template = constants.%DeriveFromTuple] // CHECK:STDOUT: %.loc23_55: type = ptr_type %DeriveFromTuple [template = constants.%.8] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc23_61.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc23_61.2: type = converted %int.make_type_32, %.loc23_61.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.8 = param runtime_param0 -// CHECK:STDOUT: %p: %.8 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.8 = param runtime_param0 +// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -847,13 +865,13 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -868,6 +886,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %ConvertToBadBaseStruct.decl: %ConvertToBadBaseStruct.type = fn_decl @ConvertToBadBaseStruct [template = constants.%ConvertToBadBaseStruct] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromStruct.ref: type = name_ref DeriveFromStruct, file.%DeriveFromStruct.decl [template = constants.%DeriveFromStruct] // CHECK:STDOUT: %.loc21_46: type = ptr_type %DeriveFromStruct [template = constants.%.4] @@ -879,22 +899,26 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc21_66.2: type = converted %int.make_type_32.loc21_66, %.loc21_66.1 [template = i32] // CHECK:STDOUT: %.loc21_69: type = struct_type {.a: i32, .b: i32} [template = constants.%.2] // CHECK:STDOUT: %.loc21_70: type = ptr_type %.2 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.3 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct.decl: %AccessMemberWithInvalidBaseStruct.type = fn_decl @AccessMemberWithInvalidBaseStruct [template = constants.%AccessMemberWithInvalidBaseStruct] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromStruct.ref: type = name_ref DeriveFromStruct, file.%DeriveFromStruct.decl [template = constants.%DeriveFromStruct] // CHECK:STDOUT: %.loc24_57: type = ptr_type %DeriveFromStruct [template = constants.%.4] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc24_63.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc24_63.2: type = converted %int.make_type_32, %.loc24_63.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1043,13 +1067,13 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1066,27 +1090,33 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %ConvertToBadBaseIncomplete.decl: %ConvertToBadBaseIncomplete.type = fn_decl @ConvertToBadBaseIncomplete [template = constants.%ConvertToBadBaseIncomplete] { // CHECK:STDOUT: %p.patt: %.1 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.1 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromIncomplete.ref: type = name_ref DeriveFromIncomplete, file.%DeriveFromIncomplete.decl [template = constants.%DeriveFromIncomplete] // CHECK:STDOUT: %.loc28_54: type = ptr_type %DeriveFromIncomplete [template = constants.%.1] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [template = constants.%Incomplete] // CHECK:STDOUT: %.loc28_70: type = ptr_type %Incomplete [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %p: %.1 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.2 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete.decl: %AccessMemberWithInvalidBaseIncomplete.type = fn_decl @AccessMemberWithInvalidBaseIncomplete [template = constants.%AccessMemberWithInvalidBaseIncomplete] { // CHECK:STDOUT: %p.patt: %.1 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.1 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromIncomplete.ref: type = name_ref DeriveFromIncomplete, file.%DeriveFromIncomplete.decl [template = constants.%DeriveFromIncomplete] // CHECK:STDOUT: %.loc30_65: type = ptr_type %DeriveFromIncomplete [template = constants.%.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc30_71.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc30_71.2: type = converted %int.make_type_32, %.loc30_71.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %p: %.1 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1224,7 +1254,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1242,40 +1272,49 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %ConvertToBadBaseFinal.decl: %ConvertToBadBaseFinal.type = fn_decl @ConvertToBadBaseFinal [template = constants.%ConvertToBadBaseFinal] { // CHECK:STDOUT: %p.patt: %.9 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.9 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.10 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.10 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [template = constants.%DeriveFromFinal] // CHECK:STDOUT: %.loc15_44: type = ptr_type %DeriveFromFinal [template = constants.%.9] // CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final.decl [template = constants.%Final] // CHECK:STDOUT: %.loc15_55: type = ptr_type %Final [template = constants.%.10] -// CHECK:STDOUT: %return: ref %.10 = var -// CHECK:STDOUT: %param: %.9 = param runtime_param0 -// CHECK:STDOUT: %p: %.9 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.9 = param runtime_param0 +// CHECK:STDOUT: %p: %.9 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.10 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.10 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember.decl: %AccessMemberWithInvalidBaseFinal_WithMember.type = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember [template = constants.%AccessMemberWithInvalidBaseFinal_WithMember] { // CHECK:STDOUT: %p.patt: %.9 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.9 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [template = constants.%DeriveFromFinal] // CHECK:STDOUT: %.loc19_66: type = ptr_type %DeriveFromFinal [template = constants.%.9] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_72.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc19_72.2: type = converted %int.make_type_32, %.loc19_72.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.9 = param runtime_param0 -// CHECK:STDOUT: %p: %.9 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.9 = param runtime_param0 +// CHECK:STDOUT: %p: %.9 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember.decl: %AccessMemberWithInvalidBaseFinal_NoMember.type = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember [template = constants.%AccessMemberWithInvalidBaseFinal_NoMember] { // CHECK:STDOUT: %p.patt: %.9 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.9 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [template = constants.%DeriveFromFinal] // CHECK:STDOUT: %.loc23_64: type = ptr_type %DeriveFromFinal [template = constants.%.9] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc23_70.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc23_70.2: type = converted %int.make_type_32, %.loc23_70.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.9 = param runtime_param0 -// CHECK:STDOUT: %p: %.9 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.9 = param runtime_param0 +// CHECK:STDOUT: %p: %.9 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon index 82708a674e89..cdbc6fac34cf 100644 --- a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon +++ b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon @@ -76,13 +76,13 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.10) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.14)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.10) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.14)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -98,14 +98,17 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: %AccessBInA.decl: %AccessBInA.type = fn_decl @AccessBInA [template = constants.%AccessBInA] { // CHECK:STDOUT: %a.patt: %A = binding_pattern a // CHECK:STDOUT: %a.param_patt: %A = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_24.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc19_24.2: type = converted %int.make_type_32, %.loc19_24.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %a: %A = bind_name a, %param +// CHECK:STDOUT: %a.param: %A = param runtime_param0 +// CHECK:STDOUT: %a: %A = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon index 226e6161c36e..7574be6a39bc 100644 --- a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon +++ b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon @@ -51,9 +51,13 @@ fn Make() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_derived_to_base.carbon b/toolchain/check/testdata/class/fail_derived_to_base.carbon index b3bcebebe961..319e18c1a1f1 100644 --- a/toolchain/check/testdata/class/fail_derived_to_base.carbon +++ b/toolchain/check/testdata/class/fail_derived_to_base.carbon @@ -107,13 +107,13 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.16) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.20)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.16) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.20)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -133,27 +133,33 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: %ConvertUnrelated.decl: %ConvertUnrelated.type = fn_decl @ConvertUnrelated [template = constants.%ConvertUnrelated] { // CHECK:STDOUT: %p.patt: %.11 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.11 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.12 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.12 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [template = constants.%B2] // CHECK:STDOUT: %.loc31_26: type = ptr_type %B2 [template = constants.%.11] // CHECK:STDOUT: %A1.ref: type = name_ref A1, file.%A1.decl [template = constants.%A1] // CHECK:STDOUT: %.loc31_34: type = ptr_type %A1 [template = constants.%.12] -// CHECK:STDOUT: %return: ref %.12 = var -// CHECK:STDOUT: %param: %.11 = param runtime_param0 -// CHECK:STDOUT: %p: %.11 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.11 = param runtime_param0 +// CHECK:STDOUT: %p: %.11 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.12 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.12 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [template = constants.%Incomplete] {} {} // CHECK:STDOUT: %ConvertIncomplete.decl: %ConvertIncomplete.type = fn_decl @ConvertIncomplete [template = constants.%ConvertIncomplete] { // CHECK:STDOUT: %p.patt: %.21 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.21 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.22 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.22 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [template = constants.%Incomplete] // CHECK:STDOUT: %.loc41_35: type = ptr_type %Incomplete [template = constants.%.21] // CHECK:STDOUT: %A2.ref: type = name_ref A2, file.%A2.decl [template = constants.%A2] // CHECK:STDOUT: %.loc41_43: type = ptr_type %A2 [template = constants.%.22] -// CHECK:STDOUT: %return: ref %.22 = var -// CHECK:STDOUT: %param: %.21 = param runtime_param0 -// CHECK:STDOUT: %p: %.21 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.21 = param runtime_param0 +// CHECK:STDOUT: %p: %.21 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.22 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.22 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_field_modifiers.carbon b/toolchain/check/testdata/class/fail_field_modifiers.carbon index bf7769686e9b..1fac8f1aff77 100644 --- a/toolchain/check/testdata/class/fail_field_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_field_modifiers.carbon @@ -60,7 +60,7 @@ class Class { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/fail_generic_method.carbon b/toolchain/check/testdata/class/fail_generic_method.carbon index c77a87b64598..24fd93b7ec7d 100644 --- a/toolchain/check/testdata/class/fail_generic_method.carbon +++ b/toolchain/check/testdata/class/fail_generic_method.carbon @@ -65,7 +65,7 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -78,8 +78,8 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.5] { // CHECK:STDOUT: %self.patt: = binding_pattern self @@ -90,14 +90,14 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc32_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc32_14.2: type = converted %int.make_type_32, %.loc32_14.1 [template = i32] -// CHECK:STDOUT: %param.loc32_11: i32 = param runtime_param -// CHECK:STDOUT: %N.loc32_10.1: i32 = bind_symbolic_name N, 0, %param.loc32_11 [symbolic = %N.loc32_10.2 (constants.%N)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc32_10.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc32_10.2 (constants.%N)] // CHECK:STDOUT: %Self.ref: = name_ref Self, [template = ] // CHECK:STDOUT: %T.ref: = name_ref T, [template = ] -// CHECK:STDOUT: %param.loc32_25: = param runtime_param0 -// CHECK:STDOUT: %self: = bind_name self, %param.loc32_25 -// CHECK:STDOUT: %param.loc32_34: = param runtime_param1 -// CHECK:STDOUT: %n: = bind_name n, %param.loc32_34 +// CHECK:STDOUT: %self.param: = param runtime_param0 +// CHECK:STDOUT: %self: = bind_name self, %self.param +// CHECK:STDOUT: %n.param: = param runtime_param1 +// CHECK:STDOUT: %n: = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -125,10 +125,10 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %.loc13: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc13 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %param.loc13_12: @F.%Class (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %self: @F.%Class (%Class.2) = bind_name self, %param.loc13_12 -// CHECK:STDOUT: %param.loc13_21: @F.%T (%T) = param runtime_param1 -// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %param.loc13_21 +// CHECK:STDOUT: %self.param: @F.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %self: @F.%Class (%Class.2) = bind_name self, %self.param +// CHECK:STDOUT: %n.param: @F.%T (%T) = param runtime_param1 +// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14_1.1: = complete_type_witness %.3 [symbolic = %.loc14_1.3 (constants.%.4)] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index df928579db62..db611678c329 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -199,7 +199,7 @@ class C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -225,46 +225,59 @@ class C { // CHECK:STDOUT: %Class.ref: type = name_ref Class, %Class.decl [template = constants.%Class] // CHECK:STDOUT: %global_var.var: ref = var global_var // CHECK:STDOUT: %global_var: ref = bind_name global_var, %global_var.var -// CHECK:STDOUT: %ConvertFromStruct.decl: %ConvertFromStruct.type = fn_decl @ConvertFromStruct [template = constants.%ConvertFromStruct] {} { +// CHECK:STDOUT: %ConvertFromStruct.decl: %ConvertFromStruct.type = fn_decl @ConvertFromStruct [template = constants.%ConvertFromStruct] { +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var +// CHECK:STDOUT: %return.param: %Class = param runtime_param0 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc44_14: type = ptr_type %Class [template = constants.%.4] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc44_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc44_20.2: type = converted %int.make_type_32, %.loc44_20.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MemberAccess.decl: %MemberAccess.type = fn_decl @MemberAccess [template = constants.%MemberAccess] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc55_25: type = ptr_type %Class [template = constants.%.4] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc55_31.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc55_31.2: type = converted %int.make_type_32, %.loc55_31.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Copy.decl: %Copy.type = fn_decl @Copy [template = constants.%Copy] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc73_12: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %.loc73: type = ptr_type %Class [template = constants.%.4] +// CHECK:STDOUT: %.loc73_17: type = ptr_type %Class [template = constants.%.4] // CHECK:STDOUT: %Class.ref.loc73_23: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %Class = param runtime_param1 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Let.decl: %Let.type = fn_decl @Let [template = constants.%Let] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p @@ -272,20 +285,24 @@ class C { // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc77: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc77: type = ptr_type %Class [template = constants.%.4] -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %TakeIncomplete.decl: %TakeIncomplete.type = fn_decl @TakeIncomplete [template = constants.%TakeIncomplete] { // CHECK:STDOUT: %c.patt: %Class = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %c: %Class = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class = param runtime_param0 +// CHECK:STDOUT: %c: %Class = bind_name c, %c.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ReturnIncomplete.decl: %ReturnIncomplete.type = fn_decl @ReturnIncomplete [template = constants.%ReturnIncomplete] {} { +// CHECK:STDOUT: %ReturnIncomplete.decl: %ReturnIncomplete.type = fn_decl @ReturnIncomplete [template = constants.%ReturnIncomplete] { +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var +// CHECK:STDOUT: %return.param: %Class = param runtime_param0 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallTakeIncomplete.decl: %CallTakeIncomplete.type = fn_decl @CallTakeIncomplete [template = constants.%CallTakeIncomplete] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p @@ -293,8 +310,8 @@ class C { // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc92: type = ptr_type %Class [template = constants.%.4] -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallReturnIncomplete.decl: %CallReturnIncomplete.type = fn_decl @CallReturnIncomplete [template = constants.%CallReturnIncomplete] {} {} // CHECK:STDOUT: } @@ -315,7 +332,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertFromStruct() -> %Class { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc42: %.3 = struct_literal () +// CHECK:STDOUT: %.loc42_43: %.3 = struct_literal () // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index fa3e47094817..65b865bc83fb 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -63,7 +63,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/fail_init_as_inplace.carbon b/toolchain/check/testdata/class/fail_init_as_inplace.carbon index 2d9f1e660783..de48330844a3 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -59,7 +59,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,8 +77,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc16: type = ptr_type %Class [template = constants.%.5] -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %p: %.5 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %p: %.5 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index bf6be0a39a56..f979fe4df39f 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -91,10 +91,10 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc19: type = struct_type {.a: %A} [template = constants.%.7] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %param.loc19_7: %.7 = param runtime_param0 -// CHECK:STDOUT: %s: %.7 = bind_name s, %param.loc19_7 -// CHECK:STDOUT: %param.loc19_19: %B = param runtime_param1 -// CHECK:STDOUT: %b: %B = bind_name b, %param.loc19_19 +// CHECK:STDOUT: %s.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %s: %.7 = bind_name s, %s.param +// CHECK:STDOUT: %b.param: %B = param runtime_param1 +// CHECK:STDOUT: %b: %B = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -106,8 +106,8 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc12_20: type = ptr_type %A [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %self: %.1 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index ed7e04a525b3..4f8873eaa7ef 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -52,7 +52,7 @@ fn T.F() {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -67,11 +67,15 @@ fn T.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_method.carbon b/toolchain/check/testdata/class/fail_method.carbon index e1b0d3f5ed8d..acc41de119b8 100644 --- a/toolchain/check/testdata/class/fail_method.carbon +++ b/toolchain/check/testdata/class/fail_method.carbon @@ -92,8 +92,8 @@ fn F(c: Class) { // CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc18: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %c: %Class = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class = param runtime_param0 +// CHECK:STDOUT: %c: %Class = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -104,8 +104,8 @@ fn F(c: Class) { // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %self: %Class = bind_name self, %param +// CHECK:STDOUT: %self.param: %Class = param runtime_param0 +// CHECK:STDOUT: %self: %Class = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_method_modifiers.carbon b/toolchain/check/testdata/class/fail_method_modifiers.carbon index c3fb1aa08ae5..410671ddfce0 100644 --- a/toolchain/check/testdata/class/fail_method_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_method_modifiers.carbon @@ -108,16 +108,16 @@ base class BaseClass { // CHECK:STDOUT: %self.param_patt: %FinalClass = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FinalClass [template = constants.%FinalClass] -// CHECK:STDOUT: %param: %FinalClass = param runtime_param0 -// CHECK:STDOUT: %self: %FinalClass = bind_name self, %param +// CHECK:STDOUT: %self.param: %FinalClass = param runtime_param0 +// CHECK:STDOUT: %self: %FinalClass = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %Virtual.decl: %Virtual.type = fn_decl @Virtual [template = constants.%Virtual] { // CHECK:STDOUT: %self.patt: %FinalClass = binding_pattern self // CHECK:STDOUT: %self.param_patt: %FinalClass = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FinalClass [template = constants.%FinalClass] -// CHECK:STDOUT: %param: %FinalClass = param runtime_param0 -// CHECK:STDOUT: %self: %FinalClass = bind_name self, %param +// CHECK:STDOUT: %self.param: %FinalClass = param runtime_param0 +// CHECK:STDOUT: %self: %FinalClass = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc30: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -133,16 +133,16 @@ base class BaseClass { // CHECK:STDOUT: %self.param_patt: %AbstractClass = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractClass [template = constants.%AbstractClass] -// CHECK:STDOUT: %param: %AbstractClass = param runtime_param0 -// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %param +// CHECK:STDOUT: %self.param: %AbstractClass = param runtime_param0 +// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %Final.decl: %Final.type = fn_decl @Final [template = constants.%Final] { // CHECK:STDOUT: %self.patt: %AbstractClass = binding_pattern self // CHECK:STDOUT: %self.param_patt: %AbstractClass = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractClass [template = constants.%AbstractClass] -// CHECK:STDOUT: %param: %AbstractClass = param runtime_param0 -// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %param +// CHECK:STDOUT: %self.param: %AbstractClass = param runtime_param0 +// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc45: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -158,8 +158,8 @@ base class BaseClass { // CHECK:STDOUT: %self.param_patt: %BaseClass = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%BaseClass [template = constants.%BaseClass] -// CHECK:STDOUT: %param: %BaseClass = param runtime_param0 -// CHECK:STDOUT: %self: %BaseClass = bind_name self, %param +// CHECK:STDOUT: %self.param: %BaseClass = param runtime_param0 +// CHECK:STDOUT: %self: %BaseClass = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc56: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_scope.carbon b/toolchain/check/testdata/class/fail_scope.carbon index 3367056659f6..85dc1a05a110 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -49,7 +49,7 @@ fn G() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,20 +60,28 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc17_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc17_11.2: type = converted %int.make_type_32, %.loc17_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_self.carbon b/toolchain/check/testdata/class/fail_self.carbon index be471276d24a..a7820ee6bf35 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -103,12 +103,12 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -125,12 +125,16 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %param.loc25: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc25: %Class = bind_name self, %param.loc25 +// CHECK:STDOUT: %self.param.loc25: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc25: %Class = bind_name self, %self.param.loc25 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc28: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var +// CHECK:STDOUT: %return.param.loc28: %Class = param runtime_param0 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param.loc28 // CHECK:STDOUT: } // CHECK:STDOUT: %WrongSelf.decl: type = class_decl @WrongSelf [template = constants.%WrongSelf] {} {} // CHECK:STDOUT: %CallWrongSelf.decl: %CallWrongSelf.type = fn_decl @CallWrongSelf [template = constants.%CallWrongSelf] { @@ -138,8 +142,8 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: %ws.param_patt: %WrongSelf = param_pattern %ws.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %WrongSelf.ref: type = name_ref WrongSelf, file.%WrongSelf.decl [template = constants.%WrongSelf] -// CHECK:STDOUT: %param: %WrongSelf = param runtime_param0 -// CHECK:STDOUT: %ws: %WrongSelf = bind_name ws, %param +// CHECK:STDOUT: %ws.param: %WrongSelf = param runtime_param0 +// CHECK:STDOUT: %ws: %WrongSelf = bind_name ws, %ws.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -169,12 +173,16 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %param.loc16: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc16: %Class = bind_name self, %param.loc16 +// CHECK:STDOUT: %self.param.loc16: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc16: %Class = bind_name self, %self.param.loc16 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %return.var.loc18: ref %Class = var +// CHECK:STDOUT: %return.param.loc18: %Class = param runtime_param0 +// CHECK:STDOUT: %.loc18: ref %Class = return_slot %return.param.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -190,8 +198,8 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %self: %Class = bind_name self, %param +// CHECK:STDOUT: %self.param: %Class = param runtime_param0 +// CHECK:STDOUT: %self: %Class = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc43: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_self_param.carbon b/toolchain/check/testdata/class/fail_self_param.carbon index 6e930f302bd8..3fffc51fede6 100644 --- a/toolchain/check/testdata/class/fail_self_param.carbon +++ b/toolchain/check/testdata/class/fail_self_param.carbon @@ -53,8 +53,8 @@ var v: C(0); // CHECK:STDOUT: %x.param_patt: = param_pattern %x.patt.loc14_22.1, runtime_param [symbolic = %x.patt.loc14_22.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.ref: = name_ref self, [template = ] -// CHECK:STDOUT: %param: = param runtime_param -// CHECK:STDOUT: %x.loc14_22.1: = bind_symbolic_name x, 0, %param [symbolic = %x.loc14_22.2 (constants.%x)] +// CHECK:STDOUT: %x.param: = param runtime_param +// CHECK:STDOUT: %x.loc14_22.1: = bind_symbolic_name x, 0, %x.param [symbolic = %x.loc14_22.2 (constants.%x)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref: %C.type = name_ref C, %C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc15: i32 = int_literal 0 [template = constants.%.4] diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index fdc93059256b..196d99c5966f 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -55,7 +55,7 @@ fn G() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -66,11 +66,15 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc22_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc22_11.2: type = converted %int.make_type_32, %.loc22_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -79,11 +83,15 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc12_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_14.2: type = converted %int.make_type_32, %.loc12_14.1 [template = i32] // CHECK:STDOUT: %.loc12_12: %.2 = field_decl field, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_13.2: type = converted %int.make_type_32, %.loc13_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc20: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_unknown_member.carbon b/toolchain/check/testdata/class/fail_unknown_member.carbon index a702cb635f88..89fe81e75725 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -47,7 +47,7 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,14 +61,17 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %c.patt: %Class = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_19.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_19.2: type = converted %int.make_type_32, %.loc15_19.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %c: %Class = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class = param runtime_param0 +// CHECK:STDOUT: %c: %Class = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 0725a9545930..c41db1e32565 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -50,7 +50,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index 96107f37ad47..11a1667cbdcf 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -51,7 +51,7 @@ fn Test() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/forward_declared.carbon b/toolchain/check/testdata/class/forward_declared.carbon index 47afce4d22e8..c46c29454745 100644 --- a/toolchain/check/testdata/class/forward_declared.carbon +++ b/toolchain/check/testdata/class/forward_declared.carbon @@ -46,14 +46,17 @@ fn F(p: Class*) -> Class* { return p; } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %p.patt: %.1 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.1 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc13_9: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc13_14: type = ptr_type %Class [template = constants.%.1] // CHECK:STDOUT: %Class.ref.loc13_20: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc13_25: type = ptr_type %Class [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %p: %.1 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index f25d2f5215b8..7a7a41453ee3 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -72,15 +72,15 @@ class Declaration(T:! type); // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %Declaration.decl: %Declaration.type = class_decl @Declaration [template = constants.%Declaration.1] { // CHECK:STDOUT: %T.patt.loc24_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_19.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc24_19.1, runtime_param [symbolic = %T.patt.loc24_19.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc24_19.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc24_19.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc24_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc24_19.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -103,26 +103,32 @@ class Declaration(T:! type); // CHECK:STDOUT: %self.patt: @GetAddr.%.loc12_29.1 (%.2) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @GetAddr.%.loc12_29.1 (%.2) = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc12_14: auto = addr_pattern %self.param_patt +// CHECK:STDOUT: %return.patt: @GetAddr.%.loc12_38.1 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetAddr.%.loc12_38.1 (%.3) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_25: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc12_25 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %.loc12_29.2: type = ptr_type %Class.2 [symbolic = %.loc12_29.1 (constants.%.2)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %.loc12_38.2: type = ptr_type %T [symbolic = %.loc12_38.1 (constants.%.3)] -// CHECK:STDOUT: %return: ref @GetAddr.%.loc12_38.1 (%.3) = var -// CHECK:STDOUT: %param: @GetAddr.%.loc12_29.1 (%.2) = param runtime_param0 -// CHECK:STDOUT: %self: @GetAddr.%.loc12_29.1 (%.2) = bind_name self, %param +// CHECK:STDOUT: %self.param: @GetAddr.%.loc12_29.1 (%.2) = param runtime_param0 +// CHECK:STDOUT: %self: @GetAddr.%.loc12_29.1 (%.2) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @GetAddr.%.loc12_38.1 (%.3) = param runtime_param1 +// CHECK:STDOUT: %return: ref @GetAddr.%.loc12_38.1 (%.3) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %GetValue.decl: @Class.%GetValue.type (%GetValue.type) = fn_decl @GetValue [symbolic = @Class.%GetValue (constants.%GetValue)] { // CHECK:STDOUT: %self.patt: @GetValue.%Class (%Class.2) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @GetValue.%Class (%Class.2) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @GetValue.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetValue.%T (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc17 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @GetValue.%T (%T) = var -// CHECK:STDOUT: %param: @GetValue.%Class (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %self: @GetValue.%Class (%Class.2) = bind_name self, %param +// CHECK:STDOUT: %self.param: @GetValue.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %self: @GetValue.%Class (%Class.2) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @GetValue.%T (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @GetValue.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_13.1 [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: %.loc21_8.1: @Class.%.loc21_8.2 (%.4) = field_decl k, element0 [template] diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index dddc21d27040..fe72c0ce5dee 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -120,7 +120,7 @@ class Outer(T:! type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -140,10 +140,10 @@ class Outer(T:! type) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %param.loc4_14: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_24: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %param.loc4_24 [symbolic = %N.loc4_23.2 (constants.%N)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %Class.ref.loc6: %Class.type = name_ref Class, %Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] @@ -236,7 +236,7 @@ class Outer(T:! type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -255,10 +255,10 @@ class Outer(T:! type) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %param.loc4_14: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_24: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %param.loc4_24 [symbolic = %N.loc4_23.2 (constants.%N)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, %Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] @@ -326,7 +326,7 @@ class Outer(T:! type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -345,10 +345,10 @@ class Outer(T:! type) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %param.loc4_14: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_24: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %param.loc4_24 [symbolic = %N.loc4_23.2 (constants.%N)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, %Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] @@ -435,13 +435,13 @@ class Outer(T:! type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.10)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.10)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -460,10 +460,10 @@ class Outer(T:! type) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_27.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_27.2: type = converted %int.make_type_32, %.loc4_27.1 [template = i32] -// CHECK:STDOUT: %param.loc4_14: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_24: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %param.loc4_24 [symbolic = %N.loc4_23.2 (constants.%N)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_23.1: i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, %Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %.loc15_14: i32 = int_literal 5 [template = constants.%.4] @@ -632,8 +632,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt.loc2_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc2_13.1, runtime_param [symbolic = %T.patt.loc2_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc2_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc2_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc2_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc2_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -650,8 +650,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %U.patt.loc3_15.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc3_15.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc3_15.1, runtime_param [symbolic = %U.patt.loc3_15.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc3_15.1: type = bind_symbolic_name U, 1, %param [symbolic = %U.loc3_15.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc3_15.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc3_15.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -677,31 +677,47 @@ class Outer(T:! type) { // CHECK:STDOUT: %D: @Inner.%D.type (%D.type.1) = struct_value () [symbolic = %D (constants.%D.1)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %A.decl: @Inner.%A.type (%A.type.1) = fn_decl @A [symbolic = @Inner.%A (constants.%A.1)] {} { +// CHECK:STDOUT: %A.decl: @Inner.%A.type (%A.type.1) = fn_decl @A [symbolic = @Inner.%A (constants.%A.1)] { +// CHECK:STDOUT: %return.patt: @A.%Outer.loc4_20.1 (%Outer.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @A.%Outer.loc4_20.1 (%Outer.2) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.1] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Outer.loc4_20.2: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc4_20.1 (constants.%Outer.2)] -// CHECK:STDOUT: %return: ref @A.%Outer.loc4_20.1 (%Outer.2) = var +// CHECK:STDOUT: %return.param: @A.%Outer.loc4_20.1 (%Outer.2) = param runtime_param0 +// CHECK:STDOUT: %return: ref @A.%Outer.loc4_20.1 (%Outer.2) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: @Inner.%B.type (%B.type.1) = fn_decl @B [symbolic = @Inner.%B (constants.%B.1)] {} { +// CHECK:STDOUT: %B.decl: @Inner.%B.type (%B.type.1) = fn_decl @B [symbolic = @Inner.%B (constants.%B.1)] { +// CHECK:STDOUT: %return.patt: @B.%Outer.loc7_20.1 (%Outer.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @B.%Outer.loc7_20.1 (%Outer.3) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.1] // CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.1 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %Outer.loc7_20.2: type = class_type @Outer, @Outer(constants.%U) [symbolic = %Outer.loc7_20.1 (constants.%Outer.3)] -// CHECK:STDOUT: %return: ref @B.%Outer.loc7_20.1 (%Outer.3) = var +// CHECK:STDOUT: %return.param: @B.%Outer.loc7_20.1 (%Outer.3) = param runtime_param0 +// CHECK:STDOUT: %return: ref @B.%Outer.loc7_20.1 (%Outer.3) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %C.decl: @Inner.%C.type (%C.type.1) = fn_decl @C [symbolic = @Inner.%C (constants.%C.1)] {} { +// CHECK:STDOUT: %C.decl: @Inner.%C.type (%C.type.1) = fn_decl @C [symbolic = @Inner.%C (constants.%C.1)] { +// CHECK:STDOUT: %return.patt: @C.%Inner.loc10_20.1 (%Inner.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @C.%Inner.loc10_20.1 (%Inner.3) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10: @C.%Inner.type (%Inner.type.1) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.loc10_15 (constants.%Inner.1)] // CHECK:STDOUT: %Inner.ref: @C.%Inner.type (%Inner.type.1) = name_ref Inner, %.loc10 [symbolic = %Inner.loc10_15 (constants.%Inner.1)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.loc10_20.2: type = class_type @Inner, @Inner(constants.%T, constants.%T) [symbolic = %Inner.loc10_20.1 (constants.%Inner.3)] -// CHECK:STDOUT: %return: ref @C.%Inner.loc10_20.1 (%Inner.3) = var +// CHECK:STDOUT: %return.param: @C.%Inner.loc10_20.1 (%Inner.3) = param runtime_param0 +// CHECK:STDOUT: %return: ref @C.%Inner.loc10_20.1 (%Inner.3) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %D.decl: @Inner.%D.type (%D.type.1) = fn_decl @D [symbolic = @Inner.%D (constants.%D.1)] {} { +// CHECK:STDOUT: %D.decl: @Inner.%D.type (%D.type.1) = fn_decl @D [symbolic = @Inner.%D (constants.%D.1)] { +// CHECK:STDOUT: %return.patt: @D.%Inner.loc13_20.1 (%Inner.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @D.%Inner.loc13_20.1 (%Inner.2) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13: @D.%Inner.type (%Inner.type.1) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.loc13_15 (constants.%Inner.1)] // CHECK:STDOUT: %Inner.ref: @D.%Inner.type (%Inner.type.1) = name_ref Inner, %.loc13 [symbolic = %Inner.loc13_15 (constants.%Inner.1)] // CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.1 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %Inner.loc13_20.2: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_20.1 (constants.%Inner.2)] -// CHECK:STDOUT: %return: ref @D.%Inner.loc13_20.1 (%Inner.2) = var +// CHECK:STDOUT: %return.param: @D.%Inner.loc13_20.1 (%Inner.2) = param runtime_param0 +// CHECK:STDOUT: %return: ref @D.%Inner.loc13_20.1 (%Inner.2) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index ea9551e8cd71..b7d5de453f00 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -72,7 +72,7 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -88,12 +88,14 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %c.patt: %Class.3 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class.3 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32.loc15_15: init type = call constants.%Int32() [template = i32] @@ -103,41 +105,48 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %int.make_type_32.loc15_24: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_24.1: type = value_of_initializer %int.make_type_32.loc15_24 [template = i32] // CHECK:STDOUT: %.loc15_24.2: type = converted %int.make_type_32.loc15_24, %.loc15_24.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Class.3 = param runtime_param0 -// CHECK:STDOUT: %c: %Class.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class.3 = param runtime_param0 +// CHECK:STDOUT: %c: %Class.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %T.patt.loc19_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc19_6.1, runtime_param [symbolic = %T.patt.loc19_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %c.patt: @G.%Class.loc19_24.2 (%Class.2) = binding_pattern c // CHECK:STDOUT: %c.param_patt: @G.%Class.loc19_24.2 (%Class.2) = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @G.%T.loc19_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @G.%T.loc19_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %T.ref.loc19_25: type = name_ref T, %T.loc19_6.1 [symbolic = %T.loc19_6.2 (constants.%T)] // CHECK:STDOUT: %Class.loc19_24.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_24.2 (constants.%Class.2)] // CHECK:STDOUT: %T.ref.loc19_32: type = name_ref T, %T.loc19_6.1 [symbolic = %T.loc19_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @G.%T.loc19_6.2 (%T) = var -// CHECK:STDOUT: %param.loc19_7: type = param runtime_param -// CHECK:STDOUT: %T.loc19_6.1: type = bind_symbolic_name T, 0, %param.loc19_7 [symbolic = %T.loc19_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc19_17: @G.%Class.loc19_24.2 (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %c: @G.%Class.loc19_24.2 (%Class.2) = bind_name c, %param.loc19_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc19_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_6.2 (constants.%T)] +// CHECK:STDOUT: %c.param: @G.%Class.loc19_24.2 (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %c: @G.%Class.loc19_24.2 (%Class.2) = bind_name c, %c.param +// CHECK:STDOUT: %return.param: @G.%T.loc19_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @G.%T.loc19_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { // CHECK:STDOUT: %U.patt.loc23_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc23_6.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc23_6.1, runtime_param [symbolic = %U.patt.loc23_6.2 (constants.%U.patt)] // CHECK:STDOUT: %c.patt: @H.%Class.loc23_24.2 (%Class.4) = binding_pattern c // CHECK:STDOUT: %c.param_patt: @H.%Class.loc23_24.2 (%Class.4) = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @H.%U.loc23_6.2 (%U) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @H.%U.loc23_6.2 (%U) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %U.ref.loc23_25: type = name_ref U, %U.loc23_6.1 [symbolic = %U.loc23_6.2 (constants.%U)] // CHECK:STDOUT: %Class.loc23_24.1: type = class_type @Class, @Class(constants.%U) [symbolic = %Class.loc23_24.2 (constants.%Class.4)] // CHECK:STDOUT: %U.ref.loc23_32: type = name_ref U, %U.loc23_6.1 [symbolic = %U.loc23_6.2 (constants.%U)] -// CHECK:STDOUT: %return: ref @H.%U.loc23_6.2 (%U) = var -// CHECK:STDOUT: %param.loc23_7: type = param runtime_param -// CHECK:STDOUT: %U.loc23_6.1: type = bind_symbolic_name U, 0, %param.loc23_7 [symbolic = %U.loc23_6.2 (constants.%U)] -// CHECK:STDOUT: %param.loc23_17: @H.%Class.loc23_24.2 (%Class.4) = param runtime_param0 -// CHECK:STDOUT: %c: @H.%Class.loc23_24.2 (%Class.4) = bind_name c, %param.loc23_17 +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc23_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc23_6.2 (constants.%U)] +// CHECK:STDOUT: %c.param: @H.%Class.loc23_24.2 (%Class.4) = param runtime_param0 +// CHECK:STDOUT: %c: @H.%Class.loc23_24.2 (%Class.4) = bind_name c, %c.param +// CHECK:STDOUT: %return.param: @H.%U.loc23_6.2 (%U) = param runtime_param1 +// CHECK:STDOUT: %return: ref @H.%U.loc23_6.2 (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index fead98dca450..fb2b28c8c907 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -122,7 +122,7 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -137,23 +137,27 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CompleteClass.decl: %CompleteClass.type = class_decl @CompleteClass [template = constants.%CompleteClass.1] { // CHECK:STDOUT: %T.patt.loc6_21.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_21.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_21.1, runtime_param [symbolic = %T.patt.loc6_21.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc6_21.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc6_21.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_21.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_21.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} { +// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %return.patt: %CompleteClass.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %CompleteClass.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, file.%CompleteClass.decl [template = constants.%CompleteClass.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_24.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_24.2: type = converted %int.make_type_32, %.loc11_24.1 [template = i32] // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(i32) [template = constants.%CompleteClass.3] -// CHECK:STDOUT: %return: ref %CompleteClass.3 = var +// CHECK:STDOUT: %return.param: %CompleteClass.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %CompleteClass.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -179,11 +183,15 @@ class Class(U:! type) { // CHECK:STDOUT: %.loc7_10.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc7_10.2: type = converted %int.make_type_32, %.loc7_10.1 [template = i32] // CHECK:STDOUT: %.loc7_8.1: @CompleteClass.%.loc7_8.2 (%.2) = field_decl n, element0 [template] -// CHECK:STDOUT: %F.decl: @CompleteClass.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @CompleteClass.%F (constants.%F.1)] {} { +// CHECK:STDOUT: %F.decl: @CompleteClass.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @CompleteClass.%F (constants.%F.1)] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_13.2: type = converted %int.make_type_32, %.loc8_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: @@ -273,7 +281,7 @@ class Class(U:! type) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %Class.type = import_ref Main//foo, inst+9, loaded [template = constants.%Class.1] // CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref Main//foo, inst+21, loaded [template = constants.%CompleteClass.1] -// CHECK:STDOUT: %import_ref.3: %F.type.2 = import_ref Main//foo, inst+63, loaded [template = constants.%F.2] +// CHECK:STDOUT: %import_ref.3: %F.type.2 = import_ref Main//foo, inst+69, loaded [template = constants.%F.2] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.7 // CHECK:STDOUT: import Core//prelude @@ -287,8 +295,8 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.4 = import_ref Main//foo, inst+26, unloaded // CHECK:STDOUT: %import_ref.5 = import_ref Main//foo, inst+36, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//foo, inst+43, unloaded -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.6 = import_ref Main//foo, inst+46, unloaded +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -305,16 +313,20 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc4: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.1] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4, runtime_param [symbolic = constants.%T.patt.1] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %param [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} { +// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %return.patt: %CompleteClass.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %CompleteClass.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, imports.%import_ref.2 [template = constants.%CompleteClass.1] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_24.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_24.2: type = converted %int.make_type_32, %.loc8_24.1 [template = i32] // CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(i32) [template = constants.%CompleteClass.3] -// CHECK:STDOUT: %return: ref %CompleteClass.3 = var +// CHECK:STDOUT: %return.param: %CompleteClass.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %CompleteClass.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -448,7 +460,7 @@ class Class(U:! type) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1 = import_ref Main//foo, inst+9, unloaded // CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref Main//foo, inst+21, loaded [template = constants.%CompleteClass.1] -// CHECK:STDOUT: %import_ref.3: %F.type.3 = import_ref Main//foo, inst+63, loaded [template = constants.%F.3] +// CHECK:STDOUT: %import_ref.3: %F.type.3 = import_ref Main//foo, inst+69, loaded [template = constants.%F.3] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.4 // CHECK:STDOUT: import Core//prelude @@ -460,10 +472,10 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.4: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.5 = import_ref Main//foo, inst+26, unloaded // CHECK:STDOUT: %import_ref.6: @CompleteClass.%.1 (%.4) = import_ref Main//foo, inst+36, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.7: @CompleteClass.%F.type (%F.type.1) = import_ref Main//foo, inst+43, loaded [symbolic = @CompleteClass.%F (constants.%F.1)] +// CHECK:STDOUT: %import_ref.7: @CompleteClass.%F.type (%F.type.1) = import_ref Main//foo, inst+46, loaded [symbolic = @CompleteClass.%F (constants.%F.1)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -477,17 +489,25 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %UseMethod.decl: %UseMethod.type = fn_decl @UseMethod [template = constants.%UseMethod] {} { +// CHECK:STDOUT: %UseMethod.decl: %UseMethod.type = fn_decl @UseMethod [template = constants.%UseMethod] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_19.1: type = value_of_initializer %int.make_type_32.loc5 [template = i32] // CHECK:STDOUT: %.loc5_19.2: type = converted %int.make_type_32.loc5, %.loc5_19.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %UseField.decl: %UseField.type = fn_decl @UseField [template = constants.%UseField] {} { +// CHECK:STDOUT: %UseField.decl: %UseField.type = fn_decl @UseField [template = constants.%UseField] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_18.1: type = value_of_initializer %int.make_type_32.loc10 [template = i32] // CHECK:STDOUT: %.loc10_18.2: type = converted %int.make_type_32.loc10, %.loc10_18.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -647,7 +667,7 @@ class Class(U:! type) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1 = import_ref Main//foo, inst+9, unloaded // CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref Main//foo, inst+21, loaded [template = constants.%CompleteClass.1] -// CHECK:STDOUT: %import_ref.3: %F.type.3 = import_ref Main//foo, inst+63, loaded [template = constants.%F.3] +// CHECK:STDOUT: %import_ref.3: %F.type.3 = import_ref Main//foo, inst+69, loaded [template = constants.%F.3] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.7 // CHECK:STDOUT: .ImplicitAs = %import_ref.8 @@ -662,14 +682,14 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.4 = import_ref Main//foo, inst+26, unloaded // CHECK:STDOUT: %import_ref.5 = import_ref Main//foo, inst+36, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//foo, inst+43, unloaded -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.8: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.10: @ImplicitAs.%.1 (%.9) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.13)] -// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Main//foo, inst+46, unloaded +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.8: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.10: @ImplicitAs.%.1 (%.9) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.13)] +// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -856,7 +876,7 @@ class Class(U:! type) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %Class.type = import_ref Main//foo, inst+9, loaded [template = constants.%Class.1] // CHECK:STDOUT: %import_ref.2 = import_ref Main//foo, inst+21, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//foo, inst+63, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref Main//foo, inst+69, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators @@ -883,8 +903,8 @@ class Class(U:! type) { // CHECK:STDOUT: %U.patt.loc12_13.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc12_13.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc12_13.1, runtime_param [symbolic = %U.patt.loc12_13.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc12_13.1: type = bind_symbolic_name U, 0, %param [symbolic = %U.loc12_13.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc12_13.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc12_13.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index 7cfdf0c4db52..c18e002cdf13 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -81,7 +81,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -96,26 +96,31 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %InitFromStructGeneric.decl: %InitFromStructGeneric.type = fn_decl @InitFromStructGeneric [template = constants.%InitFromStructGeneric] { // CHECK:STDOUT: %T.patt.loc8_26.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_26.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_26.1, runtime_param [symbolic = %T.patt.loc8_26.2 (constants.%T.patt.2)] // CHECK:STDOUT: %x.patt: @InitFromStructGeneric.%T.loc8_26.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @InitFromStructGeneric.%T.loc8_26.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @InitFromStructGeneric.%T.loc8_26.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @InitFromStructGeneric.%T.loc8_26.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_39: type = name_ref T, %T.loc8_26.1 [symbolic = %T.loc8_26.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc8_45: type = name_ref T, %T.loc8_26.1 [symbolic = %T.loc8_26.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @InitFromStructGeneric.%T.loc8_26.2 (%T) = var -// CHECK:STDOUT: %param.loc8_27: type = param runtime_param -// CHECK:STDOUT: %T.loc8_26.1: type = bind_symbolic_name T, 0, %param.loc8_27 [symbolic = %T.loc8_26.2 (constants.%T)] -// CHECK:STDOUT: %param.loc8_37: @InitFromStructGeneric.%T.loc8_26.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @InitFromStructGeneric.%T.loc8_26.2 (%T) = bind_name x, %param.loc8_37 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_26.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_26.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @InitFromStructGeneric.%T.loc8_26.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @InitFromStructGeneric.%T.loc8_26.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @InitFromStructGeneric.%T.loc8_26.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @InitFromStructGeneric.%T.loc8_26.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %InitFromStructSpecific.decl: %InitFromStructSpecific.type = fn_decl @InitFromStructSpecific [template = constants.%InitFromStructSpecific] { // CHECK:STDOUT: %x.patt: i32 = binding_pattern x // CHECK:STDOUT: %x.param_patt: i32 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_30: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_30.1: type = value_of_initializer %int.make_type_32.loc13_30 [template = i32] @@ -123,9 +128,10 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc13_38: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_38.1: type = value_of_initializer %int.make_type_32.loc13_38 [template = i32] // CHECK:STDOUT: %.loc13_38.2: type = converted %int.make_type_32.loc13_38, %.loc13_38.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %x: i32 = bind_name x, %param +// CHECK:STDOUT: %x.param: i32 = param runtime_param0 +// CHECK:STDOUT: %x: i32 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -276,7 +282,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -291,26 +297,31 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %InitFromAdaptedGeneric.decl: %InitFromAdaptedGeneric.type = fn_decl @InitFromAdaptedGeneric [template = constants.%InitFromAdaptedGeneric] { // CHECK:STDOUT: %T.patt.loc8_27.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_27.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_27.1, runtime_param [symbolic = %T.patt.loc8_27.2 (constants.%T.patt.2)] // CHECK:STDOUT: %x.patt: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_40: type = name_ref T, %T.loc8_27.1 [symbolic = %T.loc8_27.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc8_46: type = name_ref T, %T.loc8_27.1 [symbolic = %T.loc8_27.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = var -// CHECK:STDOUT: %param.loc8_28: type = param runtime_param -// CHECK:STDOUT: %T.loc8_27.1: type = bind_symbolic_name T, 0, %param.loc8_28 [symbolic = %T.loc8_27.2 (constants.%T)] -// CHECK:STDOUT: %param.loc8_38: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = bind_name x, %param.loc8_38 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_27.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %InitFromAdaptedSpecific.decl: %InitFromAdaptedSpecific.type = fn_decl @InitFromAdaptedSpecific [template = constants.%InitFromAdaptedSpecific] { // CHECK:STDOUT: %x.patt: i32 = binding_pattern x // CHECK:STDOUT: %x.param_patt: i32 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_31: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_31.1: type = value_of_initializer %int.make_type_32.loc12_31 [template = i32] @@ -318,9 +329,10 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc12_39: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_39.1: type = value_of_initializer %int.make_type_32.loc12_39 [template = i32] // CHECK:STDOUT: %.loc12_39.2: type = converted %int.make_type_32.loc12_39, %.loc12_39.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %x: i32 = bind_name x, %param +// CHECK:STDOUT: %x.param: i32 = param runtime_param0 +// CHECK:STDOUT: %x: i32 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_access.carbon b/toolchain/check/testdata/class/generic/member_access.carbon index d806791f87d2..87f7c9801309 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -100,7 +100,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -116,12 +116,14 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.patt.loc2_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc2_13.1, runtime_param [symbolic = %T.patt.loc2_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc2_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc2_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc2_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc2_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %DirectFieldAccess.decl: %DirectFieldAccess.type = fn_decl @DirectFieldAccess [template = constants.%DirectFieldAccess] { // CHECK:STDOUT: %x.patt: %Class.3 = binding_pattern x // CHECK:STDOUT: %x.param_patt: %Class.3 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32.loc10_31: init type = call constants.%Int32() [template = i32] @@ -131,13 +133,16 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %int.make_type_32.loc10_40: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_40.1: type = value_of_initializer %int.make_type_32.loc10_40 [template = i32] // CHECK:STDOUT: %.loc10_40.2: type = converted %int.make_type_32.loc10_40, %.loc10_40.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Class.3 = param runtime_param0 -// CHECK:STDOUT: %x: %Class.3 = bind_name x, %param +// CHECK:STDOUT: %x.param: %Class.3 = param runtime_param0 +// CHECK:STDOUT: %x: %Class.3 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MethodCall.decl: %MethodCall.type = fn_decl @MethodCall [template = constants.%MethodCall] { // CHECK:STDOUT: %x.patt: %Class.3 = binding_pattern x // CHECK:STDOUT: %x.param_patt: %Class.3 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32.loc14_24: init type = call constants.%Int32() [template = i32] @@ -147,13 +152,16 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %int.make_type_32.loc14_33: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_33.1: type = value_of_initializer %int.make_type_32.loc14_33 [template = i32] // CHECK:STDOUT: %.loc14_33.2: type = converted %int.make_type_32.loc14_33, %.loc14_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Class.3 = param runtime_param0 -// CHECK:STDOUT: %x: %Class.3 = bind_name x, %param +// CHECK:STDOUT: %x.param: %Class.3 = param runtime_param0 +// CHECK:STDOUT: %x: %Class.3 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AddrMethodCall.decl: %AddrMethodCall.type = fn_decl @AddrMethodCall [template = constants.%AddrMethodCall] { // CHECK:STDOUT: %p.patt: %.12 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.12 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %int.make_type_32.loc18_28: init type = call constants.%Int32() [template = i32] @@ -164,9 +172,10 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %int.make_type_32.loc18_38: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_38.1: type = value_of_initializer %int.make_type_32.loc18_38 [template = i32] // CHECK:STDOUT: %.loc18_38.2: type = converted %int.make_type_32.loc18_38, %.loc18_38.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.12 = param runtime_param0 -// CHECK:STDOUT: %p: %.12 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.12 = param runtime_param0 +// CHECK:STDOUT: %p: %.12 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -190,27 +199,33 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.1) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.1)] { // CHECK:STDOUT: %self.patt: @Get.%Class (%Class.2) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @Get.%Class (%Class.2) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Get.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Get.%T (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_16: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_16 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc2_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @Get.%T (%T) = var -// CHECK:STDOUT: %param: @Get.%Class (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %self: @Get.%Class (%Class.2) = bind_name self, %param +// CHECK:STDOUT: %self.param: @Get.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %self: @Get.%Class (%Class.2) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @Get.%T (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Get.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %GetAddr.decl: @Class.%GetAddr.type (%GetAddr.type.1) = fn_decl @GetAddr [symbolic = @Class.%GetAddr (constants.%GetAddr.1)] { // CHECK:STDOUT: %self.patt: @GetAddr.%.loc7_29.1 (%.3) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @GetAddr.%.loc7_29.1 (%.3) = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc7_14: auto = addr_pattern %self.param_patt +// CHECK:STDOUT: %return.patt: @GetAddr.%.loc7_38.1 (%.4) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetAddr.%.loc7_38.1 (%.4) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_25: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc7_25 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %.loc7_29.2: type = ptr_type %Class.2 [symbolic = %.loc7_29.1 (constants.%.3)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc2_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %.loc7_38.2: type = ptr_type %T [symbolic = %.loc7_38.1 (constants.%.4)] -// CHECK:STDOUT: %return: ref @GetAddr.%.loc7_38.1 (%.4) = var -// CHECK:STDOUT: %param: @GetAddr.%.loc7_29.1 (%.3) = param runtime_param0 -// CHECK:STDOUT: %self: @GetAddr.%.loc7_29.1 (%.3) = bind_name self, %param +// CHECK:STDOUT: %self.param: @GetAddr.%.loc7_29.1 (%.3) = param runtime_param0 +// CHECK:STDOUT: %self: @GetAddr.%.loc7_29.1 (%.3) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @GetAddr.%.loc7_38.1 (%.4) = param runtime_param1 +// CHECK:STDOUT: %return: ref @GetAddr.%.loc7_38.1 (%.4) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_1.1: = complete_type_witness %.5 [symbolic = %.loc8_1.3 (constants.%.6)] // CHECK:STDOUT: @@ -425,12 +440,12 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.10)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.6) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.10)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -444,19 +459,22 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %StaticMemberFunctionCall.decl: %StaticMemberFunctionCall.type = fn_decl @StaticMemberFunctionCall [template = constants.%StaticMemberFunctionCall] { // CHECK:STDOUT: %T.patt.loc8_29.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_29.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_29.1, runtime_param [symbolic = %T.patt.loc8_29.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %return.patt: @StaticMemberFunctionCall.%Class.loc8_47.2 (%Class.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @StaticMemberFunctionCall.%Class.loc8_47.2 (%Class.2) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc8: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %T.ref.loc8: type = name_ref T, %T.loc8_29.1 [symbolic = %T.loc8_29.2 (constants.%T)] // CHECK:STDOUT: %Class.loc8_47.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc8_47.2 (constants.%Class.2)] -// CHECK:STDOUT: %return: ref @StaticMemberFunctionCall.%Class.loc8_47.2 (%Class.2) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_29.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_29.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_29.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_29.2 (constants.%T)] +// CHECK:STDOUT: %return.param: @StaticMemberFunctionCall.%Class.loc8_47.2 (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %return: ref @StaticMemberFunctionCall.%Class.loc8_47.2 (%Class.2) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -489,11 +507,15 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Make: @Class.%Make.type (%Make.type) = struct_value () [symbolic = %Make (constants.%Make)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Make.decl: @Class.%Make.type (%Make.type) = fn_decl @Make [symbolic = @Class.%Make (constants.%Make)] {} { +// CHECK:STDOUT: %Make.decl: @Class.%Make.type (%Make.type) = fn_decl @Make [symbolic = @Class.%Make (constants.%Make)] { +// CHECK:STDOUT: %return.patt: @Make.%Class.loc5_21.1 (%Class.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Make.%Class.loc5_21.1 (%Class.2) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc5_21.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc5_21.1 (constants.%Class.2)] -// CHECK:STDOUT: %return: ref @Make.%Class.loc5_21.1 (%Class.2) = var +// CHECK:STDOUT: %return.param: @Make.%Class.loc5_21.1 (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %return: ref @Make.%Class.loc5_21.1 (%Class.2) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index cc0a0886141c..39f748c6d412 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -80,8 +80,8 @@ class C(T:! type) { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -103,23 +103,29 @@ class C(T:! type) { // CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] { // CHECK:STDOUT: %n.patt: @F.%T (%T) = binding_pattern n // CHECK:STDOUT: %n.param_patt: @F.%T (%T) = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_11: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.ref.loc5_17: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T (%T) = var -// CHECK:STDOUT: %param: @F.%T (%T) = param runtime_param0 -// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %param +// CHECK:STDOUT: %n.param: @F.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param +// CHECK:STDOUT: %return.param: @F.%T (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: @Class.%G.type (%G.type) = fn_decl @G [symbolic = @Class.%G (constants.%G)] { // CHECK:STDOUT: %self.patt: @G.%Class (%Class.2) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @G.%Class (%Class.2) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @G.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @G.%T (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc9 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @G.%T (%T) = var -// CHECK:STDOUT: %param: @G.%Class (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %self: @G.%Class (%Class.2) = bind_name self, %param +// CHECK:STDOUT: %self.param: @G.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %self: @G.%Class (%Class.2) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @G.%T (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @G.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %.loc13_8.1: @Class.%.loc13_8.2 (%.2) = field_decl n, element0 [template] @@ -236,8 +242,8 @@ class C(T:! type) { // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_out_of_line.carbon b/toolchain/check/testdata/class/generic/member_out_of_line.carbon index 6fce3bd7b46b..bed959c33fe5 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -149,33 +149,39 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { // CHECK:STDOUT: %n.patt: %T = binding_pattern n // CHECK:STDOUT: %n.param_patt: %T = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %T = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc10_11: type = param runtime_param -// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %param.loc10_11 [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: %T.ref.loc10_25: type = name_ref T, %T.loc10 [symbolic = constants.%T] // CHECK:STDOUT: %T.ref.loc10_31: type = name_ref T, %T.loc10 [symbolic = constants.%T] -// CHECK:STDOUT: %return: ref %T = var -// CHECK:STDOUT: %param.loc10_23: %T = param runtime_param0 -// CHECK:STDOUT: %n.loc10: %T = bind_name n, %param.loc10_23 +// CHECK:STDOUT: %n.param.loc10: %T = param runtime_param0 +// CHECK:STDOUT: %n.loc10: %T = bind_name n, %n.param.loc10 +// CHECK:STDOUT: %return.param.loc10: %T = param runtime_param1 +// CHECK:STDOUT: %return: ref %T = return_slot %return.param.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [symbolic = constants.%G] { // CHECK:STDOUT: %self.patt: %Class.2 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class.2 = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %T = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc14_11: type = param runtime_param -// CHECK:STDOUT: %T.loc14: type = bind_symbolic_name T, 0, %param.loc14_11 [symbolic = constants.%T] -// CHECK:STDOUT: %.loc14: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = constants.%Class.2] -// CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14 [symbolic = constants.%Class.2] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc14: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] +// CHECK:STDOUT: %.loc14_28: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = constants.%Class.2] +// CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14_28 [symbolic = constants.%Class.2] // CHECK:STDOUT: %T.ref.loc14: type = name_ref T, %T.loc14 [symbolic = constants.%T] -// CHECK:STDOUT: %return: ref %T = var -// CHECK:STDOUT: %param.loc14_26: %Class.2 = param runtime_param0 -// CHECK:STDOUT: %self.loc14: %Class.2 = bind_name self, %param.loc14_26 +// CHECK:STDOUT: %self.param.loc14: %Class.2 = param runtime_param0 +// CHECK:STDOUT: %self.loc14: %Class.2 = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %return.param.loc14: %T = param runtime_param1 +// CHECK:STDOUT: %return: ref %T = return_slot %return.param.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -197,23 +203,29 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] { // CHECK:STDOUT: %n.patt: %T = binding_pattern n // CHECK:STDOUT: %n.param_patt: %T = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %T = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_11: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T.loc5 (constants.%T)] // CHECK:STDOUT: %T.ref.loc5_17: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T.loc5 (constants.%T)] -// CHECK:STDOUT: %return.var.loc5: ref @F.%T.loc5 (%T) = var -// CHECK:STDOUT: %param.loc5: @F.%T.loc5 (%T) = param runtime_param0 -// CHECK:STDOUT: %n.loc5: @F.%T.loc5 (%T) = bind_name n, %param.loc5 +// CHECK:STDOUT: %n.param.loc5: @F.%T.loc5 (%T) = param runtime_param0 +// CHECK:STDOUT: %n.loc5: @F.%T.loc5 (%T) = bind_name n, %n.param.loc5 +// CHECK:STDOUT: %return.param.loc5: @F.%T.loc5 (%T) = param runtime_param1 +// CHECK:STDOUT: %.loc5: ref @F.%T.loc5 (%T) = return_slot %return.param.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: @Class.%G.type (%G.type) = fn_decl @G [symbolic = @Class.%G (constants.%G)] { // CHECK:STDOUT: %self.patt: %Class.2 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class.2 = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %T = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc6: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] -// CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, %.loc6 [symbolic = %Class (constants.%Class.2)] +// CHECK:STDOUT: %.loc6_14: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] +// CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, %.loc6_14 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %T.ref.loc6: type = name_ref T, @Class.%T.loc4_13.1 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %return.var.loc6: ref @G.%T.loc6 (%T) = var -// CHECK:STDOUT: %param.loc6: @G.%Class (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %self.loc6: @G.%Class (%Class.2) = bind_name self, %param.loc6 +// CHECK:STDOUT: %self.param.loc6: @G.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %self.loc6: @G.%Class (%Class.2) = bind_name self, %self.param.loc6 +// CHECK:STDOUT: %return.param.loc6: @G.%T.loc6 (%T) = param runtime_param1 +// CHECK:STDOUT: %.loc6_22: ref @G.%T.loc6 (%T) = return_slot %return.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %.loc7_8.1: @Class.%.loc7_8.2 (%.2) = field_decl n, element0 [template] @@ -336,8 +348,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { // CHECK:STDOUT: %self.patt: %B.2 = binding_pattern self @@ -345,18 +357,18 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %a.patt: %T = binding_pattern a // CHECK:STDOUT: %a.param_patt: %T = param_pattern %a.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc10_7: type = param runtime_param -// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %param.loc10_7 [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: %T.ref.loc10_22: type = name_ref T, %T.loc10 [symbolic = constants.%T] -// CHECK:STDOUT: %param.loc10_19: %T = param runtime_param -// CHECK:STDOUT: %N.loc10: %T = bind_symbolic_name N, 1, %param.loc10_19 [symbolic = constants.%N] +// CHECK:STDOUT: %N.param: %T = param runtime_param +// CHECK:STDOUT: %N.loc10: %T = bind_symbolic_name N, 1, %N.param [symbolic = constants.%N] // CHECK:STDOUT: %.loc10: type = specific_constant constants.%B.2, @B(constants.%T, constants.%N) [symbolic = constants.%B.2] // CHECK:STDOUT: %Self.ref.loc10: type = name_ref Self, %.loc10 [symbolic = constants.%B.2] // CHECK:STDOUT: %T.ref.loc10_42: type = name_ref T, %T.loc10 [symbolic = constants.%T] -// CHECK:STDOUT: %param.loc10_31: %B.2 = param runtime_param0 -// CHECK:STDOUT: %self.loc10: %B.2 = bind_name self, %param.loc10_31 -// CHECK:STDOUT: %param.loc10_40: %T = param runtime_param1 -// CHECK:STDOUT: %a.loc10: %T = bind_name a, %param.loc10_40 +// CHECK:STDOUT: %self.param.loc10: %B.2 = param runtime_param0 +// CHECK:STDOUT: %self.loc10: %B.2 = bind_name self, %self.param.loc10 +// CHECK:STDOUT: %a.param.loc10: %T = param runtime_param1 +// CHECK:STDOUT: %a.loc10: %T = bind_name a, %a.param.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -374,8 +386,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %N.param_patt: @B.%T (%T) = param_pattern %N.patt.loc5_11.1, runtime_param [symbolic = %N.patt.loc5_11.2 (constants.%N.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @A.%T.loc4_9.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %param: @B.%T (%T) = param runtime_param -// CHECK:STDOUT: %N.loc5_11.1: @B.%T (%T) = bind_symbolic_name N, 1, %param [symbolic = %N.loc5_11.2 (constants.%N)] +// CHECK:STDOUT: %N.param: @B.%T (%T) = param runtime_param +// CHECK:STDOUT: %N.loc5_11.1: @B.%T (%T) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc5_11.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -404,10 +416,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %.loc6: type = specific_constant constants.%B.2, @B(constants.%T, constants.%N) [symbolic = %B (constants.%B.2)] // CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, %.loc6 [symbolic = %B (constants.%B.2)] // CHECK:STDOUT: %T.ref.loc6: type = name_ref T, @A.%T.loc4_9.1 [symbolic = %T.loc6 (constants.%T)] -// CHECK:STDOUT: %param.loc6_14: @F.%B (%B.2) = param runtime_param0 -// CHECK:STDOUT: %self.loc6: @F.%B (%B.2) = bind_name self, %param.loc6_14 -// CHECK:STDOUT: %param.loc6_23: @F.%T.loc6 (%T) = param runtime_param1 -// CHECK:STDOUT: %a.loc6: @F.%T.loc6 (%T) = bind_name a, %param.loc6_23 +// CHECK:STDOUT: %self.param.loc6: @F.%B (%B.2) = param runtime_param0 +// CHECK:STDOUT: %self.loc6: @F.%B (%B.2) = bind_name self, %self.param.loc6 +// CHECK:STDOUT: %a.param.loc6: @F.%T.loc6 (%T) = param runtime_param1 +// CHECK:STDOUT: %a.loc6: @F.%T.loc6 (%T) = bind_name a, %a.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -508,8 +520,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NotGeneric.decl: type = class_decl @NotGeneric [template = constants.%NotGeneric] {} {} // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {} { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc15_15.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc15_15.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc15_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -581,8 +593,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc4_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_15.1, runtime_param [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_15.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {} {} // CHECK:STDOUT: } @@ -670,14 +682,14 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc4_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_15.1, runtime_param [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_15.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {} { -// CHECK:STDOUT: %param.loc15_13: type = param runtime_param -// CHECK:STDOUT: %T.loc15_12.1: type = bind_symbolic_name T, 0, %param.loc15_13 [symbolic = %T.loc15_12.2 (constants.%T)] -// CHECK:STDOUT: %param.loc15_23: type = param runtime_param -// CHECK:STDOUT: %U.loc15_22.1: type = bind_symbolic_name U, 1, %param.loc15_23 [symbolic = %U.loc15_22.2 (constants.%U)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc15_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_12.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc15_22.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc15_22.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -779,14 +791,14 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc4_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_15.1, runtime_param [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_15.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {} { // CHECK:STDOUT: %.loc14_17.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc14_17.2: type = converted %.loc14_17.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param -// CHECK:STDOUT: %T.loc14_12.1: %.1 = bind_symbolic_name T, 0, %param [symbolic = %T.loc14_12.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %.1 = param runtime_param +// CHECK:STDOUT: %T.loc14_12.1: %.1 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_12.2 (constants.%T.2)] // CHECK:STDOUT: } // 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 efcdbde4fcc9..85e80dc12902 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -96,12 +96,14 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.patt.loc14_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc14_13.1, runtime_param [symbolic = %T.patt.loc14_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc14_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc14_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc14_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [template = constants.%CallGenericMethod] { // CHECK:STDOUT: %c.patt: %Class.3 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class.3 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.9 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %A.ref.loc19_31: type = name_ref A, file.%A.decl [template = constants.%A] @@ -110,13 +112,16 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %B.ref.loc19: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc19_43.1: %.4 = tuple_literal (%A.ref.loc19_39, %B.ref.loc19) // CHECK:STDOUT: %.loc19_43.2: type = converted %.loc19_43.1, constants.%.9 [template = constants.%.9] -// CHECK:STDOUT: %return: ref %.9 = var -// CHECK:STDOUT: %param: %Class.3 = param runtime_param0 -// CHECK:STDOUT: %c: %Class.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class.3 = param runtime_param0 +// CHECK:STDOUT: %c: %Class.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.9 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.decl: %CallGenericMethodWithNonDeducedParam.type = fn_decl @CallGenericMethodWithNonDeducedParam [template = constants.%CallGenericMethodWithNonDeducedParam] { // CHECK:STDOUT: %c.patt: %Class.3 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class.3 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.9 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %A.ref.loc23_50: type = name_ref A, file.%A.decl [template = constants.%A] @@ -125,9 +130,10 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc23_62.1: %.4 = tuple_literal (%A.ref.loc23_58, %B.ref.loc23) // CHECK:STDOUT: %.loc23_62.2: type = converted %.loc23_62.1, constants.%.9 [template = constants.%.9] -// CHECK:STDOUT: %return: ref %.9 = var -// CHECK:STDOUT: %param: %Class.3 = param runtime_param0 -// CHECK:STDOUT: %c: %Class.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class.3 = param runtime_param0 +// CHECK:STDOUT: %c: %Class.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.9 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -159,31 +165,37 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.1) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.1)] { // CHECK:STDOUT: %U.patt.loc15_10.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_10.1 (constants.%U.patt.1)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc15_10.2, runtime_param [symbolic = %U.patt.loc15_10.1 (constants.%U.patt.1)] +// CHECK:STDOUT: %return.patt: @Get.%.loc15_28.1 (%.5) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Get.%.loc15_28.1 (%.5) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc15_27: type = name_ref U, %U.loc15_10.2 [symbolic = %U.loc15_10.1 (constants.%U)] // CHECK:STDOUT: %.loc15_28.2: %.4 = tuple_literal (%T.ref, %U.ref.loc15_27) // CHECK:STDOUT: %.loc15_28.3: type = converted %.loc15_28.2, constants.%.5 [symbolic = %.loc15_28.1 (constants.%.5)] -// CHECK:STDOUT: %return: ref @Get.%.loc15_28.1 (%.5) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc15_10.2: type = bind_symbolic_name U, 1, %param [symbolic = %U.loc15_10.1 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc15_10.2: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc15_10.1 (constants.%U)] +// CHECK:STDOUT: %return.param: @Get.%.loc15_28.1 (%.5) = param runtime_param0 +// CHECK:STDOUT: %return: ref @Get.%.loc15_28.1 (%.5) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %GetNoDeduce.decl: @Class.%GetNoDeduce.type (%GetNoDeduce.type.1) = fn_decl @GetNoDeduce [symbolic = @Class.%GetNoDeduce (constants.%GetNoDeduce.1)] { // CHECK:STDOUT: %x.patt: @GetNoDeduce.%T (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @GetNoDeduce.%T (%T) = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %U.patt.loc16_24.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc16_24.1 (constants.%U.patt.2)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc16_24.2, runtime_param [symbolic = %U.patt.loc16_24.1 (constants.%U.patt.2)] +// CHECK:STDOUT: %return.patt: @GetNoDeduce.%.loc16_42.1 (%.5) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetNoDeduce.%.loc16_42.1 (%.5) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc16_21: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.ref.loc16_38: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc16_41: type = name_ref U, %U.loc16_24.2 [symbolic = %U.loc16_24.1 (constants.%U)] // CHECK:STDOUT: %.loc16_42.2: %.4 = tuple_literal (%T.ref.loc16_38, %U.ref.loc16_41) // CHECK:STDOUT: %.loc16_42.3: type = converted %.loc16_42.2, constants.%.5 [symbolic = %.loc16_42.1 (constants.%.5)] -// CHECK:STDOUT: %return: ref @GetNoDeduce.%.loc16_42.1 (%.5) = var -// CHECK:STDOUT: %param.loc16_19: @GetNoDeduce.%T (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @GetNoDeduce.%T (%T) = bind_name x, %param.loc16_19 -// CHECK:STDOUT: %param.loc16_25: type = param runtime_param -// CHECK:STDOUT: %U.loc16_24.2: type = bind_symbolic_name U, 1, %param.loc16_25 [symbolic = %U.loc16_24.1 (constants.%U)] +// CHECK:STDOUT: %x.param: @GetNoDeduce.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @GetNoDeduce.%T (%T) = bind_name x, %x.param +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc16_24.2: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc16_24.1 (constants.%U)] +// CHECK:STDOUT: %return.param: @GetNoDeduce.%.loc16_42.1 (%.5) = param runtime_param1 +// CHECK:STDOUT: %return: ref @GetNoDeduce.%.loc16_42.1 (%.5) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = complete_type_witness %.1 [template = constants.%.2] // CHECK:STDOUT: @@ -270,8 +282,8 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Get.ref: %Get.type.2 = name_ref Get, %.loc20_11.1 [template = constants.%Get.2] // CHECK:STDOUT: %B.ref.loc20: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc20_11.2: = specific_function %Get.ref, @Get(constants.%A, constants.%B) [template = constants.%.13] -// CHECK:STDOUT: %.loc19_35: ref %.9 = splice_block %return {} -// CHECK:STDOUT: %Get.call: init %.9 = call %.loc20_11.2() to %.loc19_35 +// CHECK:STDOUT: %.loc19_35.2: ref %.9 = splice_block %return {} +// CHECK:STDOUT: %Get.call: init %.9 = call %.loc20_11.2() to %.loc19_35.2 // CHECK:STDOUT: return %Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -283,13 +295,13 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %.loc24_25.1: %.1 = struct_literal () // CHECK:STDOUT: %B.ref.loc24: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc24_11.2: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%A, constants.%B) [template = constants.%.14] -// CHECK:STDOUT: %.loc23_54: ref %.9 = splice_block %return {} +// CHECK:STDOUT: %.loc23_54.2: ref %.9 = splice_block %return {} // CHECK:STDOUT: %.loc24_25.2: ref %A = temporary_storage // CHECK:STDOUT: %.loc24_25.3: init %A = class_init (), %.loc24_25.2 [template = constants.%struct] // CHECK:STDOUT: %.loc24_25.4: ref %A = temporary %.loc24_25.2, %.loc24_25.3 // CHECK:STDOUT: %.loc24_25.5: ref %A = converted %.loc24_25.1, %.loc24_25.4 // CHECK:STDOUT: %.loc24_25.6: %A = bind_value %.loc24_25.5 -// CHECK:STDOUT: %GetNoDeduce.call: init %.9 = call %.loc24_11.2(%.loc24_25.6) to %.loc23_54 +// CHECK:STDOUT: %GetNoDeduce.call: init %.9 = call %.loc24_11.2(%.loc24_25.6) to %.loc23_54.2 // CHECK:STDOUT: return %GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/redeclare.carbon b/toolchain/check/testdata/class/generic/redeclare.carbon index 402a6fb0f54e..c8332968fa88 100644 --- a/toolchain/check/testdata/class/generic/redeclare.carbon +++ b/toolchain/check/testdata/class/generic/redeclare.carbon @@ -123,15 +123,15 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param [symbolic = constants.%T.patt.2] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc4: type = param runtime_param -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param.loc4 [symbolic = %T.loc4_15.2 (constants.%T)] +// CHECK:STDOUT: %T.param.loc4: type = param runtime_param +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %Generic.decl.loc6: %Generic.type = class_decl @Generic [template = constants.%Generic.1] { // CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param [symbolic = constants.%T.patt.2] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc6: type = param runtime_param -// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %param.loc6 [symbolic = constants.%T] +// CHECK:STDOUT: %T.param.loc6: type = param runtime_param +// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %T.param.loc6 [symbolic = constants.%T] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -192,8 +192,8 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc12_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_9.1, runtime_param [symbolic = %T.patt.loc12_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc12_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -252,7 +252,7 @@ class E(U:! type) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -268,8 +268,8 @@ class E(U:! type) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_13.2: type = converted %int.make_type_32, %.loc4_13.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_9.1: i32 = bind_symbolic_name N, 0, %param [symbolic = %N.loc4_9.2 (constants.%N.1)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_9.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_9.2 (constants.%N.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.2] { // CHECK:STDOUT: %T.patt.loc12_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt)] @@ -278,10 +278,10 @@ class E(U:! type) {} // CHECK:STDOUT: %N.param_patt: @.1.%T.loc12_9.2 (%T) = param_pattern %N.patt.loc12_19.1, runtime_param [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_9.1 [symbolic = %T.loc12_9.2 (constants.%T)] -// CHECK:STDOUT: %param.loc12_10: type = param runtime_param -// CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %param.loc12_10 [symbolic = %T.loc12_9.2 (constants.%T)] -// CHECK:STDOUT: %param.loc12_20: @.1.%T.loc12_9.2 (%T) = param runtime_param -// CHECK:STDOUT: %N.loc12_19.1: @.1.%T.loc12_9.2 (%T) = bind_symbolic_name N, 1, %param.loc12_20 [symbolic = %N.loc12_19.2 (constants.%N.2)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T)] +// CHECK:STDOUT: %N.param: @.1.%T.loc12_9.2 (%T) = param runtime_param +// CHECK:STDOUT: %N.loc12_19.1: @.1.%T.loc12_9.2 (%T) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc12_19.2 (constants.%N.2)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -355,7 +355,7 @@ class E(U:! type) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -368,8 +368,8 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.2] { // CHECK:STDOUT: %T.patt.loc12_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.2)] @@ -380,10 +380,10 @@ class E(U:! type) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_23.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_23.2: type = converted %int.make_type_32, %.loc12_23.1 [template = i32] -// CHECK:STDOUT: %param.loc12_10: type = param runtime_param -// CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %param.loc12_10 [symbolic = %T.loc12_9.2 (constants.%T)] -// CHECK:STDOUT: %param.loc12_20: i32 = param runtime_param -// CHECK:STDOUT: %U.loc12_19.1: i32 = bind_symbolic_name U, 1, %param.loc12_20 [symbolic = %U.loc12_19.2 (constants.%U)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T)] +// CHECK:STDOUT: %U.param: i32 = param runtime_param +// CHECK:STDOUT: %U.loc12_19.1: i32 = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc12_19.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -456,7 +456,7 @@ class E(U:! type) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -469,8 +469,8 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.2] { // CHECK:STDOUT: %T.patt.loc12_9.1: i32 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.2)] @@ -479,8 +479,8 @@ class E(U:! type) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %T.loc12_9.1: i32 = bind_symbolic_name T, 0, %param [symbolic = %T.loc12_9.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: i32 = param runtime_param +// CHECK:STDOUT: %T.loc12_9.1: i32 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -558,15 +558,15 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.2] { // CHECK:STDOUT: %U.patt.loc11_9.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc11_9.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc11_9.1, runtime_param [symbolic = %U.patt.loc11_9.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc11_9.1: type = bind_symbolic_name U, 0, %param [symbolic = %U.loc11_9.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc11_9.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc11_9.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index 8e160cc04e94..b873deb8093d 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -65,8 +65,8 @@ class Class(T:! type) { // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -83,16 +83,24 @@ class Class(T:! type) { // CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %MakeSelf.decl: @Class.%MakeSelf.type (%MakeSelf.type) = fn_decl @MakeSelf [symbolic = @Class.%MakeSelf (constants.%MakeSelf)] {} { +// CHECK:STDOUT: %MakeSelf.decl: @Class.%MakeSelf.type (%MakeSelf.type) = fn_decl @MakeSelf [symbolic = @Class.%MakeSelf (constants.%MakeSelf)] { +// CHECK:STDOUT: %return.patt: @MakeSelf.%Class (%Class.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @MakeSelf.%Class (%Class.2) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_20: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc14_20 [symbolic = %Class (constants.%Class.2)] -// CHECK:STDOUT: %return: ref @MakeSelf.%Class (%Class.2) = var +// CHECK:STDOUT: %return.param: @MakeSelf.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %return: ref @MakeSelf.%Class (%Class.2) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %MakeClass.decl: @Class.%MakeClass.type (%MakeClass.type) = fn_decl @MakeClass [symbolic = @Class.%MakeClass (constants.%MakeClass)] {} { +// CHECK:STDOUT: %MakeClass.decl: @Class.%MakeClass.type (%MakeClass.type) = fn_decl @MakeClass [symbolic = @Class.%MakeClass (constants.%MakeClass)] { +// CHECK:STDOUT: %return.patt: @MakeClass.%Class.loc15_26.1 (%Class.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @MakeClass.%Class.loc15_26.1 (%Class.2) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.1] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc15_26.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc15_26.1 (constants.%Class.2)] -// CHECK:STDOUT: %return: ref @MakeClass.%Class.loc15_26.1 (%Class.2) = var +// CHECK:STDOUT: %return.param: @MakeClass.%Class.loc15_26.1 (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %return: ref @MakeClass.%Class.loc15_26.1 (%Class.2) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] {} {} // CHECK:STDOUT: %.loc20: = complete_type_witness %.2 [template = constants.%.3] diff --git a/toolchain/check/testdata/class/generic_method.carbon b/toolchain/check/testdata/class/generic_method.carbon index 1e053a9b35eb..2dfa90d2bf87 100644 --- a/toolchain/check/testdata/class/generic_method.carbon +++ b/toolchain/check/testdata/class/generic_method.carbon @@ -56,8 +56,8 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { // CHECK:STDOUT: %self.patt: %Class.2 = binding_pattern self @@ -65,15 +65,15 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %n.patt: %T = binding_pattern n // CHECK:STDOUT: %n.param_patt: %T = param_pattern %n.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc16_11: type = param runtime_param -// CHECK:STDOUT: %T.loc16: type = bind_symbolic_name T, 0, %param.loc16_11 [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc16: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: %.loc16: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = constants.%Class.2] // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, %.loc16 [symbolic = constants.%Class.2] // CHECK:STDOUT: %T.ref.loc16: type = name_ref T, %T.loc16 [symbolic = constants.%T] -// CHECK:STDOUT: %param.loc16_26: %Class.2 = param runtime_param0 -// CHECK:STDOUT: %self.loc16: %Class.2 = bind_name self, %param.loc16_26 -// CHECK:STDOUT: %param.loc16_35: %T = param runtime_param1 -// CHECK:STDOUT: %n.loc16: %T = bind_name n, %param.loc16_35 +// CHECK:STDOUT: %self.param.loc16: %Class.2 = param runtime_param0 +// CHECK:STDOUT: %self.loc16: %Class.2 = bind_name self, %self.param.loc16 +// CHECK:STDOUT: %n.param.loc16: %T = param runtime_param1 +// CHECK:STDOUT: %n.loc16: %T = bind_name n, %n.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -101,10 +101,10 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %.loc13: type = specific_constant constants.%Class.2, @Class(constants.%T) [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, %.loc13 [symbolic = %Class (constants.%Class.2)] // CHECK:STDOUT: %T.ref.loc13: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T.loc13 (constants.%T)] -// CHECK:STDOUT: %param.loc13_12: @F.%Class (%Class.2) = param runtime_param0 -// CHECK:STDOUT: %self.loc13: @F.%Class (%Class.2) = bind_name self, %param.loc13_12 -// CHECK:STDOUT: %param.loc13_21: @F.%T.loc13 (%T) = param runtime_param1 -// CHECK:STDOUT: %n.loc13: @F.%T.loc13 (%T) = bind_name n, %param.loc13_21 +// CHECK:STDOUT: %self.param.loc13: @F.%Class (%Class.2) = param runtime_param0 +// CHECK:STDOUT: %self.loc13: @F.%Class (%Class.2) = bind_name self, %self.param.loc13 +// CHECK:STDOUT: %n.param.loc13: @F.%T.loc13 (%T) = param runtime_param1 +// CHECK:STDOUT: %n.loc13: @F.%T.loc13 (%T) = bind_name n, %n.param.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14_1.1: = complete_type_witness %.3 [symbolic = %.loc14_1.3 (constants.%.4)] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index a14802f00aea..752a7718d840 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -83,7 +83,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -127,8 +127,8 @@ fn Run() { // CHECK:STDOUT: %self.param_patt: %ForwardDeclared = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%ForwardDeclared [template = constants.%ForwardDeclared] -// CHECK:STDOUT: %param: %ForwardDeclared = param runtime_param0 -// CHECK:STDOUT: %self: %ForwardDeclared = bind_name self, %param +// CHECK:STDOUT: %self.param: %ForwardDeclared = param runtime_param0 +// CHECK:STDOUT: %self: %ForwardDeclared = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %.7 = binding_pattern self @@ -137,8 +137,8 @@ fn Run() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%ForwardDeclared [template = constants.%ForwardDeclared] // CHECK:STDOUT: %.loc15_23: type = ptr_type %ForwardDeclared [template = constants.%.7] -// CHECK:STDOUT: %param: %.7 = param runtime_param0 -// CHECK:STDOUT: %self: %.7 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %self: %.7 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16: = complete_type_witness %.1 [template = constants.%.2] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index ce7bc2d742f9..0e9b291e2935 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -69,7 +69,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,16 +89,16 @@ fn Run() { // CHECK:STDOUT: %self.param_patt: %Base = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [template = constants.%Base] -// CHECK:STDOUT: %param: %Base = param runtime_param0 -// CHECK:STDOUT: %self: %Base = bind_name self, %param +// CHECK:STDOUT: %self.param: %Base = param runtime_param0 +// CHECK:STDOUT: %self: %Base = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %Unused.decl: %Unused.type = fn_decl @Unused [template = constants.%Unused] { // CHECK:STDOUT: %self.patt: %Base = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Base = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [template = constants.%Base] -// CHECK:STDOUT: %param: %Base = param runtime_param0 -// CHECK:STDOUT: %self: %Base = bind_name self, %param +// CHECK:STDOUT: %self.param: %Base = param runtime_param0 +// CHECK:STDOUT: %self: %Base = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc8: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_10.1: type = value_of_initializer %int.make_type_32.loc8 [template = i32] diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index 066384d217d0..d55cfa724032 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -262,7 +262,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -299,6 +299,8 @@ class B { // CHECK:STDOUT: %GetPosition.decl: %GetPosition.type = fn_decl @GetPosition [template = constants.%GetPosition] { // CHECK:STDOUT: %self.patt: %Circle = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Circle = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.8 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [template = constants.%Circle] // CHECK:STDOUT: %int.make_type_32.loc12_36: init type = call constants.%Int32() [template = i32] @@ -309,9 +311,10 @@ class B { // CHECK:STDOUT: %.loc12_44.4: type = value_of_initializer %int.make_type_32.loc12_41 [template = i32] // CHECK:STDOUT: %.loc12_44.5: type = converted %int.make_type_32.loc12_41, %.loc12_44.4 [template = i32] // CHECK:STDOUT: %.loc12_44.6: type = converted %.loc12_44.1, constants.%.8 [template = constants.%.8] -// CHECK:STDOUT: %return: ref %.8 = var -// CHECK:STDOUT: %param: %Circle = param runtime_param0 -// CHECK:STDOUT: %self: %Circle = bind_name self, %param +// CHECK:STDOUT: %self.param: %Circle = param runtime_param0 +// CHECK:STDOUT: %self: %Circle = bind_name self, %self.param +// CHECK:STDOUT: %return.param: %.8 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.8 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.9 [template = constants.%.10] // CHECK:STDOUT: @@ -391,7 +394,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -419,11 +422,15 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc9: %.5 = base_decl %A, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} { +// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_21.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc10_21.2: type = converted %int.make_type_32, %.loc10_21.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11: = complete_type_witness %.6 [template = constants.%.7] // CHECK:STDOUT: @@ -440,13 +447,16 @@ class B { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] // CHECK:STDOUT: %.loc15_26.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc15_26.2: type = converted %.loc15_26.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16: = complete_type_witness %.11 [template = constants.%.12] // CHECK:STDOUT: @@ -510,7 +520,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -530,11 +540,15 @@ class B { // CHECK:STDOUT: %.loc5_32.2: type = converted %int.make_type_32, %.loc5_32.1 [template = i32] // CHECK:STDOUT: %.loc5_38: i32 = int_literal 5 [template = constants.%.2] // CHECK:STDOUT: %SOME_CONSTANT: i32 = bind_name SOME_CONSTANT, %.loc5_38 -// CHECK:STDOUT: %SomeProtectedFunction.decl: %SomeProtectedFunction.type = fn_decl @SomeProtectedFunction [template = constants.%SomeProtectedFunction] {} { +// CHECK:STDOUT: %SomeProtectedFunction.decl: %SomeProtectedFunction.type = fn_decl @SomeProtectedFunction [template = constants.%SomeProtectedFunction] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_43.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc6_43.2: type = converted %int.make_type_32, %.loc6_43.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9: = complete_type_witness %.3 [template = constants.%.4] // CHECK:STDOUT: @@ -547,17 +561,25 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc12: %.6 = base_decl %A, element0 [template] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_13.2: type = converted %int.make_type_32, %.loc14_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} { +// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc18_13.2: type = converted %int.make_type_32, %.loc18_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc21: = complete_type_witness %.7 [template = constants.%.8] // CHECK:STDOUT: @@ -627,7 +649,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -659,14 +681,17 @@ class B { // CHECK:STDOUT: %GetPosition.decl: %GetPosition.type = fn_decl @GetPosition [template = constants.%GetPosition] { // CHECK:STDOUT: %self.patt: %Square = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Square = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Square [template = constants.%Square] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_35.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_35.2: type = converted %int.make_type_32, %.loc11_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Square = param runtime_param0 -// CHECK:STDOUT: %self: %Square = bind_name self, %param +// CHECK:STDOUT: %self.param: %Square = param runtime_param0 +// CHECK:STDOUT: %self: %Square = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc21: = complete_type_witness %.7 [template = constants.%.8] // CHECK:STDOUT: @@ -999,7 +1024,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1050,23 +1075,30 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %Internal.ref: type = name_ref Internal, file.%Internal.decl [template = constants.%Internal] // CHECK:STDOUT: %.loc14: %.6 = field_decl internal, element0 [template] -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc16_13.2: type = converted %int.make_type_32, %.loc16_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %SomeFunc.decl: %SomeFunc.type = fn_decl @SomeFunc [template = constants.%SomeFunc] { // CHECK:STDOUT: %self.patt: %B = binding_pattern self // CHECK:STDOUT: %self.param_patt: %B = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc36_32.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc36_32.2: type = converted %int.make_type_32, %.loc36_32.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %B = param runtime_param0 -// CHECK:STDOUT: %self: %B = bind_name self, %param +// CHECK:STDOUT: %self.param: %B = param runtime_param0 +// CHECK:STDOUT: %self: %B = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc46: = complete_type_witness %.7 [template = constants.%.8] // CHECK:STDOUT: @@ -1131,7 +1163,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1165,8 +1197,8 @@ class B { // CHECK:STDOUT: %self.param_patt: %B = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] -// CHECK:STDOUT: %param: %B = param runtime_param0 -// CHECK:STDOUT: %self: %B = bind_name self, %param +// CHECK:STDOUT: %self.param: %B = param runtime_param0 +// CHECK:STDOUT: %self: %B = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = complete_type_witness %.7 [template = constants.%.8] // CHECK:STDOUT: @@ -1220,7 +1252,7 @@ class B { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1254,8 +1286,8 @@ class B { // CHECK:STDOUT: %self.param_patt: %B = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] -// CHECK:STDOUT: %param: %B = param runtime_param0 -// CHECK:STDOUT: %self: %B = bind_name self, %param +// CHECK:STDOUT: %self.param: %B = param runtime_param0 +// CHECK:STDOUT: %self: %B = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: = complete_type_witness %.7 [template = constants.%.8] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index 491c4826ad2b..cb538786c81d 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -53,7 +53,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -70,6 +70,8 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %next.patt: %.3 = binding_pattern next // CHECK:STDOUT: %next.param_patt: %.3 = param_pattern %next.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_12.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -77,17 +79,20 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %Class.ref.loc16_23: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc16_28: type = ptr_type %Class [template = constants.%.3] // CHECK:STDOUT: %Class.ref.loc16_34: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var -// CHECK:STDOUT: %param.loc16_10: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param.loc16_10 -// CHECK:STDOUT: %param.loc16_21: %.3 = param runtime_param1 -// CHECK:STDOUT: %next: %.3 = bind_name next, %param.loc16_21 +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %next.param: %.3 = param runtime_param1 +// CHECK:STDOUT: %next: %.3 = bind_name next, %next.param +// CHECK:STDOUT: %return.param: %Class = param runtime_param2 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MakeReorder.decl: %MakeReorder.type = fn_decl @MakeReorder [template = constants.%MakeReorder] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %next.patt: %.3 = binding_pattern next // CHECK:STDOUT: %next.param_patt: %.3 = param_pattern %next.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc20_19.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -95,11 +100,12 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %Class.ref.loc20_30: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc20_35: type = ptr_type %Class [template = constants.%.3] // CHECK:STDOUT: %Class.ref.loc20_41: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var -// CHECK:STDOUT: %param.loc20_17: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param.loc20_17 -// CHECK:STDOUT: %param.loc20_28: %.3 = param runtime_param1 -// CHECK:STDOUT: %next: %.3 = bind_name next, %param.loc20_28 +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %next.param: %.3 = param runtime_param1 +// CHECK:STDOUT: %next: %.3 = bind_name next, %next.param +// CHECK:STDOUT: %return.param: %Class = param runtime_param2 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/init_adapt.carbon b/toolchain/check/testdata/class/init_adapt.carbon index 1b471a524a7c..2fbecbb69bb6 100644 --- a/toolchain/check/testdata/class/init_adapt.carbon +++ b/toolchain/check/testdata/class/init_adapt.carbon @@ -125,7 +125,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -147,13 +147,21 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C] // CHECK:STDOUT: %AdaptC.ref.loc15: type = name_ref AdaptC, %AdaptC.decl [template = constants.%AdaptC] // CHECK:STDOUT: %C.ref.loc17: type = name_ref C, %C.decl [template = constants.%C] -// CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [template = constants.%MakeC] {} { +// CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [template = constants.%MakeC] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %MakeAdaptC.decl: %MakeAdaptC.type = fn_decl @MakeAdaptC [template = constants.%MakeAdaptC] {} { +// CHECK:STDOUT: %MakeAdaptC.decl: %MakeAdaptC.type = fn_decl @MakeAdaptC [template = constants.%MakeAdaptC] { +// CHECK:STDOUT: %return.patt: %AdaptC = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %AdaptC = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptC.ref: type = name_ref AdaptC, file.%AdaptC.decl [template = constants.%AdaptC] -// CHECK:STDOUT: %return: ref %AdaptC = var +// CHECK:STDOUT: %return.param: %AdaptC = param runtime_param0 +// CHECK:STDOUT: %return: ref %AdaptC = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AdaptC.ref.loc23: type = name_ref AdaptC, %AdaptC.decl [template = constants.%AdaptC] // CHECK:STDOUT: %d.var: ref %AdaptC = var d @@ -294,13 +302,13 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.9) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.13)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.9) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.13)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -322,13 +330,21 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C] // CHECK:STDOUT: %AdaptC.ref.loc24: type = name_ref AdaptC, %AdaptC.decl [template = constants.%AdaptC] // CHECK:STDOUT: %C.ref.loc33: type = name_ref C, %C.decl [template = constants.%C] -// CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [template = constants.%MakeC] {} { +// CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [template = constants.%MakeC] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %MakeAdaptC.decl: %MakeAdaptC.type = fn_decl @MakeAdaptC [template = constants.%MakeAdaptC] {} { +// CHECK:STDOUT: %MakeAdaptC.decl: %MakeAdaptC.type = fn_decl @MakeAdaptC [template = constants.%MakeAdaptC] { +// CHECK:STDOUT: %return.patt: %AdaptC = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %AdaptC = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptC.ref: type = name_ref AdaptC, file.%AdaptC.decl [template = constants.%AdaptC] -// CHECK:STDOUT: %return: ref %AdaptC = var +// CHECK:STDOUT: %return.param: %AdaptC = param runtime_param0 +// CHECK:STDOUT: %return: ref %AdaptC = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AdaptC.ref.loc46: type = name_ref AdaptC, %AdaptC.decl [template = constants.%AdaptC] // CHECK:STDOUT: %d.var: ref %AdaptC = var d diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index e8ee3ffba1b0..de144e8a4ed9 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -47,7 +47,7 @@ fn F() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,11 +58,15 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc16_11.2: type = converted %int.make_type_32, %.loc16_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 2fd8a48fcfe1..9f1a659a9f5b 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -60,7 +60,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -73,14 +73,22 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [template = constants.%Inner] {} {} -// CHECK:STDOUT: %MakeInner.decl: %MakeInner.type = fn_decl @MakeInner [template = constants.%MakeInner] {} { +// CHECK:STDOUT: %MakeInner.decl: %MakeInner.type = fn_decl @MakeInner [template = constants.%MakeInner] { +// CHECK:STDOUT: %return.patt: %Inner = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Inner = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, file.%Inner.decl [template = constants.%Inner] -// CHECK:STDOUT: %return: ref %Inner = var +// CHECK:STDOUT: %return.param: %Inner = param runtime_param0 +// CHECK:STDOUT: %return: ref %Inner = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Outer.decl: type = class_decl @Outer [template = constants.%Outer] {} {} -// CHECK:STDOUT: %MakeOuter.decl: %MakeOuter.type = fn_decl @MakeOuter [template = constants.%MakeOuter] {} { +// CHECK:STDOUT: %MakeOuter.decl: %MakeOuter.type = fn_decl @MakeOuter [template = constants.%MakeOuter] { +// CHECK:STDOUT: %return.patt: %Outer = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Outer = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [template = constants.%Outer] -// CHECK:STDOUT: %return: ref %Outer = var +// CHECK:STDOUT: %return.param: %Outer = param runtime_param0 +// CHECK:STDOUT: %return: ref %Outer = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 0e531c0a3c77..c7ccf3557925 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -108,7 +108,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -130,92 +130,127 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc20: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc20_29.1: type = value_of_initializer %int.make_type_32.loc20 [template = i32] // CHECK:STDOUT: %.loc20_29.2: type = converted %int.make_type_32.loc20, %.loc20_29.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc20: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc20: %Class = bind_name self, %param.loc20 +// CHECK:STDOUT: %self.param.loc20: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc20: %Class = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %return.param.loc20: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { // CHECK:STDOUT: %c.patt: %Class = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc24_22.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc24_22.2: type = converted %int.make_type_32, %.loc24_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %c: %Class = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class = param runtime_param0 +// CHECK:STDOUT: %c: %Class = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallAlias.decl: %CallAlias.type = fn_decl @CallAlias [template = constants.%CallAlias] { // CHECK:STDOUT: %c.patt: %Class = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc30_27.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc30_27.2: type = converted %int.make_type_32, %.loc30_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %c: %Class = bind_name c, %param +// CHECK:STDOUT: %c.param: %Class = param runtime_param0 +// CHECK:STDOUT: %c: %Class = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallOnConstBoundMethod.decl: %CallOnConstBoundMethod.type = fn_decl @CallOnConstBoundMethod [template = constants.%CallOnConstBoundMethod] {} { +// CHECK:STDOUT: %CallOnConstBoundMethod.decl: %CallOnConstBoundMethod.type = fn_decl @CallOnConstBoundMethod [template = constants.%CallOnConstBoundMethod] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc34_32.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc34_32.2: type = converted %int.make_type_32, %.loc34_32.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallWithAddr.decl: %CallWithAddr.type = fn_decl @CallWithAddr [template = constants.%CallWithAddr] {} { +// CHECK:STDOUT: %CallWithAddr.decl: %CallWithAddr.type = fn_decl @CallWithAddr [template = constants.%CallWithAddr] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc38_22.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc38_22.2: type = converted %int.make_type_32, %.loc38_22.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallFThroughPointer.decl: %CallFThroughPointer.type = fn_decl @CallFThroughPointer [template = constants.%CallFThroughPointer] { // CHECK:STDOUT: %p.patt: %.2 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.2 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc43_32: type = ptr_type %Class [template = constants.%.2] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc43_38.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc43_38.2: type = converted %int.make_type_32, %.loc43_38.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %p: %.2 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGThroughPointer.decl: %CallGThroughPointer.type = fn_decl @CallGThroughPointer [template = constants.%CallGThroughPointer] { // CHECK:STDOUT: %p.patt: %.2 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.2 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc47_32: type = ptr_type %Class [template = constants.%.2] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc47_38.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc47_38.2: type = converted %int.make_type_32, %.loc47_38.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %p: %.2 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var +// CHECK:STDOUT: %return.param: %Class = param runtime_param0 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallFOnInitializingExpr.decl: %CallFOnInitializingExpr.type = fn_decl @CallFOnInitializingExpr [template = constants.%CallFOnInitializingExpr] {} { +// CHECK:STDOUT: %CallFOnInitializingExpr.decl: %CallFOnInitializingExpr.type = fn_decl @CallFOnInitializingExpr [template = constants.%CallFOnInitializingExpr] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc53_33.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc53_33.2: type = converted %int.make_type_32, %.loc53_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallGOnInitializingExpr.decl: %CallGOnInitializingExpr.type = fn_decl @CallGOnInitializingExpr [template = constants.%CallGOnInitializingExpr] {} { +// CHECK:STDOUT: %CallGOnInitializingExpr.decl: %CallGOnInitializingExpr.type = fn_decl @CallGOnInitializingExpr [template = constants.%CallGOnInitializingExpr] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc57_33.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc57_33.2: type = converted %int.make_type_32, %.loc57_33.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -223,28 +258,34 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc12: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_25.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] // CHECK:STDOUT: %.loc12_25.2: type = converted %int.make_type_32.loc12, %.loc12_25.1 [template = i32] -// CHECK:STDOUT: %return.var.loc12: ref i32 = var -// CHECK:STDOUT: %param.loc12: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc12: %Class = bind_name self, %param.loc12 +// CHECK:STDOUT: %self.param.loc12: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc12: %Class = bind_name self, %self.param.loc12 +// CHECK:STDOUT: %return.param.loc12: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc12_22: ref i32 = return_slot %return.param.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %.2 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %.2 = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc13_8: auto = addr_pattern %self.param_patt +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %.loc13_23: type = ptr_type %Class [template = constants.%.2] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_31.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_31.2: type = converted %int.make_type_32, %.loc13_31.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %self: %.2 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %self: %.2 = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.ref: %F.type = name_ref F, %F.decl [template = constants.%F] // CHECK:STDOUT: %A: %F.type = bind_alias A, %F.decl [template = constants.%F] diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index c19706f39cf9..aa1f4edc3fa1 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -104,8 +104,8 @@ fn F(a: Outer*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref.loc41: type = name_ref Outer, file.%Outer.decl [template = constants.%Outer] // CHECK:STDOUT: %.loc41: type = ptr_type %Outer [template = constants.%.4] -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %a: %.4 = bind_name a, %param +// CHECK:STDOUT: %a.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %a: %.4 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 3eeaafec24c3..79cb2391389c 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -55,7 +55,7 @@ fn G(o: Outer) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -70,23 +70,26 @@ fn G(o: Outer) { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %oi.patt: %Inner = binding_pattern oi // CHECK:STDOUT: %oi.param_patt: %Inner = param_pattern %oi.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [template = constants.%Outer] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [template = constants.%Inner] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc17_26.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc17_26.2: type = converted %int.make_type_32, %.loc17_26.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %Inner = param runtime_param0 -// CHECK:STDOUT: %oi: %Inner = bind_name oi, %param +// CHECK:STDOUT: %oi.param: %Inner = param runtime_param0 +// CHECK:STDOUT: %oi: %Inner = bind_name oi, %oi.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %o.patt: %Outer = binding_pattern o // CHECK:STDOUT: %o.param_patt: %Outer = param_pattern %o.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [template = constants.%Outer] -// CHECK:STDOUT: %param: %Outer = param runtime_param0 -// CHECK:STDOUT: %o: %Outer = bind_name o, %param +// CHECK:STDOUT: %o.param: %Outer = param runtime_param0 +// CHECK:STDOUT: %o: %Outer = bind_name o, %o.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon index 4a035dcbec14..264cc973db08 100644 --- a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon @@ -112,15 +112,15 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc6_24.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_24.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_24.1, runtime_param [symbolic = %T.patt.loc6_24.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc6_24.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc6_24.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_24.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_24.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.1] { // CHECK:STDOUT: %T.patt.loc8_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_9.1, runtime_param [symbolic = %T.patt.loc8_9.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {} // CHECK:STDOUT: %NotGenericNoParams.ref: type = name_ref NotGenericNoParams, %NotGenericNoParams.decl [template = constants.%NotGenericNoParams] @@ -194,8 +194,8 @@ fn F(T:! type) { // CHECK:STDOUT: %U.patt.loc10_26.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_26.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc10_26.1, runtime_param [symbolic = %U.patt.loc10_26.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc10_26.1: type = bind_symbolic_name U, 1, %param [symbolic = %U.loc10_26.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc10_26.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc10_26.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11: = complete_type_witness %.1 [template = constants.%.2] // CHECK:STDOUT: @@ -358,8 +358,8 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc10_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10_6.1, runtime_param [symbolic = %T.patt.loc10_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc10_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc10_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc10_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/import_access.carbon b/toolchain/check/testdata/class/no_prelude/import_access.carbon index 20106a448a1a..22307034033d 100644 --- a/toolchain/check/testdata/class/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/class/no_prelude/import_access.carbon @@ -416,8 +416,8 @@ private class Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Forward.ref: type = name_ref Forward, imports.%import_ref [template = constants.%Forward] // CHECK:STDOUT: %.loc4: type = ptr_type %Forward [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %c: %.1 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %c: %.1 = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: %Forward.decl: type = class_decl @Forward [template = constants.%Forward] {} {} // CHECK:STDOUT: } @@ -453,8 +453,8 @@ private class Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [template = ] // CHECK:STDOUT: %.loc10: type = ptr_type [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %c: = bind_name c, %param +// CHECK:STDOUT: %c.param: = param runtime_param0 +// CHECK:STDOUT: %c: = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -490,8 +490,8 @@ private class Redecl {} // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [template = imports.%Test] // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [template = ] // CHECK:STDOUT: %.loc9: type = ptr_type [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %c: = bind_name c, %param +// CHECK:STDOUT: %c.param: = param runtime_param0 +// CHECK:STDOUT: %c: = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon index f50c0b3b0dc1..0896dff56c48 100644 --- a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon @@ -214,32 +214,32 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc8, runtime_param [symbolic = constants.%a.patt.2] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %param.loc7 [symbolic = %a.loc7_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = %a.loc7_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = class_decl @Foo [template = constants.%Foo.1] { // CHECK:STDOUT: %a.patt.loc8: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt.2] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc8, runtime_param [symbolic = constants.%a.patt.2] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc8: %C = param runtime_param -// CHECK:STDOUT: %a.loc8: %C = bind_symbolic_name a, 0, %param.loc8 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc8: %C = param runtime_param +// CHECK:STDOUT: %a.loc8: %C = bind_symbolic_name a, 0, %a.param.loc8 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl.loc10: %Bar.type = class_decl @Bar [template = constants.%Bar.1] { // CHECK:STDOUT: %a.patt.loc11: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt.4] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc11, runtime_param [symbolic = constants.%a.patt.4] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param.loc10: %C = param runtime_param -// CHECK:STDOUT: %a.loc10_11.1: %C = bind_symbolic_name a, 0, %param.loc10 [symbolic = %a.loc10_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc10: %C = param runtime_param +// CHECK:STDOUT: %a.loc10_11.1: %C = bind_symbolic_name a, 0, %a.param.loc10 [symbolic = %a.loc10_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl.loc11: %Bar.type = class_decl @Bar [template = constants.%Bar.1] { // CHECK:STDOUT: %a.patt.loc11: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt.4] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc11, runtime_param [symbolic = constants.%a.patt.4] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param.loc11: %C = param runtime_param -// CHECK:STDOUT: %a.loc11: %C = bind_symbolic_name a, 0, %param.loc11 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc11: %C = param runtime_param +// CHECK:STDOUT: %a.loc11: %C = bind_symbolic_name a, 0, %a.param.loc11 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -314,16 +314,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7, runtime_param [symbolic = constants.%a.patt.2] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc6: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_17.1: %C = bind_symbolic_name a, 0, %param.loc6 [symbolic = %a.loc6_17.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_17.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_17.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = class_decl @Foo [template = constants.%Foo.1] { // CHECK:STDOUT: %a.patt.loc7: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt.2] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7, runtime_param [symbolic = constants.%a.patt.2] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param -// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %param.loc7 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param +// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -382,16 +382,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_11.1, runtime_param [symbolic = %a.patt.loc6_11.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc6_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc14_11.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc14_11.1, runtime_param [symbolic = %a.patt.loc14_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc14_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc14_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc14_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc14_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -459,16 +459,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7, runtime_param [symbolic = constants.%a.patt.2] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc6: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_11.1: %C = bind_symbolic_name a, 0, %param.loc6 [symbolic = %a.loc6_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_11.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = class_decl @Foo [template = constants.%Foo.1] { // CHECK:STDOUT: %a.patt.loc7: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt.2] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7, runtime_param [symbolic = constants.%a.patt.2] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param -// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %param.loc7 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param +// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -531,16 +531,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_11.1, runtime_param [symbolic = %a.patt.loc7_11.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = class_decl @Bar [template = constants.%Bar.1] { // CHECK:STDOUT: %a.patt.loc8_11.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc8_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc8_11.1, runtime_param [symbolic = %a.patt.loc8_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc8_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc8_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc8_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc8_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -616,16 +616,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc4, runtime_param [symbolic = constants.%a.patt.1] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc4: %C = bind_symbolic_name a, 0, %param [symbolic = constants.%a] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc4: %C = bind_symbolic_name a, 0, %a.param [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = class_decl @Bar [template = constants.%Bar.1] { // CHECK:STDOUT: %a.patt.loc5: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt.3] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc5, runtime_param [symbolic = constants.%a.patt.3] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc5: %C = bind_symbolic_name a, 0, %param [symbolic = constants.%a] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc5: %C = bind_symbolic_name a, 0, %a.param [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -705,16 +705,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_11.1, runtime_param [symbolic = %a.patt.loc7_11.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %b.patt.loc15_11.1: %C = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_11.2 (constants.%b.patt)] // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt.loc15_11.1, runtime_param [symbolic = %b.patt.loc15_11.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %b.loc15_11.1: %C = bind_symbolic_name b, 0, %param [symbolic = %b.loc15_11.2 (constants.%b)] +// CHECK:STDOUT: %b.param: %C = param runtime_param +// CHECK:STDOUT: %b.loc15_11.1: %C = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc15_11.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -788,16 +788,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_11.1, runtime_param [symbolic = %a.patt.loc7_11.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc15_11.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc15_11.1, runtime_param [symbolic = %a.patt.loc15_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc15_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc15_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc15_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -871,16 +871,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_11.1, runtime_param [symbolic = %a.patt.loc7_11.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc15_11.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc15_11.1, runtime_param [symbolic = %a.patt.loc15_11.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc15_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc15_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc15_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -947,8 +947,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_11.1, runtime_param [symbolic = %a.patt.loc6_11.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_11.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc6_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_11.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1007,8 +1007,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6, runtime_param [symbolic = constants.%a.patt.1] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc6: %C = bind_symbolic_name a, 0, %param [symbolic = constants.%a] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc6: %C = bind_symbolic_name a, 0, %a.param [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1067,8 +1067,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc6: type = const_type %C [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param -// CHECK:STDOUT: %a.loc6_11.1: %.3 = bind_symbolic_name a, 0, %param [symbolic = %a.loc6_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %.3 = param runtime_param +// CHECK:STDOUT: %a.loc6_11.1: %.3 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.5] { // CHECK:STDOUT: %a.patt.loc18_11.1: %.3 = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc18_11.2 (constants.%a.patt.2)] @@ -1077,8 +1077,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc18_22: type = const_type %C [template = constants.%.3] // CHECK:STDOUT: %.loc18_15: type = const_type %.3 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param -// CHECK:STDOUT: %a.loc18_11.1: %.3 = bind_symbolic_name a, 0, %param [symbolic = %a.loc18_11.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %.3 = param runtime_param +// CHECK:STDOUT: %a.loc18_11.1: %.3 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc18_11.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1149,8 +1149,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc16_26: type = ptr_type %Base [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %self: %.3 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %self: %.3 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1165,8 +1165,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [template = constants.%Base] // CHECK:STDOUT: %.loc7_23: type = ptr_type %Base [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %self: %.3 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %self: %.3 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8: = complete_type_witness %.4 [template = constants.%.5] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index 8f5dfd4bb36d..4d9a42d7889e 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -55,7 +55,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,16 +77,18 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %int.make_type_32.loc17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc17_38.1: type = value_of_initializer %int.make_type_32.loc17 [template = i32] // CHECK:STDOUT: %.loc17_38.2: type = converted %int.make_type_32.loc17, %.loc17_38.1 [template = i32] -// CHECK:STDOUT: %param.loc17_21: %.1 = param runtime_param0 -// CHECK:STDOUT: %self.loc17_17: %.1 = bind_name self, %param.loc17_21 -// CHECK:STDOUT: %param.loc17_36: i32 = param runtime_param1 -// CHECK:STDOUT: %self.loc17_30: i32 = bind_name r#self, %param.loc17_36 +// CHECK:STDOUT: %self.param.loc17_21: %.1 = param runtime_param0 +// CHECK:STDOUT: %self.loc17_17: %.1 = bind_name self, %self.param.loc17_21 +// CHECK:STDOUT: %self.param.loc17_36: i32 = param runtime_param1 +// CHECK:STDOUT: %self.loc17_30: i32 = bind_name r#self, %self.param.loc17_36 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt.loc21_12: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt.loc21_16: %Class = param_pattern %self.patt.loc21_12, runtime_param0 // CHECK:STDOUT: %self.patt.loc21_24: i32 = binding_pattern r#self // CHECK:STDOUT: %self.param_patt.loc21_30: i32 = param_pattern %self.patt.loc21_24, runtime_param1 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc21_32: init type = call constants.%Int32() [template = i32] @@ -100,11 +102,12 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %.loc21_49.4: type = value_of_initializer %int.make_type_32.loc21_46 [template = i32] // CHECK:STDOUT: %.loc21_49.5: type = converted %int.make_type_32.loc21_46, %.loc21_49.4 [template = i32] // CHECK:STDOUT: %.loc21_49.6: type = converted %.loc21_49.1, constants.%.4 [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param.loc21_16: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc21_12: %Class = bind_name self, %param.loc21_16 -// CHECK:STDOUT: %param.loc21_30: i32 = param runtime_param1 -// CHECK:STDOUT: %self.loc21_24: i32 = bind_name r#self, %param.loc21_30 +// CHECK:STDOUT: %self.param.loc21_16: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc21_12: %Class = bind_name self, %self.param.loc21_16 +// CHECK:STDOUT: %self.param.loc21_30: i32 = param runtime_param1 +// CHECK:STDOUT: %self.loc21_24: i32 = bind_name r#self, %self.param.loc21_30 +// CHECK:STDOUT: %return.param.loc21: %.4 = param runtime_param2 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -121,16 +124,18 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_34.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] // CHECK:STDOUT: %.loc12_34.2: type = converted %int.make_type_32.loc12, %.loc12_34.1 [template = i32] -// CHECK:STDOUT: %param.loc12_17: %.1 = param runtime_param0 -// CHECK:STDOUT: %self.loc12_13: %.1 = bind_name self, %param.loc12_17 -// CHECK:STDOUT: %param.loc12_32: i32 = param runtime_param1 -// CHECK:STDOUT: %self.loc12_26: i32 = bind_name r#self, %param.loc12_32 +// CHECK:STDOUT: %self.param.loc12_17: %.1 = param runtime_param0 +// CHECK:STDOUT: %self.loc12_13: %.1 = bind_name self, %self.param.loc12_17 +// CHECK:STDOUT: %self.param.loc12_32: i32 = param runtime_param1 +// CHECK:STDOUT: %self.loc12_26: i32 = bind_name r#self, %self.param.loc12_32 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt.loc21_12: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt.loc21_16: %Class = param_pattern %self.patt.loc21_12, runtime_param0 // CHECK:STDOUT: %self.patt.loc21_24: i32 = binding_pattern r#self // CHECK:STDOUT: %self.param_patt.loc21_30: i32 = param_pattern %self.patt.loc21_24, runtime_param1 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc13_28: init type = call constants.%Int32() [template = i32] @@ -144,11 +149,12 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %.loc13_45.4: type = value_of_initializer %int.make_type_32.loc13_42 [template = i32] // CHECK:STDOUT: %.loc13_45.5: type = converted %int.make_type_32.loc13_42, %.loc13_45.4 [template = i32] // CHECK:STDOUT: %.loc13_45.6: type = converted %.loc13_45.1, constants.%.4 [template = constants.%.4] -// CHECK:STDOUT: %return.var.loc13: ref %.4 = var -// CHECK:STDOUT: %param.loc13_12: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc13_8: %Class = bind_name self, %param.loc13_12 -// CHECK:STDOUT: %param.loc13_26: i32 = param runtime_param1 -// CHECK:STDOUT: %self.loc13_20: i32 = bind_name r#self, %param.loc13_26 +// CHECK:STDOUT: %self.param.loc13_12: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc13_8: %Class = bind_name self, %self.param.loc13_12 +// CHECK:STDOUT: %self.param.loc13_26: i32 = param runtime_param1 +// CHECK:STDOUT: %self.loc13_20: i32 = bind_name r#self, %self.param.loc13_26 +// CHECK:STDOUT: %return.param.loc13: %.4 = param runtime_param2 +// CHECK:STDOUT: %.loc13_33: ref %.4 = return_slot %return.param.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_10.1: type = value_of_initializer %int.make_type_32 [template = i32] diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index 1171909a5204..3a9c25ef9c51 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -70,10 +70,10 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc24_25: type = name_ref Self, constants.%MemberNamedSelf [template = constants.%MemberNamedSelf] // CHECK:STDOUT: %Self.ref.loc24_34: type = name_ref r#Self, @MemberNamedSelf.%Self.decl [template = constants.%Self] -// CHECK:STDOUT: %param.loc24_23: %MemberNamedSelf = param runtime_param0 -// CHECK:STDOUT: %x.loc24: %MemberNamedSelf = bind_name x, %param.loc24_23 -// CHECK:STDOUT: %param.loc24_32: %Self = param runtime_param1 -// CHECK:STDOUT: %y.loc24: %Self = bind_name y, %param.loc24_32 +// CHECK:STDOUT: %x.param.loc24: %MemberNamedSelf = param runtime_param0 +// CHECK:STDOUT: %x.loc24: %MemberNamedSelf = bind_name x, %x.param.loc24 +// CHECK:STDOUT: %y.param.loc24: %Self = param runtime_param1 +// CHECK:STDOUT: %y.loc24: %Self = bind_name y, %y.param.loc24 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -96,10 +96,10 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc21_11: type = name_ref Self, constants.%MemberNamedSelf [template = constants.%MemberNamedSelf] // CHECK:STDOUT: %Self.ref.loc21_20: type = name_ref r#Self, @MemberNamedSelf.%Self.decl [template = constants.%Self] -// CHECK:STDOUT: %param.loc21_9: %MemberNamedSelf = param runtime_param0 -// CHECK:STDOUT: %x.loc21: %MemberNamedSelf = bind_name x, %param.loc21_9 -// CHECK:STDOUT: %param.loc21_18: %Self = param runtime_param1 -// CHECK:STDOUT: %y.loc21: %Self = bind_name y, %param.loc21_18 +// CHECK:STDOUT: %x.param.loc21: %MemberNamedSelf = param runtime_param0 +// CHECK:STDOUT: %x.loc21: %MemberNamedSelf = bind_name x, %x.param.loc21 +// CHECK:STDOUT: %y.param.loc21: %Self = param runtime_param1 +// CHECK:STDOUT: %y.loc21: %Self = bind_name y, %y.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index b6810d2a1ce0..03748468de9e 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -42,7 +42,7 @@ fn Class.F[self: Self](b: bool) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,10 +63,10 @@ fn Class.F[self: Self](b: bool) {} // CHECK:STDOUT: %bool.make_type.loc17: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_27.1: type = value_of_initializer %bool.make_type.loc17 [template = bool] // CHECK:STDOUT: %.loc17_27.2: type = converted %bool.make_type.loc17, %.loc17_27.1 [template = bool] -// CHECK:STDOUT: %param.loc17_16: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc17: %Class = bind_name self, %param.loc17_16 -// CHECK:STDOUT: %param.loc17_25: bool = param runtime_param1 -// CHECK:STDOUT: %b.loc17: bool = bind_name b, %param.loc17_25 +// CHECK:STDOUT: %self.param.loc17: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc17: %Class = bind_name self, %self.param.loc17 +// CHECK:STDOUT: %b.param.loc17: bool = param runtime_param1 +// CHECK:STDOUT: %b.loc17: bool = bind_name b, %b.param.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -81,10 +81,10 @@ fn Class.F[self: Self](b: bool) {} // CHECK:STDOUT: %bool.make_type.loc14: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_23.1: type = value_of_initializer %bool.make_type.loc14 [template = bool] // CHECK:STDOUT: %.loc14_23.2: type = converted %bool.make_type.loc14, %.loc14_23.1 [template = bool] -// CHECK:STDOUT: %param.loc14_12: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc14: %Class = bind_name self, %param.loc14_12 -// CHECK:STDOUT: %param.loc14_21: bool = param runtime_param1 -// CHECK:STDOUT: %b.loc14: bool = bind_name b, %param.loc14_21 +// CHECK:STDOUT: %self.param.loc14: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc14: %Class = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %b.param.loc14: bool = param runtime_param1 +// CHECK:STDOUT: %b.loc14: bool = bind_name b, %b.param.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index c589ecb122c4..8364c446afaa 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -46,7 +46,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,26 +56,38 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_17.1: type = value_of_initializer %int.make_type_32.loc16 [template = i32] // CHECK:STDOUT: %.loc16_17.2: type = converted %int.make_type_32.loc16, %.loc16_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param.loc16: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32.loc12, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %return.var.loc12: ref i32 = var +// CHECK:STDOUT: %return.param.loc12: i32 = param runtime_param0 +// CHECK:STDOUT: %.loc12_10: ref i32 = return_slot %return.param.loc12 // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_13.2: type = converted %int.make_type_32, %.loc13_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index e440a9d2ca8c..ee88ab3fc789 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -47,7 +47,7 @@ class Class { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,17 +60,25 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc16_13.2: type = converted %int.make_type_32, %.loc16_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index 4ac822ed0297..0e26ae6ae8b5 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -104,7 +104,7 @@ class A { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index fd5ba624b834..2f0aba1911ba 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -61,7 +61,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -73,27 +73,39 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} { +// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc21_11.2: type = converted %int.make_type_32, %.loc21_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} { +// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc16_13.2: type = converted %int.make_type_32, %.loc16_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index b0f525ac0370..63efd720bc5d 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -78,7 +78,7 @@ class Class { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,28 +91,34 @@ class Class { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc11: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_29.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_29.2: type = converted %int.make_type_32.loc11, %.loc11_29.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc11: %Class = bind_name self, %param.loc11 +// CHECK:STDOUT: %self.param.loc11: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc11: %Class = bind_name self, %self.param.loc11 +// CHECK:STDOUT: %return.param.loc11: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %.2 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %.2 = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc15_12: auto = addr_pattern %self.param_patt +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc15: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %.loc15_27: type = ptr_type %Class [template = constants.%.2] // CHECK:STDOUT: %int.make_type_32.loc15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_35.1: type = value_of_initializer %int.make_type_32.loc15 [template = i32] // CHECK:STDOUT: %.loc15_35.2: type = converted %int.make_type_32.loc15, %.loc15_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc15: %.2 = param runtime_param0 -// CHECK:STDOUT: %self.loc15: %.2 = bind_name self, %param.loc15 +// CHECK:STDOUT: %self.param.loc15: %.2 = param runtime_param0 +// CHECK:STDOUT: %self.loc15: %.2 = bind_name self, %self.param.loc15 +// CHECK:STDOUT: %return.param.loc15: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -120,28 +126,34 @@ class Class { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc5: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_25.1: type = value_of_initializer %int.make_type_32.loc5 [template = i32] // CHECK:STDOUT: %.loc5_25.2: type = converted %int.make_type_32.loc5, %.loc5_25.1 [template = i32] -// CHECK:STDOUT: %return.var.loc5: ref i32 = var -// CHECK:STDOUT: %param.loc5: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc5: %Class = bind_name self, %param.loc5 +// CHECK:STDOUT: %self.param.loc5: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc5: %Class = bind_name self, %self.param.loc5 +// CHECK:STDOUT: %return.param.loc5: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc5_22: ref i32 = return_slot %return.param.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %.2 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %.2 = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc15_12: auto = addr_pattern %self.param_patt +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %.loc6_23: type = ptr_type %Class [template = constants.%.2] // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_31.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] // CHECK:STDOUT: %.loc6_31.2: type = converted %int.make_type_32.loc6, %.loc6_31.1 [template = i32] -// CHECK:STDOUT: %return.var.loc6: ref i32 = var -// CHECK:STDOUT: %param.loc6: %.2 = param runtime_param0 -// CHECK:STDOUT: %self.loc6: %.2 = bind_name self, %param.loc6 +// CHECK:STDOUT: %self.param.loc6: %.2 = param runtime_param0 +// CHECK:STDOUT: %self.loc6: %.2 = bind_name self, %self.param.loc6 +// CHECK:STDOUT: %return.param.loc6: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc6_28: ref i32 = return_slot %return.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_10.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -217,12 +229,12 @@ class Class { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.2) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.6)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.2) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.6)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -258,6 +270,8 @@ class Class { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self @@ -265,9 +279,10 @@ class Class { // CHECK:STDOUT: %.loc18_25.1: %.4 = specific_constant imports.%import_ref.3, @ImplicitAs(type) [template = constants.%.5] // CHECK:STDOUT: %Convert.ref: %.4 = name_ref Convert, %.loc18_25.1 [template = constants.%.5] // CHECK:STDOUT: %.loc18_25.2: type = converted %self.ref, [template = ] -// CHECK:STDOUT: %return: ref = var -// CHECK:STDOUT: %param: %Class = param runtime_param0 -// CHECK:STDOUT: %self: %Class = bind_name self, %param +// CHECK:STDOUT: %self.param: %Class = param runtime_param0 +// CHECK:STDOUT: %self: %Class = bind_name self, %self.param +// CHECK:STDOUT: %return.param: = param runtime_param1 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = complete_type_witness %.7 [template = constants.%.8] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self_conversion.carbon b/toolchain/check/testdata/class/self_conversion.carbon index ed3ef5825751..92ae04335a8a 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -72,7 +72,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -88,14 +88,17 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %SelfBase.decl: %SelfBase.type = fn_decl @SelfBase [template = constants.%SelfBase] { // CHECK:STDOUT: %self.patt: %Base = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Base = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Base.ref.loc22: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %int.make_type_32.loc22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc22_38.1: type = value_of_initializer %int.make_type_32.loc22 [template = i32] // CHECK:STDOUT: %.loc22_38.2: type = converted %int.make_type_32.loc22, %.loc22_38.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc22: %Base = param runtime_param0 -// CHECK:STDOUT: %self.loc22: %Base = bind_name self, %param.loc22 +// CHECK:STDOUT: %self.param.loc22: %Base = param runtime_param0 +// CHECK:STDOUT: %self.loc22: %Base = bind_name self, %self.param.loc22 +// CHECK:STDOUT: %return.param.loc22: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [template = constants.%AddrSelfBase] { // CHECK:STDOUT: %self.patt: %.7 = binding_pattern self @@ -104,21 +107,24 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %Base.ref.loc26: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc26_40: type = ptr_type %Base [template = constants.%.7] -// CHECK:STDOUT: %param.loc26: %.7 = param runtime_param0 -// CHECK:STDOUT: %self.loc26: %.7 = bind_name self, %param.loc26 +// CHECK:STDOUT: %self.param.loc26: %.7 = param runtime_param0 +// CHECK:STDOUT: %self.loc26: %.7 = bind_name self, %self.param.loc26 // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { // CHECK:STDOUT: %p.patt: %.11 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.11 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %.loc30_19: type = ptr_type %Derived [template = constants.%.11] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc30_25.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc30_25.2: type = converted %int.make_type_32, %.loc30_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.11 = param runtime_param0 -// CHECK:STDOUT: %p: %.11 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.11 = param runtime_param0 +// CHECK:STDOUT: %p: %.11 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -140,14 +146,17 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %SelfBase.decl: %SelfBase.type = fn_decl @SelfBase [template = constants.%SelfBase] { // CHECK:STDOUT: %self.patt: %Base = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Base = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Base.ref.loc18: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %int.make_type_32.loc18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_32.1: type = value_of_initializer %int.make_type_32.loc18 [template = i32] // CHECK:STDOUT: %.loc18_32.2: type = converted %int.make_type_32.loc18, %.loc18_32.1 [template = i32] -// CHECK:STDOUT: %return.var.loc18: ref i32 = var -// CHECK:STDOUT: %param.loc18: %Base = param runtime_param0 -// CHECK:STDOUT: %self.loc18: %Base = bind_name self, %param.loc18 +// CHECK:STDOUT: %self.param.loc18: %Base = param runtime_param0 +// CHECK:STDOUT: %self.loc18: %Base = bind_name self, %self.param.loc18 +// CHECK:STDOUT: %return.param.loc18: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc18_29: ref i32 = return_slot %return.param.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [template = constants.%AddrSelfBase] { // CHECK:STDOUT: %self.patt: %.7 = binding_pattern self @@ -156,8 +165,8 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %Base.ref.loc19: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc19: type = ptr_type %Base [template = constants.%.7] -// CHECK:STDOUT: %param.loc19: %.7 = param runtime_param0 -// CHECK:STDOUT: %self.loc19: %.7 = bind_name self, %param.loc19 +// CHECK:STDOUT: %self.param.loc19: %.7 = param runtime_param0 +// CHECK:STDOUT: %self.loc19: %.7 = bind_name self, %self.param.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc20: = complete_type_witness %.8 [template = constants.%.9] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index fc8b2b463c05..7b7898db0fa3 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -52,7 +52,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -65,14 +65,17 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc21: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_29.1: type = value_of_initializer %int.make_type_32.loc21 [template = i32] // CHECK:STDOUT: %.loc21_29.2: type = converted %int.make_type_32.loc21, %.loc21_29.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc21: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc21: %Class = bind_name self, %param.loc21 +// CHECK:STDOUT: %self.param.loc21: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc21: %Class = bind_name self, %self.param.loc21 +// CHECK:STDOUT: %return.param.loc21: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -80,18 +83,25 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc12: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_25.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] // CHECK:STDOUT: %.loc12_25.2: type = converted %int.make_type_32.loc12, %.loc12_25.1 [template = i32] -// CHECK:STDOUT: %return.var.loc12: ref i32 = var -// CHECK:STDOUT: %param.loc12: %Class = param runtime_param0 -// CHECK:STDOUT: %self.loc12: %Class = bind_name self, %param.loc12 +// CHECK:STDOUT: %self.param.loc12: %Class = param runtime_param0 +// CHECK:STDOUT: %self.loc12: %Class = bind_name self, %self.param.loc12 +// CHECK:STDOUT: %return.param.loc12: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc12_22: ref i32 = return_slot %return.param.loc12 // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {} { +// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { +// CHECK:STDOUT: %return.patt: %Class = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %return: ref %Class = var +// CHECK:STDOUT: %return.param: %Class = param runtime_param0 +// CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %.loc18_14: type = ptr_type %Class [template = constants.%.2] diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 13f53c875bf7..bf4eaa346c25 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -45,7 +45,7 @@ fn Run() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,20 +56,28 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} { +// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_13.2: type = converted %int.make_type_32, %.loc15_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_13.2: type = converted %int.make_type_32, %.loc12_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/syntactic_merge_literal.carbon b/toolchain/check/testdata/class/syntactic_merge_literal.carbon index aed712deb0cb..daf4b97456c6 100644 --- a/toolchain/check/testdata/class/syntactic_merge_literal.carbon +++ b/toolchain/check/testdata/class/syntactic_merge_literal.carbon @@ -63,7 +63,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -80,8 +80,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc2_13.2: type = converted %int.make_type_32, %.loc2_13.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %a.loc2_9.1: i32 = bind_symbolic_name a, 0, %param [symbolic = %a.loc2_9.2 (constants.%a)] +// CHECK:STDOUT: %a.param: i32 = param runtime_param +// CHECK:STDOUT: %a.loc2_9.1: i32 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc2_9.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl.loc3: %D.type = class_decl @D [template = constants.%D.1] { // CHECK:STDOUT: %b.patt.loc4: %C.3 = symbolic_binding_pattern b, 0 [symbolic = constants.%b.patt.2] @@ -90,8 +90,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %C.ref.loc3: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc3: i32 = int_literal 1000 [template = constants.%.4] // CHECK:STDOUT: %C.loc3: type = class_type @C, @C(constants.%.4) [template = constants.%C.3] -// CHECK:STDOUT: %param.loc3: %C.3 = param runtime_param -// CHECK:STDOUT: %b.loc3_9.1: %C.3 = bind_symbolic_name b, 0, %param.loc3 [symbolic = %b.loc3_9.2 (constants.%b)] +// CHECK:STDOUT: %b.param.loc3: %C.3 = param runtime_param +// CHECK:STDOUT: %b.loc3_9.1: %C.3 = bind_symbolic_name b, 0, %b.param.loc3 [symbolic = %b.loc3_9.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl.loc4: %D.type = class_decl @D [template = constants.%D.1] { // CHECK:STDOUT: %b.patt.loc4: %C.3 = symbolic_binding_pattern b, 0 [symbolic = constants.%b.patt.2] @@ -100,8 +100,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %C.ref.loc4: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc4_15: i32 = int_literal 1000 [template = constants.%.4] // CHECK:STDOUT: %C.loc4: type = class_type @C, @C(constants.%.4) [template = constants.%C.3] -// CHECK:STDOUT: %param.loc4: %C.3 = param runtime_param -// CHECK:STDOUT: %b.loc4: %C.3 = bind_symbolic_name b, 0, %param.loc4 [symbolic = constants.%b] +// CHECK:STDOUT: %b.param.loc4: %C.3 = param runtime_param +// CHECK:STDOUT: %b.loc4: %C.3 = bind_symbolic_name b, 0, %b.param.loc4 [symbolic = constants.%b] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -188,7 +188,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -205,8 +205,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc2_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc2_13.2: type = converted %int.make_type_32, %.loc2_13.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %a.loc2_9.1: i32 = bind_symbolic_name a, 0, %param [symbolic = %a.loc2_9.2 (constants.%a)] +// CHECK:STDOUT: %a.param: i32 = param runtime_param +// CHECK:STDOUT: %a.loc2_9.1: i32 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc2_9.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = class_decl @D [template = constants.%D.1] { // CHECK:STDOUT: %b.patt.loc3_9.1: %C.3 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc3_9.2 (constants.%b.patt.1)] @@ -215,8 +215,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc3: i32 = int_literal 1000 [template = constants.%.4] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%.4) [template = constants.%C.3] -// CHECK:STDOUT: %param: %C.3 = param runtime_param -// CHECK:STDOUT: %b.loc3_9.1: %C.3 = bind_symbolic_name b, 0, %param [symbolic = %b.loc3_9.2 (constants.%b)] +// CHECK:STDOUT: %b.param: %C.3 = param runtime_param +// CHECK:STDOUT: %b.loc3_9.1: %C.3 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc3_9.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.5] { // CHECK:STDOUT: %b.patt.loc10_9.1: %C.3 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc10_9.2 (constants.%b.patt.2)] @@ -225,8 +225,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc10_15: i32 = int_literal 1000 [template = constants.%.4] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%.4) [template = constants.%C.3] -// CHECK:STDOUT: %param: %C.3 = param runtime_param -// CHECK:STDOUT: %b.loc10_9.1: %C.3 = bind_symbolic_name b, 0, %param [symbolic = %b.loc10_9.2 (constants.%b)] +// CHECK:STDOUT: %b.param: %C.3 = param runtime_param +// CHECK:STDOUT: %b.loc10_9.1: %C.3 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc10_9.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/todo_access_modifiers.carbon b/toolchain/check/testdata/class/todo_access_modifiers.carbon index a2adca7d307f..dc47efd098f7 100644 --- a/toolchain/check/testdata/class/todo_access_modifiers.carbon +++ b/toolchain/check/testdata/class/todo_access_modifiers.carbon @@ -47,7 +47,7 @@ class Access { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/const/basic.carbon b/toolchain/check/testdata/const/basic.carbon index c3eb5de384f9..d8c91071f306 100644 --- a/toolchain/check/testdata/const/basic.carbon +++ b/toolchain/check/testdata/const/basic.carbon @@ -45,7 +45,7 @@ fn B(p: const (i32*)) -> const (i32*) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,6 +58,8 @@ fn B(p: const (i32*)) -> const (i32*) { // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32.loc11_15 [template = i32] @@ -71,13 +73,16 @@ fn B(p: const (i32*)) -> const (i32*) { // CHECK:STDOUT: %.loc11_25.3: type = const_type i32 [template = constants.%.2] // CHECK:STDOUT: %.loc11_34: type = ptr_type %.2 [template = constants.%.3] // CHECK:STDOUT: %.loc11_35: type = ptr_type %.3 [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %p.patt: %.6 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.6 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.6 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc15_16: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_19.1: type = value_of_initializer %int.make_type_32.loc15_16 [template = i32] @@ -89,9 +94,10 @@ fn B(p: const (i32*)) -> const (i32*) { // CHECK:STDOUT: %.loc15_36.2: type = converted %int.make_type_32.loc15_33, %.loc15_36.1 [template = i32] // CHECK:STDOUT: %.loc15_36.3: type = ptr_type i32 [template = constants.%.5] // CHECK:STDOUT: %.loc15_26: type = const_type %.5 [template = constants.%.6] -// CHECK:STDOUT: %return: ref %.6 = var -// CHECK:STDOUT: %param: %.6 = param runtime_param0 -// CHECK:STDOUT: %p: %.6 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %p: %.6 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.6 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/collapse.carbon b/toolchain/check/testdata/const/collapse.carbon index 9ffaa5bdbb2f..f4693d82a744 100644 --- a/toolchain/check/testdata/const/collapse.carbon +++ b/toolchain/check/testdata/const/collapse.carbon @@ -41,7 +41,7 @@ fn F(p: const i32**) -> const (const i32)** { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -53,6 +53,8 @@ fn F(p: const i32**) -> const (const i32)** { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc15_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_9.1: type = value_of_initializer %int.make_type_32.loc15_15 [template = i32] @@ -67,9 +69,10 @@ fn F(p: const i32**) -> const (const i32)** { // CHECK:STDOUT: %.loc15_25: type = const_type %.2 [template = constants.%.2] // CHECK:STDOUT: %.loc15_42: type = ptr_type %.2 [template = constants.%.3] // CHECK:STDOUT: %.loc15_43: type = ptr_type %.3 [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/fail_collapse.carbon b/toolchain/check/testdata/const/fail_collapse.carbon index 2db778dbd413..78118fe9f7aa 100644 --- a/toolchain/check/testdata/const/fail_collapse.carbon +++ b/toolchain/check/testdata/const/fail_collapse.carbon @@ -67,13 +67,13 @@ fn G(p: const (const i32)**) -> i32** { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.7) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.11)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.7) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.11)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,6 +85,8 @@ fn G(p: const (const i32)**) -> i32** { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.6 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc15_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_16.1: type = value_of_initializer %int.make_type_32.loc15_22 [template = i32] @@ -98,9 +100,10 @@ fn G(p: const (const i32)**) -> i32** { // CHECK:STDOUT: %.loc15_36.2: type = converted %int.make_type_32.loc15_33, %.loc15_36.1 [template = i32] // CHECK:STDOUT: %.loc15_36.3: type = ptr_type i32 [template = constants.%.5] // CHECK:STDOUT: %.loc15_37: type = ptr_type %.5 [template = constants.%.6] -// CHECK:STDOUT: %return: ref %.6 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.6 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/import.carbon b/toolchain/check/testdata/const/import.carbon index c7b18b2a37f2..27d0c3c2d294 100644 --- a/toolchain/check/testdata/const/import.carbon +++ b/toolchain/check/testdata/const/import.carbon @@ -50,7 +50,7 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,12 +61,16 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: .a_ptr_ref = %a_ptr_ref // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_11.2: type = converted %int.make_type_32, %.loc4_11.1 [template = i32] // CHECK:STDOUT: %.loc4_11.3: type = const_type i32 [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var +// CHECK:STDOUT: %return.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_12.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] @@ -109,9 +113,9 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+15, unloaded -// CHECK:STDOUT: %import_ref.2: ref %.2 = import_ref Implicit//default, inst+23, loaded -// CHECK:STDOUT: %import_ref.3: ref %.3 = import_ref Implicit//default, inst+34, loaded +// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+18, unloaded +// CHECK:STDOUT: %import_ref.2: ref %.2 = import_ref Implicit//default, inst+26, loaded +// CHECK:STDOUT: %import_ref.3: ref %.3 = import_ref Implicit//default, inst+37, loaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.4 // CHECK:STDOUT: import Core//prelude @@ -123,7 +127,7 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.4: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index d7a468f25f70..d7055b07fca8 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -152,20 +152,27 @@ fn G() -> C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %a.patt: @F.%.loc6_24.2 (%.4) = binding_pattern a // CHECK:STDOUT: %a.param_patt: @F.%.loc6_24.2 (%.4) = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_20: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %.loc6_23: i32 = int_literal 3 [template = constants.%.3] // CHECK:STDOUT: %.loc6_24.1: type = array_type %.loc6_23, %T [symbolic = %.loc6_24.2 (constants.%.4)] // CHECK:STDOUT: %T.ref.loc6_30: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = var -// CHECK:STDOUT: %param.loc6_7: type = param runtime_param -// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %param.loc6_7 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_17: @F.%.loc6_24.2 (%.4) = param runtime_param0 -// CHECK:STDOUT: %a: @F.%.loc6_24.2 (%.4) = bind_name a, %param.loc6_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] +// CHECK:STDOUT: %a.param: @F.%.loc6_24.2 (%.4) = param runtime_param0 +// CHECK:STDOUT: %a: @F.%.loc6_24.2 (%.4) = bind_name a, %a.param +// CHECK:STDOUT: %return.param: @F.%T.loc6_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -223,9 +230,9 @@ fn G() -> C { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %a.ref: ref %.9 = name_ref a, %a // CHECK:STDOUT: %.loc10_10: = specific_function %F.ref, @F(constants.%C) [template = constants.%.14] -// CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} +// CHECK:STDOUT: %.loc8_8.2: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc10_12: %.9 = bind_value %a.ref -// CHECK:STDOUT: %F.call: init %C = call %.loc10_10(%.loc10_12) to %.loc8 +// CHECK:STDOUT: %F.call: init %C = call %.loc10_10(%.loc10_12) to %.loc8_8.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -282,7 +289,7 @@ fn G() -> C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -299,6 +306,8 @@ fn G() -> C { // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc10_6.1, runtime_param [symbolic = %N.patt.loc10_6.2 (constants.%N.patt)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc10_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_10.1: type = value_of_initializer %int.make_type_32.loc10_10 [template = i32] @@ -309,15 +318,20 @@ fn G() -> C { // CHECK:STDOUT: %int.make_type_32.loc10_29: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_29.1: type = value_of_initializer %int.make_type_32.loc10_29 [template = i32] // CHECK:STDOUT: %.loc10_29.2: type = converted %int.make_type_32.loc10_29, %.loc10_29.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc10_7: i32 = param runtime_param -// CHECK:STDOUT: %N.loc10_6.1: i32 = bind_symbolic_name N, 0, %param.loc10_7 [symbolic = %N.loc10_6.2 (constants.%N)] -// CHECK:STDOUT: %param.loc10_16: = param runtime_param0 -// CHECK:STDOUT: %a: = bind_name a, %param.loc10_16 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc10_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc10_6.2 (constants.%N)] +// CHECK:STDOUT: %a.param: = param runtime_param0 +// CHECK:STDOUT: %a: = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc12: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -420,7 +434,7 @@ fn G() -> C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -439,6 +453,8 @@ fn G() -> C { // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc10_16.1, runtime_param [symbolic = %N.patt.loc10_16.2 (constants.%N.patt)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc10_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc10_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_20.1: type = value_of_initializer %int.make_type_32 [template = i32] @@ -447,17 +463,22 @@ fn G() -> C { // CHECK:STDOUT: %N.ref: i32 = name_ref N, %N.loc10_16.1 [symbolic = %N.loc10_16.2 (constants.%N)] // CHECK:STDOUT: %.loc10_33: type = array_type %N.ref, %T [template = ] // CHECK:STDOUT: %T.ref.loc10_39: type = name_ref T, %T.loc10_6.1 [symbolic = %T.loc10_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc10_6.2 (%T) = var -// CHECK:STDOUT: %param.loc10_7: type = param runtime_param -// CHECK:STDOUT: %T.loc10_6.1: type = bind_symbolic_name T, 0, %param.loc10_7 [symbolic = %T.loc10_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc10_17: i32 = param runtime_param -// CHECK:STDOUT: %N.loc10_16.1: i32 = bind_symbolic_name N, 1, %param.loc10_17 [symbolic = %N.loc10_16.2 (constants.%N)] -// CHECK:STDOUT: %param.loc10_26: = param runtime_param0 -// CHECK:STDOUT: %a: = bind_name a, %param.loc10_26 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc10_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_6.2 (constants.%T)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc10_16.1: i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc10_16.2 (constants.%N)] +// CHECK:STDOUT: %a.param: = param runtime_param0 +// CHECK:STDOUT: %a: = bind_name a, %a.param +// CHECK:STDOUT: %return.param: @F.%T.loc10_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc10_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc12: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -576,12 +597,12 @@ fn G() -> C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.17) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.21)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.17) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.21)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -598,20 +619,27 @@ fn G() -> C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %a.patt: @F.%.loc6_24.2 (%.4) = binding_pattern a // CHECK:STDOUT: %a.param_patt: @F.%.loc6_24.2 (%.4) = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_20: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %.loc6_23: i32 = int_literal 2 [template = constants.%.3] // CHECK:STDOUT: %.loc6_24.1: type = array_type %.loc6_23, %T [symbolic = %.loc6_24.2 (constants.%.4)] // CHECK:STDOUT: %T.ref.loc6_30: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = var -// CHECK:STDOUT: %param.loc6_7: type = param runtime_param -// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %param.loc6_7 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_17: @F.%.loc6_24.2 (%.4) = param runtime_param0 -// CHECK:STDOUT: %a: @F.%.loc6_24.2 (%.4) = bind_name a, %param.loc6_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] +// CHECK:STDOUT: %a.param: @F.%.loc6_24.2 (%.4) = param runtime_param0 +// CHECK:STDOUT: %a: @F.%.loc6_24.2 (%.4) = bind_name a, %a.param +// CHECK:STDOUT: %return.param: @F.%T.loc6_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -794,7 +822,7 @@ fn G() -> C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -813,6 +841,8 @@ fn G() -> C { // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc10_6.1, runtime_param [symbolic = %N.patt.loc10_6.2 (constants.%N.patt)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc10_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_10.1: type = value_of_initializer %int.make_type_32.loc10_10 [template = i32] @@ -823,15 +853,20 @@ fn G() -> C { // CHECK:STDOUT: %int.make_type_32.loc10_29: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc10_29.1: type = value_of_initializer %int.make_type_32.loc10_29 [template = i32] // CHECK:STDOUT: %.loc10_29.2: type = converted %int.make_type_32.loc10_29, %.loc10_29.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc10_7: i32 = param runtime_param -// CHECK:STDOUT: %N.loc10_6.1: i32 = bind_symbolic_name N, 0, %param.loc10_7 [symbolic = %N.loc10_6.2 (constants.%N)] -// CHECK:STDOUT: %param.loc10_16: = param runtime_param0 -// CHECK:STDOUT: %a: = bind_name a, %param.loc10_16 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc10_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc10_6.2 (constants.%N)] +// CHECK:STDOUT: %a.param: = param runtime_param0 +// CHECK:STDOUT: %a: = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 7d58a6baa0de..bcbb3c89c518 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -114,8 +114,8 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { @@ -123,28 +123,34 @@ fn G() -> i32 { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %p.patt: @F.%C.loc7_20.2 (%C.2) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%C.loc7_20.2 (%C.2) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc7_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc7_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %T.ref.loc7_21: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %C.loc7_20.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc7_20.2 (constants.%C.2)] // CHECK:STDOUT: %T.ref.loc7_28: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc7_6.2 (%T) = var -// CHECK:STDOUT: %param.loc7_7: type = param runtime_param -// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %param.loc7_7 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc7_17: @F.%C.loc7_20.2 (%C.2) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%C.loc7_20.2 (%C.2) = bind_name p, %param.loc7_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%C.loc7_20.2 (%C.2) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%C.loc7_20.2 (%C.2) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%T.loc7_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc7_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %C.3 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %C.3 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %D = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %D.ref.loc9_11: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%D) [template = constants.%C.3] // CHECK:STDOUT: %D.ref.loc9_18: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %return: ref %D = var -// CHECK:STDOUT: %param: %C.3 = param runtime_param0 -// CHECK:STDOUT: %p: %C.3 = bind_name p, %param +// CHECK:STDOUT: %p.param: %C.3 = param runtime_param0 +// CHECK:STDOUT: %p: %C.3 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %D = param runtime_param1 +// CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -194,8 +200,8 @@ fn G() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: %C.3 = name_ref p, %p // CHECK:STDOUT: %.loc10: = specific_function %F.ref, @F(constants.%D) [template = constants.%.6] -// CHECK:STDOUT: %.loc9: ref %D = splice_block %return {} -// CHECK:STDOUT: %F.call: init %D = call %.loc10(%p.ref) to %.loc9 +// CHECK:STDOUT: %.loc9_15.2: ref %D = splice_block %return {} +// CHECK:STDOUT: %F.call: init %D = call %.loc10(%p.ref) to %.loc9_15.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -291,8 +297,8 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { @@ -300,28 +306,34 @@ fn G() -> i32 { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %p.patt: @F.%I.loc7_20.2 (%I.2) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%I.loc7_20.2 (%I.2) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %I.ref: %I.type = name_ref I, file.%I.decl [template = constants.%I.1] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %I.loc7_20.1: type = class_type @I, @I(constants.%T) [symbolic = %I.loc7_20.2 (constants.%I.2)] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc7_7: type = param runtime_param -// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %param.loc7_7 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc7_17: @F.%I.loc7_20.2 (%I.2) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%I.loc7_20.2 (%I.2) = bind_name p, %param.loc7_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%I.loc7_20.2 (%I.2) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%I.loc7_20.2 (%I.2) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %I.3 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %I.3 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %I.ref: %I.type = name_ref I, file.%I.decl [template = constants.%I.1] // CHECK:STDOUT: %C.ref.loc9_11: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %I: type = class_type @I, @I(constants.%C) [template = constants.%I.3] // CHECK:STDOUT: %C.ref.loc9_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %I.3 = param runtime_param0 -// CHECK:STDOUT: %p: %I.3 = bind_name p, %param +// CHECK:STDOUT: %p.param: %I.3 = param runtime_param0 +// CHECK:STDOUT: %p: %I.3 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -359,8 +371,8 @@ fn G() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: @F.%I.loc7_20.2 (%I.2) = name_ref p, %p // CHECK:STDOUT: %.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %.loc7_39.2 (constants.%.5)] -// CHECK:STDOUT: %.loc7_25: ref %C = splice_block %return {} -// CHECK:STDOUT: %F.call: init %C = call %.loc7_39.1(%p.ref) to %.loc7_25 +// CHECK:STDOUT: %.loc7_25.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %F.call: init %C = call %.loc7_39.1(%p.ref) to %.loc7_25.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -370,8 +382,8 @@ fn G() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: %I.3 = name_ref p, %p // CHECK:STDOUT: %.loc10: = specific_function %F.ref, @F(constants.%C) [template = constants.%.6] -// CHECK:STDOUT: %.loc9: ref %C = splice_block %return {} -// CHECK:STDOUT: %F.call: init %C = call %.loc10(%p.ref) to %.loc9 +// CHECK:STDOUT: %.loc9_15.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %F.call: init %C = call %.loc10(%p.ref) to %.loc9_15.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -484,8 +496,8 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} @@ -496,6 +508,8 @@ fn G() -> i32 { // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_16.1, runtime_param [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)] // CHECK:STDOUT: %p.patt: @F.%Inner.loc13_43.2 (%Inner.2) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%Inner.loc13_43.2 (%Inner.2) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%.loc13_56.3 (%.6) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%.loc13_56.3 (%.6) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.1] // CHECK:STDOUT: %T.ref.loc13_35: type = name_ref T, %T.loc13_6.1 [symbolic = %T.loc13_6.2 (constants.%T)] @@ -508,17 +522,20 @@ fn G() -> i32 { // CHECK:STDOUT: %U.ref.loc13_55: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)] // CHECK:STDOUT: %.loc13_56.1: %.5 = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) // CHECK:STDOUT: %.loc13_56.2: type = converted %.loc13_56.1, constants.%.6 [symbolic = %.loc13_56.3 (constants.%.6)] -// CHECK:STDOUT: %return: ref @F.%.loc13_56.3 (%.6) = var -// CHECK:STDOUT: %param.loc13_7: type = param runtime_param -// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %param.loc13_7 [symbolic = %T.loc13_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc13_17: type = param runtime_param -// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %param.loc13_17 [symbolic = %U.loc13_16.2 (constants.%U)] -// CHECK:STDOUT: %param.loc13_27: @F.%Inner.loc13_43.2 (%Inner.2) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%Inner.loc13_43.2 (%Inner.2) = bind_name p, %param.loc13_27 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc13_16.2 (constants.%U)] +// CHECK:STDOUT: %p.param: @F.%Inner.loc13_43.2 (%Inner.2) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%Inner.loc13_43.2 (%Inner.2) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%.loc13_56.3 (%.6) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%.loc13_56.3 (%.6) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %Inner.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %Inner.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.9 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.1] // CHECK:STDOUT: %C.ref.loc15_15: type = name_ref C, file.%C.decl [template = constants.%C] @@ -531,9 +548,10 @@ fn G() -> i32 { // CHECK:STDOUT: %D.ref.loc15_35: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %.loc15_36.1: %.5 = tuple_literal (%C.ref.loc15_32, %D.ref.loc15_35) // CHECK:STDOUT: %.loc15_36.2: type = converted %.loc15_36.1, constants.%.9 [template = constants.%.9] -// CHECK:STDOUT: %return: ref %.9 = var -// CHECK:STDOUT: %param: %Inner.4 = param runtime_param0 -// CHECK:STDOUT: %p: %Inner.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %Inner.4 = param runtime_param0 +// CHECK:STDOUT: %p: %Inner.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.9 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -550,8 +568,8 @@ fn G() -> i32 { // CHECK:STDOUT: %U.patt.loc5_15.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc5_15.2 (constants.%U.patt.1)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc5_15.1, runtime_param [symbolic = %U.patt.loc5_15.2 (constants.%U.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1, %param [symbolic = %U.loc5_15.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc5_15.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -630,8 +648,8 @@ fn G() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: %Inner.4 = name_ref p, %p // CHECK:STDOUT: %.loc16: = specific_function %F.ref, @F(constants.%C, constants.%D) [template = constants.%.12] -// CHECK:STDOUT: %.loc15_28: ref %.9 = splice_block %return {} -// CHECK:STDOUT: %F.call: init %.9 = call %.loc16(%p.ref) to %.loc15_28 +// CHECK:STDOUT: %.loc15_28.2: ref %.9 = splice_block %return {} +// CHECK:STDOUT: %F.call: init %.9 = call %.loc16(%p.ref) to %.loc15_28.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -761,7 +779,7 @@ fn G() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -779,14 +797,16 @@ fn G() -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_23.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_23.2: type = converted %int.make_type_32, %.loc4_23.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %param [symbolic = %N.loc4_19.2 (constants.%N)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_19.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %N.patt.loc6_6.1: i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.2)] // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc6_6.1, runtime_param [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.2)] // CHECK:STDOUT: %x.patt: @F.%WithNontype.loc6_29.2 (%WithNontype.2) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @F.%WithNontype.loc6_29.2 (%WithNontype.2) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_10.1: type = value_of_initializer %int.make_type_32.loc6_10 [template = i32] @@ -797,17 +817,22 @@ fn G() -> i32 { // CHECK:STDOUT: %int.make_type_32.loc6_37: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_37.1: type = value_of_initializer %int.make_type_32.loc6_37 [template = i32] // CHECK:STDOUT: %.loc6_37.2: type = converted %int.make_type_32.loc6_37, %.loc6_37.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc6_7: i32 = param runtime_param -// CHECK:STDOUT: %N.loc6_6.1: i32 = bind_symbolic_name N, 0, %param.loc6_7 [symbolic = %N.loc6_6.2 (constants.%N)] -// CHECK:STDOUT: %param.loc6_16: @F.%WithNontype.loc6_29.2 (%WithNontype.2) = param runtime_param0 -// CHECK:STDOUT: %x: @F.%WithNontype.loc6_29.2 (%WithNontype.2) = bind_name x, %param.loc6_16 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc6_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc6_6.2 (constants.%N)] +// CHECK:STDOUT: %x.param: @F.%WithNontype.loc6_29.2 (%WithNontype.2) = param runtime_param0 +// CHECK:STDOUT: %x: @F.%WithNontype.loc6_29.2 (%WithNontype.2) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_11.2: type = converted %int.make_type_32, %.loc8_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/int_float.carbon b/toolchain/check/testdata/deduce/int_float.carbon index 60deb00498eb..a66b3bfbf25b 100644 --- a/toolchain/check/testdata/deduce/int_float.carbon +++ b/toolchain/check/testdata/deduce/int_float.carbon @@ -69,8 +69,8 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+20, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+29, loaded [template = constants.%Int] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,6 +85,8 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc4_6.1, runtime_param [symbolic = %N.patt.loc4_6.2 (constants.%N.patt)] // CHECK:STDOUT: %n.patt: @F.%.loc4_26 (%.2) = binding_pattern n // CHECK:STDOUT: %n.param_patt: @F.%.loc4_26 (%.2) = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_10.1: type = value_of_initializer %int.make_type_32.loc4_10 [template = i32] @@ -98,15 +100,18 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc4_34: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_34.1: type = value_of_initializer %int.make_type_32.loc4_34 [template = i32] // CHECK:STDOUT: %.loc4_34.2: type = converted %int.make_type_32.loc4_34, %.loc4_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc4_7: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_6.1: i32 = bind_symbolic_name N, 0, %param.loc4_7 [symbolic = %N.loc4_6.2 (constants.%N)] -// CHECK:STDOUT: %param.loc4_16: @F.%.loc4_26 (%.2) = param runtime_param0 -// CHECK:STDOUT: %n: @F.%.loc4_26 (%.2) = bind_name n, %param.loc4_16 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_6.2 (constants.%N)] +// CHECK:STDOUT: %n.param: @F.%.loc4_26 (%.2) = param runtime_param0 +// CHECK:STDOUT: %n: @F.%.loc4_26 (%.2) = bind_name n, %n.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %a.patt: %.4 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %.4 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_9.1: i32 = int_literal 64 [template = constants.%.3] // CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%.loc8_9.1) [template = constants.%.4] @@ -115,9 +120,10 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_17.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_17.2: type = converted %int.make_type_32, %.loc8_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %a: %.4 = bind_name a, %param +// CHECK:STDOUT: %a.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %a: %.4 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -194,8 +200,8 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -210,6 +216,8 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: %N.param_patt: i32 = param_pattern %N.patt.loc8_6.1, runtime_param [symbolic = %N.patt.loc8_6.2 (constants.%N.patt)] // CHECK:STDOUT: %n.patt: = binding_pattern n // CHECK:STDOUT: %n.param_patt: = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc8_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_10.1: type = value_of_initializer %int.make_type_32.loc8_10 [template = i32] @@ -223,15 +231,18 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc8_36: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_36.1: type = value_of_initializer %int.make_type_32.loc8_36 [template = i32] // CHECK:STDOUT: %.loc8_36.2: type = converted %int.make_type_32.loc8_36, %.loc8_36.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc8_7: i32 = param runtime_param -// CHECK:STDOUT: %N.loc8_6.1: i32 = bind_symbolic_name N, 0, %param.loc8_7 [symbolic = %N.loc8_6.2 (constants.%N)] -// CHECK:STDOUT: %param.loc8_16: = param runtime_param0 -// CHECK:STDOUT: %n: = bind_name n, %param.loc8_16 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc8_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc8_6.2 (constants.%N)] +// CHECK:STDOUT: %n.param: = param runtime_param0 +// CHECK:STDOUT: %n: = bind_name n, %n.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %a.patt: f64 = binding_pattern a // CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_9.1: i32 = int_literal 64 [template = constants.%.2] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc12_9.1) [template = f64] @@ -240,9 +251,10 @@ fn G(a: f64) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_17.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_17.2: type = converted %int.make_type_32, %.loc12_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: f64 = param runtime_param0 -// CHECK:STDOUT: %a: f64 = bind_name a, %param +// CHECK:STDOUT: %a.param: f64 = param runtime_param0 +// CHECK:STDOUT: %a: f64 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index d76213120bf4..737a7f2497b3 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -110,32 +110,38 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc7_16.1, runtime_param [symbolic = %U.patt.loc7_16.2 (constants.%U.patt)] // CHECK:STDOUT: %pair.patt: @F.%.loc7_37.3 (%.4) = binding_pattern pair // CHECK:STDOUT: %pair.param_patt: @F.%.loc7_37.3 (%.4) = param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%U.loc7_16.2 (%U) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%U.loc7_16.2 (%U) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %U.ref.loc7_36: type = name_ref U, %U.loc7_16.1 [symbolic = %U.loc7_16.2 (constants.%U)] // CHECK:STDOUT: %.loc7_37.1: %.3 = tuple_literal (%T.ref, %U.ref.loc7_36) // CHECK:STDOUT: %.loc7_37.2: type = converted %.loc7_37.1, constants.%.4 [symbolic = %.loc7_37.3 (constants.%.4)] // CHECK:STDOUT: %U.ref.loc7_43: type = name_ref U, %U.loc7_16.1 [symbolic = %U.loc7_16.2 (constants.%U)] -// CHECK:STDOUT: %return: ref @F.%U.loc7_16.2 (%U) = var -// CHECK:STDOUT: %param.loc7_7: type = param runtime_param -// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %param.loc7_7 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc7_17: type = param runtime_param -// CHECK:STDOUT: %U.loc7_16.1: type = bind_symbolic_name U, 1, %param.loc7_17 [symbolic = %U.loc7_16.2 (constants.%U)] -// CHECK:STDOUT: %param.loc7_30: @F.%.loc7_37.3 (%.4) = param runtime_param0 -// CHECK:STDOUT: %pair: @F.%.loc7_37.3 (%.4) = bind_name pair, %param.loc7_30 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc7_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc7_16.2 (constants.%U)] +// CHECK:STDOUT: %pair.param: @F.%.loc7_37.3 (%.4) = param runtime_param0 +// CHECK:STDOUT: %pair: @F.%.loc7_37.3 (%.4) = bind_name pair, %pair.param +// CHECK:STDOUT: %return.param: @F.%U.loc7_16.2 (%U) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%U.loc7_16.2 (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %pair.patt: %.8 = binding_pattern pair // CHECK:STDOUT: %pair.param_patt: %.8 = param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %D = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref.loc9_16: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %.loc9_17.1: %.3 = tuple_literal (%C.ref, %D.ref.loc9_16) // CHECK:STDOUT: %.loc9_17.2: type = converted %.loc9_17.1, constants.%.8 [template = constants.%.8] // CHECK:STDOUT: %D.ref.loc9_23: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %return: ref %D = var -// CHECK:STDOUT: %param: %.8 = param runtime_param0 -// CHECK:STDOUT: %pair: %.8 = bind_name pair, %param +// CHECK:STDOUT: %pair.param: %.8 = param runtime_param0 +// CHECK:STDOUT: %pair: %.8 = bind_name pair, %pair.param +// CHECK:STDOUT: %return.param: %D = param runtime_param1 +// CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -180,8 +186,8 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %pair.ref: %.8 = name_ref pair, %pair // CHECK:STDOUT: %.loc10: = specific_function %F.ref, @F(constants.%C, constants.%D) [template = constants.%.12] -// CHECK:STDOUT: %.loc9_20: ref %D = splice_block %return {} -// CHECK:STDOUT: %F.call: init %D = call %.loc10(%pair.ref) to %.loc9_20 +// CHECK:STDOUT: %.loc9_20.2: ref %D = splice_block %return {} +// CHECK:STDOUT: %F.call: init %D = call %.loc10(%pair.ref) to %.loc9_20.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -261,7 +267,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -284,8 +290,8 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %.loc4_31.4: type = value_of_initializer %int.make_type_32.loc4_28 [template = i32] // CHECK:STDOUT: %.loc4_31.5: type = converted %int.make_type_32.loc4_28, %.loc4_31.4 [template = i32] // CHECK:STDOUT: %.loc4_31.6: type = converted %.loc4_31.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param -// CHECK:STDOUT: %Pair.loc4_15.1: %.3 = bind_symbolic_name Pair, 0, %param [symbolic = %Pair.loc4_15.2 (constants.%Pair)] +// CHECK:STDOUT: %Pair.param: %.3 = param runtime_param +// CHECK:STDOUT: %Pair.loc4_15.1: %.3 = bind_symbolic_name Pair, 0, %Pair.param [symbolic = %Pair.loc4_15.2 (constants.%Pair)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %A.patt.loc6_6.1: i32 = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc6_6.2 (constants.%A.patt)] @@ -294,6 +300,8 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %B.param_patt: i32 = param_pattern %B.patt.loc6_15.1, runtime_param [symbolic = %B.patt.loc6_15.2 (constants.%B.patt)] // CHECK:STDOUT: %h.patt: @F.%HasPair.loc6_34.2 (%HasPair.3) = binding_pattern h // CHECK:STDOUT: %h.param_patt: @F.%HasPair.loc6_34.2 (%HasPair.3) = param_pattern %h.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_10.1: type = value_of_initializer %int.make_type_32.loc6_10 [template = i32] @@ -311,17 +319,20 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %int.make_type_32.loc6_47: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_47.1: type = value_of_initializer %int.make_type_32.loc6_47 [template = i32] // CHECK:STDOUT: %.loc6_47.2: type = converted %int.make_type_32.loc6_47, %.loc6_47.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc6_7: i32 = param runtime_param -// CHECK:STDOUT: %A.loc6_6.1: i32 = bind_symbolic_name A, 0, %param.loc6_7 [symbolic = %A.loc6_6.2 (constants.%A)] -// CHECK:STDOUT: %param.loc6_16: i32 = param runtime_param -// CHECK:STDOUT: %B.loc6_15.1: i32 = bind_symbolic_name B, 1, %param.loc6_16 [symbolic = %B.loc6_15.2 (constants.%B)] -// CHECK:STDOUT: %param.loc6_25: @F.%HasPair.loc6_34.2 (%HasPair.3) = param runtime_param0 -// CHECK:STDOUT: %h: @F.%HasPair.loc6_34.2 (%HasPair.3) = bind_name h, %param.loc6_25 +// CHECK:STDOUT: %A.param: i32 = param runtime_param +// CHECK:STDOUT: %A.loc6_6.1: i32 = bind_symbolic_name A, 0, %A.param [symbolic = %A.loc6_6.2 (constants.%A)] +// CHECK:STDOUT: %B.param: i32 = param runtime_param +// CHECK:STDOUT: %B.loc6_15.1: i32 = bind_symbolic_name B, 1, %B.param [symbolic = %B.loc6_15.2 (constants.%B)] +// CHECK:STDOUT: %h.param: @F.%HasPair.loc6_34.2 (%HasPair.3) = param runtime_param0 +// CHECK:STDOUT: %h: @F.%HasPair.loc6_34.2 (%HasPair.3) = bind_name h, %h.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %h.patt: %HasPair.4 = binding_pattern h // CHECK:STDOUT: %h.param_patt: %HasPair.4 = param_pattern %h.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [template = constants.%HasPair.1] // CHECK:STDOUT: %.loc8_18: i32 = int_literal 1 [template = constants.%.8] @@ -333,9 +344,10 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_29.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_29.2: type = converted %int.make_type_32, %.loc8_29.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %HasPair.4 = param runtime_param0 -// CHECK:STDOUT: %h: %HasPair.4 = bind_name h, %param +// CHECK:STDOUT: %h.param: %HasPair.4 = param runtime_param0 +// CHECK:STDOUT: %h: %HasPair.4 = bind_name h, %h.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -478,30 +490,36 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] // CHECK:STDOUT: %pair.patt: @F.%.loc7_27.3 (%.4) = binding_pattern pair // CHECK:STDOUT: %pair.param_patt: @F.%.loc7_27.3 (%.4) = param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc7_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc7_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc7_23: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc7_26: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %.loc7_27.1: %.3 = tuple_literal (%T.ref.loc7_23, %T.ref.loc7_26) // CHECK:STDOUT: %.loc7_27.2: type = converted %.loc7_27.1, constants.%.4 [symbolic = %.loc7_27.3 (constants.%.4)] // CHECK:STDOUT: %T.ref.loc7_33: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc7_6.2 (%T) = var -// CHECK:STDOUT: %param.loc7_7: type = param runtime_param -// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %param.loc7_7 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc7_20: @F.%.loc7_27.3 (%.4) = param runtime_param0 -// CHECK:STDOUT: %pair: @F.%.loc7_27.3 (%.4) = bind_name pair, %param.loc7_20 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] +// CHECK:STDOUT: %pair.param: @F.%.loc7_27.3 (%.4) = param runtime_param0 +// CHECK:STDOUT: %pair: @F.%.loc7_27.3 (%.4) = bind_name pair, %pair.param +// CHECK:STDOUT: %return.param: @F.%T.loc7_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc7_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %pair.patt: %.6 = binding_pattern pair // CHECK:STDOUT: %pair.param_patt: %.6 = param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %D = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref.loc9_16: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %.loc9_17.1: %.3 = tuple_literal (%C.ref, %D.ref.loc9_16) // CHECK:STDOUT: %.loc9_17.2: type = converted %.loc9_17.1, constants.%.6 [template = constants.%.6] // CHECK:STDOUT: %D.ref.loc9_23: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %return: ref %D = var -// CHECK:STDOUT: %param: %.6 = param runtime_param0 -// CHECK:STDOUT: %pair: %.6 = bind_name pair, %param +// CHECK:STDOUT: %pair.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %pair: %.6 = bind_name pair, %pair.param +// CHECK:STDOUT: %return.param: %D = param runtime_param1 +// CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index b3429174b463..eb160887f530 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -109,26 +109,32 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %p.patt: @F.%.loc6_20.2 (%.3) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%.loc6_20.2 (%.3) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_19: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %.loc6_20.1: type = ptr_type %T [symbolic = %.loc6_20.2 (constants.%.3)] // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = var -// CHECK:STDOUT: %param.loc6_7: type = param runtime_param -// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %param.loc6_7 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_17: @F.%.loc6_20.2 (%.3) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%.loc6_20.2 (%.3) = bind_name p, %param.loc6_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%.loc6_20.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%.loc6_20.2 (%.3) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%T.loc6_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %.6 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.6 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_9: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc8_10: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc8_16: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %.6 = param runtime_param0 -// CHECK:STDOUT: %p: %.6 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %p: %.6 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,8 +170,8 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: %.6 = name_ref p, %p // CHECK:STDOUT: %.loc9: = specific_function %F.ref, @F(constants.%C) [template = constants.%.8] -// CHECK:STDOUT: %.loc8_13: ref %C = splice_block %return {} -// CHECK:STDOUT: %F.call: init %C = call %.loc9(%p.ref) to %.loc8_13 +// CHECK:STDOUT: %.loc8_13.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %F.call: init %C = call %.loc9(%p.ref) to %.loc8_13.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -242,28 +248,34 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %p.patt: @F.%.loc6_26.2 (%.4) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%.loc6_26.2 (%.4) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_25: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %.loc6_19.1: type = const_type %T [symbolic = %.loc6_19.2 (constants.%.3)] // CHECK:STDOUT: %.loc6_26.1: type = ptr_type %.3 [symbolic = %.loc6_26.2 (constants.%.4)] // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = var -// CHECK:STDOUT: %param.loc6_7: type = param runtime_param -// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %param.loc6_7 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_17: @F.%.loc6_26.2 (%.4) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%.loc6_26.2 (%.4) = bind_name p, %param.loc6_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%.loc6_26.2 (%.4) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%.loc6_26.2 (%.4) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%T.loc6_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %.8 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.8 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc8_9: type = const_type %C [template = constants.%.7] // CHECK:STDOUT: %.loc8_16: type = ptr_type %.7 [template = constants.%.8] // CHECK:STDOUT: %C.ref.loc8_22: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %.8 = param runtime_param0 -// CHECK:STDOUT: %p: %.8 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.8 = param runtime_param0 +// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -300,8 +312,8 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: %.8 = name_ref p, %p // CHECK:STDOUT: %.loc9: = specific_function %F.ref, @F(constants.%C) [template = constants.%.10] -// CHECK:STDOUT: %.loc8_19: ref %C = splice_block %return {} -// CHECK:STDOUT: %F.call: init %C = call %.loc9(%p.ref) to %.loc8_19 +// CHECK:STDOUT: %.loc8_19.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %F.call: init %C = call %.loc9(%p.ref) to %.loc8_19.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -380,28 +392,34 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %p.patt: @F.%.loc6_20.2 (%.3) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%.loc6_20.2 (%.3) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_19: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %.loc6_20.1: type = ptr_type %T [symbolic = %.loc6_20.2 (constants.%.3)] // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = var -// CHECK:STDOUT: %param.loc6_7: type = param runtime_param -// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %param.loc6_7 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_17: @F.%.loc6_20.2 (%.3) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%.loc6_20.2 (%.3) = bind_name p, %param.loc6_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%.loc6_20.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%.loc6_20.2 (%.3) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%T.loc6_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %.7 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.7 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.6 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc8_9: type = const_type %C [template = constants.%.6] // CHECK:STDOUT: %.loc8_16: type = ptr_type %.6 [template = constants.%.7] // CHECK:STDOUT: %C.ref.loc8_28: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc8_22: type = const_type %C [template = constants.%.6] -// CHECK:STDOUT: %return: ref %.6 = var -// CHECK:STDOUT: %param: %.7 = param runtime_param0 -// CHECK:STDOUT: %p: %.7 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %p: %.7 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.6 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -437,8 +455,8 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %p.ref: %.7 = name_ref p, %p // CHECK:STDOUT: %.loc9: = specific_function %F.ref, @F(constants.%.6) [template = constants.%.9] -// CHECK:STDOUT: %.loc8_19: ref %.6 = splice_block %return {} -// CHECK:STDOUT: %F.call: init %.6 = call %.loc9(%p.ref) to %.loc8_19 +// CHECK:STDOUT: %.loc8_19.2: ref %.6 = splice_block %return {} +// CHECK:STDOUT: %F.call: init %.6 = call %.loc9(%p.ref) to %.loc8_19.2 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -514,28 +532,34 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %p.patt: @F.%.loc6_26.2 (%.4) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%.loc6_26.2 (%.4) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_25: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %.loc6_19.1: type = const_type %T [symbolic = %.loc6_19.2 (constants.%.3)] // CHECK:STDOUT: %.loc6_26.1: type = ptr_type %.3 [symbolic = %.loc6_26.2 (constants.%.4)] // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = var -// CHECK:STDOUT: %param.loc6_7: type = param runtime_param -// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %param.loc6_7 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_17: @F.%.loc6_26.2 (%.4) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%.loc6_26.2 (%.4) = bind_name p, %param.loc6_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%.loc6_26.2 (%.4) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%.loc6_26.2 (%.4) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%T.loc6_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %p.patt: %.7 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.7 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.8 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_9: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc8_10: type = ptr_type %C [template = constants.%.7] // CHECK:STDOUT: %C.ref.loc8_22: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc8_16: type = const_type %C [template = constants.%.8] -// CHECK:STDOUT: %return: ref %.8 = var -// CHECK:STDOUT: %param: %.7 = param runtime_param0 -// CHECK:STDOUT: %p: %.7 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %p: %.7 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.8 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.8 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/eval/aggregate.carbon b/toolchain/check/testdata/eval/aggregate.carbon index 68e78f492263..c5b144e8c2bf 100644 --- a/toolchain/check/testdata/eval/aggregate.carbon +++ b/toolchain/check/testdata/eval/aggregate.carbon @@ -64,7 +64,7 @@ var struct_access: [i32; 1] = (0,) as [i32; {.a = 3, .b = 1}.b]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/eval/fail_aggregate.carbon b/toolchain/check/testdata/eval/fail_aggregate.carbon index 72736c690530..9d87427b0347 100644 --- a/toolchain/check/testdata/eval/fail_aggregate.carbon +++ b/toolchain/check/testdata/eval/fail_aggregate.carbon @@ -50,7 +50,7 @@ var array_index: [i32; 1] = (0,) as [i32; ((5, 7, 1, 9) as [i32; 4])[2]]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/eval/fail_symbolic.carbon b/toolchain/check/testdata/eval/fail_symbolic.carbon index c7a416fbeb07..0b8c983a0bfb 100644 --- a/toolchain/check/testdata/eval/fail_symbolic.carbon +++ b/toolchain/check/testdata/eval/fail_symbolic.carbon @@ -40,7 +40,7 @@ fn G(N:! i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,8 +56,8 @@ fn G(N:! i32) { // CHECK:STDOUT: %int.make_type_32.loc12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_10.1: type = value_of_initializer %int.make_type_32.loc12 [template = i32] // CHECK:STDOUT: %.loc12_10.2: type = converted %int.make_type_32.loc12, %.loc12_10.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %N.loc12_6.1: i32 = bind_symbolic_name N, 0, %param [symbolic = %N.loc12_6.2 (constants.%N)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc12_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc12_6.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/eval/symbolic.carbon b/toolchain/check/testdata/eval/symbolic.carbon index 5e29f3f78dff..0541c1316fa4 100644 --- a/toolchain/check/testdata/eval/symbolic.carbon +++ b/toolchain/check/testdata/eval/symbolic.carbon @@ -58,8 +58,8 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc12_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_6.1, runtime_param [symbolic = %T.patt.loc12_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc12_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc12_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon b/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon index caa20192cea1..59cdebf99356 100644 --- a/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon @@ -50,7 +50,7 @@ fn H() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,7 +61,10 @@ fn H() -> i32 { // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_20.1: %.2 = tuple_literal (%int.make_type_32.loc11_12, %int.make_type_32.loc11_17) @@ -70,9 +73,13 @@ fn H() -> i32 { // CHECK:STDOUT: %.loc11_20.4: type = value_of_initializer %int.make_type_32.loc11_17 [template = i32] // CHECK:STDOUT: %.loc11_20.5: type = converted %int.make_type_32.loc11_17, %.loc11_20.4 [template = i32] // CHECK:STDOUT: %.loc11_20.6: type = converted %.loc11_20.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc13_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_20.1: %.2 = tuple_literal (%int.make_type_32.loc13_12, %int.make_type_32.loc13_17) @@ -81,13 +88,18 @@ fn H() -> i32 { // CHECK:STDOUT: %.loc13_20.4: type = value_of_initializer %int.make_type_32.loc13_17 [template = i32] // CHECK:STDOUT: %.loc13_20.5: type = converted %int.make_type_32.loc13_17, %.loc13_20.4 [template = i32] // CHECK:STDOUT: %.loc13_20.6: type = converted %.loc13_20.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} { +// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc19_11.2: type = converted %int.make_type_32, %.loc19_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -117,8 +129,8 @@ fn H() -> i32 { // CHECK:STDOUT: %F.call.loc15: init %.3 = call %F.ref.loc15() to %.loc15 // CHECK:STDOUT: assign %v.ref, %F.call.loc15 // CHECK:STDOUT: %F.ref.loc16: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc13_8: ref %.3 = splice_block %return {} -// CHECK:STDOUT: %F.call.loc16: init %.3 = call %F.ref.loc16() to %.loc13_8 +// CHECK:STDOUT: %.loc13_8.2: ref %.3 = splice_block %return {} +// CHECK:STDOUT: %F.call.loc16: init %.3 = call %F.ref.loc16() to %.loc13_8.2 // CHECK:STDOUT: return %F.call.loc16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/call.carbon b/toolchain/check/testdata/function/builtin/call.carbon index f04ba52a7c24..25146cb9db02 100644 --- a/toolchain/check/testdata/function/builtin/call.carbon +++ b/toolchain/check/testdata/function/builtin/call.carbon @@ -39,7 +39,7 @@ var arr: [i32; Add(1, 2)]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -54,6 +54,8 @@ var arr: [i32; Add(1, 2)]; // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11_11 [template = i32] @@ -64,11 +66,12 @@ var arr: [i32; Add(1, 2)]; // CHECK:STDOUT: %int.make_type_32.loc11_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_27.1: type = value_of_initializer %int.make_type_32.loc11_27 [template = i32] // CHECK:STDOUT: %.loc11_27.2: type = converted %int.make_type_32.loc11_27, %.loc11_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, %Add.decl [template = constants.%Add] diff --git a/toolchain/check/testdata/function/builtin/definition.carbon b/toolchain/check/testdata/function/builtin/definition.carbon index 7cb027c39e91..a23e7eb5773d 100644 --- a/toolchain/check/testdata/function/builtin/definition.carbon +++ b/toolchain/check/testdata/function/builtin/definition.carbon @@ -32,7 +32,7 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -46,6 +46,8 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11_11 [template = i32] @@ -56,11 +58,12 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc11_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_27.1: type = value_of_initializer %int.make_type_32.loc11_27 [template = i32] // CHECK:STDOUT: %.loc11_27.2: type = converted %int.make_type_32.loc11_27, %.loc11_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/fail_redefined.carbon b/toolchain/check/testdata/function/builtin/fail_redefined.carbon index e1dca895fe80..6456fb389ec9 100644 --- a/toolchain/check/testdata/function/builtin/fail_redefined.carbon +++ b/toolchain/check/testdata/function/builtin/fail_redefined.carbon @@ -63,7 +63,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,6 +79,8 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32.loc11_9 [template = i32] @@ -89,17 +91,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc11_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_25.1: type = value_of_initializer %int.make_type_32.loc11_25 [template = i32] // CHECK:STDOUT: %.loc11_25.2: type = converted %int.make_type_32.loc11_25, %.loc11_25.1 [template = i32] -// CHECK:STDOUT: %return.var.loc11: ref i32 = var -// CHECK:STDOUT: %param.loc11_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc11: i32 = bind_name n, %param.loc11_7 -// CHECK:STDOUT: %param.loc11_15: i32 = param runtime_param1 -// CHECK:STDOUT: %m.loc11: i32 = bind_name m, %param.loc11_15 +// CHECK:STDOUT: %n.param.loc11: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc11: i32 = bind_name n, %n.param.loc11 +// CHECK:STDOUT: %m.param.loc11: i32 = param runtime_param1 +// CHECK:STDOUT: %m.loc11: i32 = bind_name m, %m.param.loc11 +// CHECK:STDOUT: %return.param.loc11: i32 = param runtime_param2 +// CHECK:STDOUT: %.loc11_22: ref i32 = return_slot %return.param.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl.loc19: %A.type = fn_decl @A [template = constants.%A] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc19_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_9.1: type = value_of_initializer %int.make_type_32.loc19_9 [template = i32] @@ -110,17 +115,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc19_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_25.1: type = value_of_initializer %int.make_type_32.loc19_25 [template = i32] // CHECK:STDOUT: %.loc19_25.2: type = converted %int.make_type_32.loc19_25, %.loc19_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc19_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc19: i32 = bind_name n, %param.loc19_7 -// CHECK:STDOUT: %param.loc19_15: i32 = param runtime_param1 -// CHECK:STDOUT: %m.loc19: i32 = bind_name m, %param.loc19_15 +// CHECK:STDOUT: %n.param.loc19: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc19: i32 = bind_name n, %n.param.loc19 +// CHECK:STDOUT: %m.param.loc19: i32 = param runtime_param1 +// CHECK:STDOUT: %m.loc19: i32 = bind_name m, %m.param.loc19 +// CHECK:STDOUT: %return.param.loc19: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl.loc21: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc21_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_9.1: type = value_of_initializer %int.make_type_32.loc21_9 [template = i32] @@ -131,17 +139,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc21_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_25.1: type = value_of_initializer %int.make_type_32.loc21_25 [template = i32] // CHECK:STDOUT: %.loc21_25.2: type = converted %int.make_type_32.loc21_25, %.loc21_25.1 [template = i32] -// CHECK:STDOUT: %return.var.loc21: ref i32 = var -// CHECK:STDOUT: %param.loc21_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc21: i32 = bind_name n, %param.loc21_7 -// CHECK:STDOUT: %param.loc21_15: i32 = param runtime_param1 -// CHECK:STDOUT: %m.loc21: i32 = bind_name m, %param.loc21_15 +// CHECK:STDOUT: %n.param.loc21: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc21: i32 = bind_name n, %n.param.loc21 +// CHECK:STDOUT: %m.param.loc21: i32 = param runtime_param1 +// CHECK:STDOUT: %m.loc21: i32 = bind_name m, %m.param.loc21 +// CHECK:STDOUT: %return.param.loc21: i32 = param runtime_param2 +// CHECK:STDOUT: %.loc21_22: ref i32 = return_slot %return.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl.loc29: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc29_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc29_9.1: type = value_of_initializer %int.make_type_32.loc29_9 [template = i32] @@ -152,17 +163,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc29_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc29_25.1: type = value_of_initializer %int.make_type_32.loc29_25 [template = i32] // CHECK:STDOUT: %.loc29_25.2: type = converted %int.make_type_32.loc29_25, %.loc29_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc29_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc29: i32 = bind_name n, %param.loc29_7 -// CHECK:STDOUT: %param.loc29_15: i32 = param runtime_param1 -// CHECK:STDOUT: %m.loc29: i32 = bind_name m, %param.loc29_15 +// CHECK:STDOUT: %n.param.loc29: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc29: i32 = bind_name n, %n.param.loc29 +// CHECK:STDOUT: %m.param.loc29: i32 = param runtime_param1 +// CHECK:STDOUT: %m.loc29: i32 = bind_name m, %m.param.loc29 +// CHECK:STDOUT: %return.param.loc29: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc29 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl.loc31: %C.type = fn_decl @C [template = constants.%C] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc31_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc31_9.1: type = value_of_initializer %int.make_type_32.loc31_9 [template = i32] @@ -173,17 +187,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc31_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc31_25.1: type = value_of_initializer %int.make_type_32.loc31_25 [template = i32] // CHECK:STDOUT: %.loc31_25.2: type = converted %int.make_type_32.loc31_25, %.loc31_25.1 [template = i32] -// CHECK:STDOUT: %return.var.loc31: ref i32 = var -// CHECK:STDOUT: %param.loc31_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc31: i32 = bind_name n, %param.loc31_7 -// CHECK:STDOUT: %param.loc31_15: i32 = param runtime_param1 -// CHECK:STDOUT: %m.loc31: i32 = bind_name m, %param.loc31_15 +// CHECK:STDOUT: %n.param.loc31: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc31: i32 = bind_name n, %n.param.loc31 +// CHECK:STDOUT: %m.param.loc31: i32 = param runtime_param1 +// CHECK:STDOUT: %m.loc31: i32 = bind_name m, %m.param.loc31 +// CHECK:STDOUT: %return.param.loc31: i32 = param runtime_param2 +// CHECK:STDOUT: %.loc31_22: ref i32 = return_slot %return.param.loc31 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl.loc38: %C.type = fn_decl @C [template = constants.%C] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc38_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc38_9.1: type = value_of_initializer %int.make_type_32.loc38_9 [template = i32] @@ -194,11 +211,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %int.make_type_32.loc38_25: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc38_25.1: type = value_of_initializer %int.make_type_32.loc38_25 [template = i32] // CHECK:STDOUT: %.loc38_25.2: type = converted %int.make_type_32.loc38_25, %.loc38_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc38_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc38: i32 = bind_name n, %param.loc38_7 -// CHECK:STDOUT: %param.loc38_15: i32 = param runtime_param1 -// CHECK:STDOUT: %m.loc38: i32 = bind_name m, %param.loc38_15 +// CHECK:STDOUT: %n.param.loc38: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc38: i32 = bind_name n, %n.param.loc38 +// CHECK:STDOUT: %m.param.loc38: i32 = param runtime_param1 +// CHECK:STDOUT: %m.loc38: i32 = bind_name m, %m.param.loc38 +// CHECK:STDOUT: %return.param.loc38: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc38 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/method.carbon b/toolchain/check/testdata/function/builtin/method.carbon index b95ef5d4cd9e..94f44454a6d9 100644 --- a/toolchain/check/testdata/function/builtin/method.carbon +++ b/toolchain/check/testdata/function/builtin/method.carbon @@ -53,7 +53,7 @@ var arr: [i32; 1.(I.F)(2)]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -92,6 +92,8 @@ var arr: [i32; 1.(I.F)(2)]; // CHECK:STDOUT: %self.param_patt: @F.1.%Self (%Self) = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: @F.1.%Self (%Self) = binding_pattern other // CHECK:STDOUT: %other.param_patt: @F.1.%Self (%Self) = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @F.1.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.1.%Self (%Self) = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc12_14: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_14.1: type = facet_type_access %Self.ref.loc12_14 [symbolic = %Self (constants.%Self)] @@ -102,11 +104,12 @@ var arr: [i32; 1.(I.F)(2)]; // CHECK:STDOUT: %Self.ref.loc12_36: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_36.1: type = facet_type_access %Self.ref.loc12_36 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_36.2: type = converted %Self.ref.loc12_36, %.loc12_36.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @F.1.%Self (%Self) = var -// CHECK:STDOUT: %param.loc12_12: @F.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %param.loc12_12 -// CHECK:STDOUT: %param.loc12_25: @F.1.%Self (%Self) = param runtime_param1 -// CHECK:STDOUT: %other: @F.1.%Self (%Self) = bind_name other, %param.loc12_25 +// CHECK:STDOUT: %self.param: @F.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @F.1.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %other: @F.1.%Self (%Self) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: @F.1.%Self (%Self) = param runtime_param2 +// CHECK:STDOUT: %return: ref @F.1.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: @@ -122,6 +125,8 @@ var arr: [i32; 1.(I.F)(2)]; // CHECK:STDOUT: %self.param_patt: i32 = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: i32 = binding_pattern other // CHECK:STDOUT: %other.param_patt: i32 = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc16_14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_14.1: type = value_of_initializer %int.make_type_32.loc16_14 [template = i32] @@ -132,11 +137,12 @@ var arr: [i32; 1.(I.F)(2)]; // CHECK:STDOUT: %int.make_type_32.loc16_34: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_34.1: type = value_of_initializer %int.make_type_32.loc16_34 [template = i32] // CHECK:STDOUT: %.loc16_34.2: type = converted %int.make_type_32.loc16_34, %.loc16_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc16_12: i32 = param runtime_param0 -// CHECK:STDOUT: %self: i32 = bind_name self, %param.loc16_12 -// CHECK:STDOUT: %param.loc16_24: i32 = param runtime_param1 -// CHECK:STDOUT: %other: i32 = bind_name other, %param.loc16_24 +// CHECK:STDOUT: %self.param: i32 = param runtime_param0 +// CHECK:STDOUT: %self: i32 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: i32 = param runtime_param1 +// CHECK:STDOUT: %other: i32 = bind_name other, %other.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15_15: = interface_witness (%F.decl) [template = constants.%.4] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon index 10efa5f89cbd..4346f09a023c 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon @@ -49,8 +49,12 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4); // CHECK:STDOUT: .Int32 = %Int32.decl // CHECK:STDOUT: .Add = %Add.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} { -// CHECK:STDOUT: %return: ref type = var +// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] { +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: type = param runtime_param0 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%Add.type] {} {} // CHECK:STDOUT: } @@ -62,6 +66,8 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4); // CHECK:STDOUT: %self.param_patt: @Op.%Self (%Self) = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: @Op.%Self (%Self) = binding_pattern other // CHECK:STDOUT: %other.param_patt: @Op.%Self (%Self) = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @Op.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Op.%Self (%Self) = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc7_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc7_15.1: type = facet_type_access %Self.ref.loc7_15 [symbolic = %Self (constants.%Self)] @@ -72,11 +78,12 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4); // CHECK:STDOUT: %Self.ref.loc7_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc7_37.1: type = facet_type_access %Self.ref.loc7_37 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc7_37.2: type = converted %Self.ref.loc7_37, %.loc7_37.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @Op.%Self (%Self) = var -// CHECK:STDOUT: %param.loc7_13: @Op.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @Op.%Self (%Self) = bind_name self, %param.loc7_13 -// CHECK:STDOUT: %param.loc7_26: @Op.%Self (%Self) = param runtime_param1 -// CHECK:STDOUT: %other: @Op.%Self (%Self) = bind_name other, %param.loc7_26 +// CHECK:STDOUT: %self.param: @Op.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @Op.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @Op.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %other: @Op.%Self (%Self) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: @Op.%Self (%Self) = param runtime_param2 +// CHECK:STDOUT: %return: ref @Op.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7: %.2 = assoc_entity element0, %Op.decl [template = constants.%.3] // CHECK:STDOUT: @@ -133,12 +140,12 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4); // CHECK:STDOUT: .Add = %import_ref.2 // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//default, inst+2, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: type = import_ref Core//default, inst+6, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//default, inst+8, unloaded -// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//default, inst+33, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.5: %Op.type.2 = import_ref Core//default, inst+28, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//default, inst+28, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//default, inst+5, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: type = import_ref Core//default, inst+9, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//default, inst+11, unloaded +// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//default, inst+39, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.5: %Op.type.2 = import_ref Core//default, inst+34, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//default, inst+34, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -181,15 +188,18 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4); // CHECK:STDOUT: %self.param_patt: i32 = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: i32 = binding_pattern other // CHECK:STDOUT: %other.param_patt: i32 = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @impl.%.loc6_6.2 [template = i32] // CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @impl.%.loc6_6.2 [template = i32] // CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @impl.%.loc6_6.2 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc7_13: i32 = param runtime_param0 -// CHECK:STDOUT: %self: i32 = bind_name self, %param.loc7_13 -// CHECK:STDOUT: %param.loc7_26: i32 = param runtime_param1 -// CHECK:STDOUT: %other: i32 = bind_name other, %param.loc7_26 +// CHECK:STDOUT: %self.param: i32 = param runtime_param0 +// CHECK:STDOUT: %self: i32 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: i32 = param runtime_param1 +// CHECK:STDOUT: %other: i32 = bind_name other, %other.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6_22: = interface_witness (%Op.decl) [template = constants.%.2] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/no_prelude/import.carbon b/toolchain/check/testdata/function/builtin/no_prelude/import.carbon index bed38b5ad06b..eb126fd282a2 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/import.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/import.carbon @@ -36,14 +36,20 @@ var arr: [i32; Core.TestAdd(1, 2)] = (1, 2, 3); // CHECK:STDOUT: .Int32 = %Int32.decl // CHECK:STDOUT: .TestAdd = %TestAdd.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} { -// CHECK:STDOUT: %return: ref type = var +// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] { +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: type = param runtime_param0 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAdd.decl: %TestAdd.type = fn_decl @TestAdd [template = constants.%TestAdd] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_15.1: type = value_of_initializer %int.make_type_32.loc5_15 [template = i32] @@ -54,11 +60,12 @@ var arr: [i32; Core.TestAdd(1, 2)] = (1, 2, 3); // CHECK:STDOUT: %int.make_type_32.loc5_31: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_31.1: type = value_of_initializer %int.make_type_32.loc5_31 [template = i32] // CHECK:STDOUT: %.loc5_31.2: type = converted %int.make_type_32.loc5_31, %.loc5_31.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc5_13: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_13 -// CHECK:STDOUT: %param.loc5_21: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_21 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -90,8 +97,8 @@ var arr: [i32; Core.TestAdd(1, 2)] = (1, 2, 3); // CHECK:STDOUT: .TestAdd = %import_ref.2 // CHECK:STDOUT: import Core//core // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//core, inst+2, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %TestAdd.type = import_ref Core//core, inst+24, loaded [template = constants.%TestAdd] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//core, inst+5, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %TestAdd.type = import_ref Core//core, inst+30, loaded [template = constants.%TestAdd] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/function/call/fail_not_callable.carbon b/toolchain/check/testdata/function/call/fail_not_callable.carbon index 799cbe13780c..e1dbfc34884f 100644 --- a/toolchain/check/testdata/function/call/fail_not_callable.carbon +++ b/toolchain/check/testdata/function/call/fail_not_callable.carbon @@ -39,7 +39,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/function/call/fail_param_count.carbon b/toolchain/check/testdata/function/call/fail_param_count.carbon index 63ee2deebb1f..6500a8b1d469 100644 --- a/toolchain/check/testdata/function/call/fail_param_count.carbon +++ b/toolchain/check/testdata/function/call/fail_param_count.carbon @@ -94,7 +94,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -114,8 +114,8 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_12.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_12.2: type = converted %int.make_type_32, %.loc12_12.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run2.decl: %Run2.type = fn_decl @Run2 [template = constants.%Run2] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -129,10 +129,10 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32.loc13_20: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_20.1: type = value_of_initializer %int.make_type_32.loc13_20 [template = i32] // CHECK:STDOUT: %.loc13_20.2: type = converted %int.make_type_32.loc13_20, %.loc13_20.1 [template = i32] -// CHECK:STDOUT: %param.loc13_10: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_10 -// CHECK:STDOUT: %param.loc13_18: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_18 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_param_type.carbon b/toolchain/check/testdata/function/call/fail_param_type.carbon index 145d661c0614..18978be554fc 100644 --- a/toolchain/check/testdata/function/call/fail_param_type.carbon +++ b/toolchain/check/testdata/function/call/fail_param_type.carbon @@ -66,13 +66,13 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,8 +89,8 @@ fn F() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_9.2: type = converted %int.make_type_32, %.loc11_9.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon index f97cdf702169..a8e025343e98 100644 --- a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon +++ b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon @@ -67,14 +67,14 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.3: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.3: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -84,12 +84,16 @@ fn Run() { // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} { +// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] { +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_13.1: i32 = int_literal 64 [template = constants.%.1] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc11_13.1) [template = f64] // CHECK:STDOUT: %.loc11_13.2: type = value_of_initializer %float.make_type [template = f64] // CHECK:STDOUT: %.loc11_13.3: type = converted %float.make_type, %.loc11_13.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var +// CHECK:STDOUT: %return.param: f64 = param runtime_param0 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index ccbdf8fa3a8a..fce09927621c 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -41,7 +41,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -54,6 +54,8 @@ fn Main() { // CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [template = constants.%Echo] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_12.1: type = value_of_initializer %int.make_type_32.loc11_12 [template = i32] @@ -61,9 +63,10 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32.loc11_20: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_20.1: type = value_of_initializer %int.make_type_32.loc11_20 [template = i32] // CHECK:STDOUT: %.loc11_20.2: type = converted %int.make_type_32.loc11_20, %.loc11_20.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/more_param_ir.carbon b/toolchain/check/testdata/function/call/more_param_ir.carbon index d2f996c2eb53..d022ed53507a 100644 --- a/toolchain/check/testdata/function/call/more_param_ir.carbon +++ b/toolchain/check/testdata/function/call/more_param_ir.carbon @@ -46,7 +46,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -68,10 +68,10 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/no_prelude/alias.carbon b/toolchain/check/testdata/function/call/no_prelude/alias.carbon index 83f9bd9d9f1b..ce349432d04b 100644 --- a/toolchain/check/testdata/function/call/no_prelude/alias.carbon +++ b/toolchain/check/testdata/function/call/no_prelude/alias.carbon @@ -33,10 +33,14 @@ fn Main() { // CHECK:STDOUT: .B = %B // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} { +// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc11_12.2: type = converted %.loc11_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %A.ref: %A.type = name_ref A, %A.decl [template = constants.%A] // CHECK:STDOUT: %B: %A.type = bind_alias B, %A.decl [template = constants.%A] diff --git a/toolchain/check/testdata/function/call/no_prelude/empty_struct.carbon b/toolchain/check/testdata/function/call/no_prelude/empty_struct.carbon index 412d5d6e265e..0fd831a55229 100644 --- a/toolchain/check/testdata/function/call/no_prelude/empty_struct.carbon +++ b/toolchain/check/testdata/function/call/no_prelude/empty_struct.carbon @@ -36,14 +36,17 @@ fn Main() { // CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [template = constants.%Echo] { // CHECK:STDOUT: %a.patt: %.1 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %.1 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_13.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc11_13.2: type = converted %.loc11_13.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc11_20.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc11_20.2: type = converted %.loc11_20.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %a: %.1 = bind_name a, %param +// CHECK:STDOUT: %a.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %a: %.1 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/no_prelude/empty_tuple.carbon b/toolchain/check/testdata/function/call/no_prelude/empty_tuple.carbon index d5b6caf398f2..e60cb24e775d 100644 --- a/toolchain/check/testdata/function/call/no_prelude/empty_tuple.carbon +++ b/toolchain/check/testdata/function/call/no_prelude/empty_tuple.carbon @@ -35,14 +35,17 @@ fn Main() { // CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [template = constants.%Echo] { // CHECK:STDOUT: %a.patt: %.1 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %.1 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_13.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc11_13.2: type = converted %.loc11_13.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc11_20.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc11_20.2: type = converted %.loc11_20.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %a: %.1 = bind_name a, %param +// CHECK:STDOUT: %a.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %a: %.1 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/no_prelude/fail_explicit_self_param.carbon b/toolchain/check/testdata/function/call/no_prelude/fail_explicit_self_param.carbon index 5b317aa2764d..a96fa59e83a0 100644 --- a/toolchain/check/testdata/function/call/no_prelude/fail_explicit_self_param.carbon +++ b/toolchain/check/testdata/function/call/no_prelude/fail_explicit_self_param.carbon @@ -39,8 +39,8 @@ fn Run() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_13.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc14_13.2: type = converted %.loc14_13.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %self: %.1 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_one.carbon b/toolchain/check/testdata/function/call/params_one.carbon index 83f815be4391..a484fc8e91fa 100644 --- a/toolchain/check/testdata/function/call/params_one.carbon +++ b/toolchain/check/testdata/function/call/params_one.carbon @@ -39,7 +39,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,8 +56,8 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_one_comma.carbon b/toolchain/check/testdata/function/call/params_one_comma.carbon index 2951446ca336..0eba5be9367e 100644 --- a/toolchain/check/testdata/function/call/params_one_comma.carbon +++ b/toolchain/check/testdata/function/call/params_one_comma.carbon @@ -40,7 +40,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -57,8 +57,8 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_two.carbon b/toolchain/check/testdata/function/call/params_two.carbon index e3ba547a1dfa..d6f4dff2616f 100644 --- a/toolchain/check/testdata/function/call/params_two.carbon +++ b/toolchain/check/testdata/function/call/params_two.carbon @@ -40,7 +40,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -62,10 +62,10 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_two_comma.carbon b/toolchain/check/testdata/function/call/params_two_comma.carbon index bd7884ad084d..288e6765434d 100644 --- a/toolchain/check/testdata/function/call/params_two_comma.carbon +++ b/toolchain/check/testdata/function/call/params_two_comma.carbon @@ -41,7 +41,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,10 +63,10 @@ fn Main() { // CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon b/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon index 4e55ce4305e8..c92f355cac41 100644 --- a/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon +++ b/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon @@ -35,7 +35,7 @@ fn F(n: i32, a: [i32; n]*); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,10 +56,10 @@ fn F(n: i32, a: [i32; n]*); // CHECK:STDOUT: %int.make_type_32.loc14_18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %n.ref: i32 = name_ref n, %n // CHECK:STDOUT: %.loc14_25: type = ptr_type [template = ] -// CHECK:STDOUT: %param.loc14_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param.loc14_7 -// CHECK:STDOUT: %param.loc14_15: = param runtime_param1 -// CHECK:STDOUT: %a: = bind_name a, %param.loc14_15 +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %a.param: = param runtime_param1 +// CHECK:STDOUT: %a: = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon b/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon index 051ec7c149ce..0f3af03e49dd 100644 --- a/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon +++ b/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon @@ -38,7 +38,7 @@ fn F(n: i32, n: i32); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -59,10 +59,10 @@ fn F(n: i32, n: i32); // CHECK:STDOUT: %int.make_type_32.loc17_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc17_17.1: type = value_of_initializer %int.make_type_32.loc17_17 [template = i32] // CHECK:STDOUT: %.loc17_17.2: type = converted %int.make_type_32.loc17_17, %.loc17_17.1 [template = i32] -// CHECK:STDOUT: %param.loc17_7: i32 = param runtime_param0 -// CHECK:STDOUT: %n.loc17_6: i32 = bind_name n, %param.loc17_7 -// CHECK:STDOUT: %param.loc17_15: i32 = param runtime_param1 -// CHECK:STDOUT: %n.loc17_14: i32 = bind_name n, %param.loc17_15 +// CHECK:STDOUT: %n.param.loc17_7: i32 = param runtime_param0 +// CHECK:STDOUT: %n.loc17_6: i32 = bind_name n, %n.param.loc17_7 +// CHECK:STDOUT: %n.param.loc17_15: i32 = param runtime_param1 +// CHECK:STDOUT: %n.loc17_14: i32 = bind_name n, %n.param.loc17_15 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index 908cbaca3c1a..b77f106d1eac 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -288,7 +288,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -305,6 +305,8 @@ import library "extern_api"; // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_9.1: type = value_of_initializer %int.make_type_32.loc5_9 [template = i32] @@ -312,13 +314,16 @@ import library "extern_api"; // CHECK:STDOUT: %int.make_type_32.loc5_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_17.1: type = value_of_initializer %int.make_type_32.loc5_17 [template = i32] // CHECK:STDOUT: %.loc5_17.2: type = converted %int.make_type_32.loc5_17, %.loc5_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %b: i32 = bind_name b, %param +// CHECK:STDOUT: %b.param: i32 = param runtime_param0 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { // CHECK:STDOUT: %c.patt: %.3 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %.3 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: %.2 = tuple_literal (%int.make_type_32.loc6_10) @@ -329,9 +334,10 @@ import library "extern_api"; // CHECK:STDOUT: %.loc6_25.1: type = value_of_initializer %int.make_type_32.loc6_25 [template = i32] // CHECK:STDOUT: %.loc6_25.2: type = converted %int.make_type_32.loc6_25, %.loc6_25.1 [template = i32] // CHECK:STDOUT: %.loc6_28: type = struct_type {.c: i32} [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %c: %.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %NS: = namespace [template] { @@ -385,7 +391,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -402,6 +408,8 @@ import library "extern_api"; // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_44: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_44.1: type = value_of_initializer %int.make_type_32.loc5_44 [template = i32] @@ -409,13 +417,16 @@ import library "extern_api"; // CHECK:STDOUT: %int.make_type_32.loc5_52: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_52.1: type = value_of_initializer %int.make_type_32.loc5_52 [template = i32] // CHECK:STDOUT: %.loc5_52.2: type = converted %int.make_type_32.loc5_52, %.loc5_52.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %b: i32 = bind_name b, %param +// CHECK:STDOUT: %b.param: i32 = param runtime_param0 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { // CHECK:STDOUT: %c.patt: %.3 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %.3 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_45: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_49.1: %.2 = tuple_literal (%int.make_type_32.loc6_45) @@ -426,9 +437,10 @@ import library "extern_api"; // CHECK:STDOUT: %.loc6_60.1: type = value_of_initializer %int.make_type_32.loc6_60 [template = i32] // CHECK:STDOUT: %.loc6_60.2: type = converted %int.make_type_32.loc6_60, %.loc6_60.1 [template = i32] // CHECK:STDOUT: %.loc6_63: type = struct_type {.c: i32} [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %c: %.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %NS: = namespace [template] { @@ -473,14 +485,14 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+23, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+45, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+48, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+26, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+51, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+54, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = %import_ref.6 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+52, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+58, loaded [template = constants.%E] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.7 // CHECK:STDOUT: import Core//prelude @@ -492,7 +504,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -599,14 +611,14 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+23, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+45, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+48, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+26, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+51, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+54, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = file.%E.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+52, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+58, loaded [template = constants.%E] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.7 // CHECK:STDOUT: import Core//prelude @@ -618,7 +630,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -645,9 +657,10 @@ import library "extern_api"; // CHECK:STDOUT: %int.make_type_32.loc23_24: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc23_24.1: type = value_of_initializer %int.make_type_32.loc23_24 [template = i32] // CHECK:STDOUT: %.loc23_24.2: type = converted %int.make_type_32.loc23_24, %.loc23_24.1 [template = i32] -// CHECK:STDOUT: %return.var: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %b: i32 = bind_name b, %param +// CHECK:STDOUT: %b.param: i32 = param runtime_param0 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc23_21: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} { // CHECK:STDOUT: %int.make_type_32.loc32_17: init type = call constants.%Int32() [template = i32] @@ -659,9 +672,10 @@ import library "extern_api"; // CHECK:STDOUT: %.loc32_32.1: type = value_of_initializer %int.make_type_32.loc32_32 [template = i32] // CHECK:STDOUT: %.loc32_32.2: type = converted %int.make_type_32.loc32_32, %.loc32_32.1 [template = i32] // CHECK:STDOUT: %.loc32_35: type = struct_type {.c: i32} [template = constants.%.4] -// CHECK:STDOUT: %return.var: ref %.4 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %c: %.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %.loc32_24: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} {} @@ -753,14 +767,14 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//extern_api, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+23, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+45, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+48, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+26, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+51, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+54, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = file.%E.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+52, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+58, loaded [template = constants.%E] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.7 // CHECK:STDOUT: import Core//prelude @@ -772,7 +786,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -799,9 +813,10 @@ import library "extern_api"; // CHECK:STDOUT: %int.make_type_32.loc7_24: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc7_24.1: type = value_of_initializer %int.make_type_32.loc7_24 [template = i32] // CHECK:STDOUT: %.loc7_24.2: type = converted %int.make_type_32.loc7_24, %.loc7_24.1 [template = i32] -// CHECK:STDOUT: %return.var: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %b: i32 = bind_name b, %param +// CHECK:STDOUT: %b.param: i32 = param runtime_param0 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc7_21: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} { // CHECK:STDOUT: %int.make_type_32.loc8_17: init type = call constants.%Int32() [template = i32] @@ -813,9 +828,10 @@ import library "extern_api"; // CHECK:STDOUT: %.loc8_32.1: type = value_of_initializer %int.make_type_32.loc8_32 [template = i32] // CHECK:STDOUT: %.loc8_32.2: type = converted %int.make_type_32.loc8_32, %.loc8_32.1 [template = i32] // CHECK:STDOUT: %.loc8_35: type = struct_type {.c: i32} [template = constants.%.4] -// CHECK:STDOUT: %return.var: ref %.4 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %c: %.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %.loc8_24: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} {} @@ -906,19 +922,19 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+23, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+45, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+48, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+26, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+51, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+54, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = %import_ref.6 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+52, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+58, loaded [template = constants.%E] // CHECK:STDOUT: %import_ref.7 = import_ref Main//extern_api, inst+3, unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Main//extern_api, inst+23, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//extern_api, inst+45, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Main//extern_api, inst+48, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Main//extern_api, inst+52, unloaded +// CHECK:STDOUT: %import_ref.8 = import_ref Main//extern_api, inst+26, unloaded +// CHECK:STDOUT: %import_ref.9 = import_ref Main//extern_api, inst+51, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Main//extern_api, inst+54, unloaded +// CHECK:STDOUT: %import_ref.11 = import_ref Main//extern_api, inst+58, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.12 // CHECK:STDOUT: import Core//prelude @@ -930,7 +946,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1036,19 +1052,19 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//extern_api, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+23, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+45, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+48, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+26, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+51, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+54, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = %import_ref.6 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+52, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+58, loaded [template = constants.%E] // CHECK:STDOUT: %import_ref.7 = import_ref Main//api, inst+3, unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Main//api, inst+23, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//api, inst+45, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Main//api, inst+48, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Main//api, inst+52, unloaded +// CHECK:STDOUT: %import_ref.8 = import_ref Main//api, inst+26, unloaded +// CHECK:STDOUT: %import_ref.9 = import_ref Main//api, inst+51, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Main//api, inst+54, unloaded +// CHECK:STDOUT: %import_ref.11 = import_ref Main//api, inst+58, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.12 // CHECK:STDOUT: import Core//prelude @@ -1060,7 +1076,7 @@ import library "extern_api"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1146,14 +1162,14 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1 = import_ref Main//api, inst+3, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//api, inst+23, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//api, inst+45, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//api, inst+48, unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2 = import_ref Main//api, inst+26, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref Main//api, inst+51, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref Main//api, inst+54, unloaded +// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = %import_ref.6 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6 = import_ref Main//api, inst+52, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Main//api, inst+58, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators @@ -1183,14 +1199,14 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_api, inst+3, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//extern_api, inst+23, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//extern_api, inst+45, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//extern_api, inst+48, unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, inst+51, loaded +// CHECK:STDOUT: %import_ref.2 = import_ref Main//extern_api, inst+26, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref Main//extern_api, inst+51, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref Main//extern_api, inst+54, unloaded +// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, inst+57, loaded // CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { // CHECK:STDOUT: .E = %import_ref.6 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6 = import_ref Main//extern_api, inst+52, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Main//extern_api, inst+58, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon index b48f334be449..9fd48050ddb3 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon @@ -178,8 +178,8 @@ class C { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon b/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon index f8c0b9caccc0..9b863c9784fe 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon @@ -115,21 +115,37 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %D.decl.loc5: type = class_decl @D [template = constants.%D] {} {} -// CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [template = constants.%ReturnCUnused] {} { +// CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [template = constants.%ReturnCUnused] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ReturnCUsed.decl: %ReturnCUsed.type = fn_decl @ReturnCUsed [template = constants.%ReturnCUsed] {} { +// CHECK:STDOUT: %ReturnCUsed.decl: %ReturnCUsed.type = fn_decl @ReturnCUsed [template = constants.%ReturnCUsed] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ReturnDUnused.decl: %ReturnDUnused.type = fn_decl @ReturnDUnused [template = constants.%ReturnDUnused] {} { +// CHECK:STDOUT: %ReturnDUnused.decl: %ReturnDUnused.type = fn_decl @ReturnDUnused [template = constants.%ReturnDUnused] { +// CHECK:STDOUT: %return.patt: %D = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [template = constants.%D] -// CHECK:STDOUT: %return: ref %D = var +// CHECK:STDOUT: %return.param: %D = param runtime_param0 +// CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ReturnDUsed.decl: %ReturnDUsed.type = fn_decl @ReturnDUsed [template = constants.%ReturnDUsed] {} { +// CHECK:STDOUT: %ReturnDUsed.decl: %ReturnDUsed.type = fn_decl @ReturnDUsed [template = constants.%ReturnDUsed] { +// CHECK:STDOUT: %return.patt: %D = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [template = constants.%D] -// CHECK:STDOUT: %return: ref %D = var +// CHECK:STDOUT: %return.param: %D = param runtime_param0 +// CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] {} {} // CHECK:STDOUT: %D.decl.loc37: type = class_decl @D [template = constants.%D] {} {} @@ -185,11 +201,11 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1 = import_ref Main//incomplete_return, inst+1, unloaded // CHECK:STDOUT: %import_ref.2 = import_ref Main//incomplete_return, inst+3, unloaded -// CHECK:STDOUT: %import_ref.3: %ReturnCUnused.type = import_ref Main//incomplete_return, inst+7, loaded [template = constants.%ReturnCUnused] -// CHECK:STDOUT: %import_ref.4: %ReturnCUsed.type = import_ref Main//incomplete_return, inst+13, loaded [template = constants.%ReturnCUsed] -// CHECK:STDOUT: %import_ref.5: %ReturnDUnused.type = import_ref Main//incomplete_return, inst+18, loaded [template = constants.%ReturnDUnused] -// CHECK:STDOUT: %import_ref.6: %ReturnDUsed.type = import_ref Main//incomplete_return, inst+23, loaded [template = constants.%ReturnDUsed] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//incomplete_return, inst+26, unloaded +// CHECK:STDOUT: %import_ref.3: %ReturnCUnused.type = import_ref Main//incomplete_return, inst+10, loaded [template = constants.%ReturnCUnused] +// CHECK:STDOUT: %import_ref.4: %ReturnCUsed.type = import_ref Main//incomplete_return, inst+19, loaded [template = constants.%ReturnCUsed] +// CHECK:STDOUT: %import_ref.5: %ReturnDUnused.type = import_ref Main//incomplete_return, inst+27, loaded [template = constants.%ReturnDUnused] +// CHECK:STDOUT: %import_ref.6: %ReturnDUsed.type = import_ref Main//incomplete_return, inst+35, loaded [template = constants.%ReturnDUsed] +// CHECK:STDOUT: %import_ref.7 = import_ref Main//incomplete_return, inst+38, unloaded // CHECK:STDOUT: %import_ref.8 = import_ref Main//incomplete_return, inst+4, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon b/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon index 548e6832ca97..7c3be24c6c13 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon @@ -91,8 +91,8 @@ fn E() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc21_10.2: type = converted %.loc21_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param.loc21: %.1 = param runtime_param0 -// CHECK:STDOUT: %x.loc21: %.1 = bind_name x, %param.loc21 +// CHECK:STDOUT: %x.param.loc21: %.1 = param runtime_param0 +// CHECK:STDOUT: %x.loc21: %.1 = bind_name x, %x.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl.loc29: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %x.patt: %.1 = binding_pattern x @@ -100,8 +100,8 @@ fn E() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc29_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc29_10.2: type = converted %.loc29_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param.loc29: %.1 = param runtime_param0 -// CHECK:STDOUT: %x.loc29: %.1 = bind_name x, %param.loc29 +// CHECK:STDOUT: %x.param.loc29: %.1 = param runtime_param0 +// CHECK:STDOUT: %x.loc29: %.1 = bind_name x, %x.param.loc29 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.2] { @@ -110,8 +110,8 @@ fn E() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc39_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc39_10.2: type = converted %.loc39_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %x: %.1 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl.loc41: %D.type = fn_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %D.decl.loc49: %D.type = fn_decl @D [template = constants.%D] {} {} diff --git a/toolchain/check/testdata/function/declaration/param_same_name.carbon b/toolchain/check/testdata/function/declaration/param_same_name.carbon index 49b33e9e028c..9a41bb181dcf 100644 --- a/toolchain/check/testdata/function/declaration/param_same_name.carbon +++ b/toolchain/check/testdata/function/declaration/param_same_name.carbon @@ -36,7 +36,7 @@ fn G(a: i32); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -53,8 +53,8 @@ fn G(a: i32); // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_9.2: type = converted %int.make_type_32, %.loc11_9.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a @@ -63,8 +63,8 @@ fn G(a: i32); // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_9.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_9.2: type = converted %int.make_type_32, %.loc13_9.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index 1b1d6fee16c8..5ec1105bc88f 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -141,7 +141,7 @@ fn D() {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -157,6 +157,8 @@ fn D() {} // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc5_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_9.1: type = value_of_initializer %int.make_type_32.loc5_9 [template = i32] @@ -164,13 +166,16 @@ fn D() {} // CHECK:STDOUT: %int.make_type_32.loc5_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc5_17.1: type = value_of_initializer %int.make_type_32.loc5_17 [template = i32] // CHECK:STDOUT: %.loc5_17.2: type = converted %int.make_type_32.loc5_17, %.loc5_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %b: i32 = bind_name b, %param +// CHECK:STDOUT: %b.param: i32 = param runtime_param0 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { // CHECK:STDOUT: %c.patt: %.3 = binding_pattern c // CHECK:STDOUT: %c.param_patt: %.3 = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_10: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_14.1: %.2 = tuple_literal (%int.make_type_32.loc6_10) @@ -181,9 +186,10 @@ fn D() {} // CHECK:STDOUT: %.loc6_25.1: type = value_of_initializer %int.make_type_32.loc6_25 [template = i32] // CHECK:STDOUT: %.loc6_25.2: type = converted %int.make_type_32.loc6_25, %.loc6_25.1 [template = i32] // CHECK:STDOUT: %.loc6_28: type = struct_type {.c: i32} [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %c: %.3 = bind_name c, %param +// CHECK:STDOUT: %c.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: } @@ -266,9 +272,9 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//fns, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+24, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//fns, inst+48, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+60, unloaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+27, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//fns, inst+54, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+66, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.5 // CHECK:STDOUT: import Core//prelude @@ -280,7 +286,7 @@ fn D() {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -354,9 +360,9 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//fns, inst+3, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+24, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+48, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+60, unloaded +// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+27, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+54, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+66, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.5 // CHECK:STDOUT: import Core//prelude @@ -368,7 +374,7 @@ fn D() {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -389,9 +395,10 @@ fn D() {} // CHECK:STDOUT: %int.make_type_32.loc23_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc23_17.1: type = value_of_initializer %int.make_type_32.loc23_17 [template = i32] // CHECK:STDOUT: %.loc23_17.2: type = converted %int.make_type_32.loc23_17, %.loc23_17.1 [template = i32] -// CHECK:STDOUT: %return.var: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %b: i32 = bind_name b, %param +// CHECK:STDOUT: %b.param: i32 = param runtime_param0 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %.loc23_14: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -452,9 +459,9 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1 = import_ref Main//fns, inst+3, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//fns, inst+24, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+48, unloaded -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//fns, inst+60, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.2 = import_ref Main//fns, inst+27, unloaded +// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+54, unloaded +// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//fns, inst+66, loaded [template = constants.%D] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators diff --git a/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon b/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon index bef15a90da3b..df9f78737684 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon @@ -113,8 +113,8 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc19_10.2: type = converted %.loc19_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %x: %.1 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %.1 = binding_pattern x @@ -122,8 +122,8 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc21_10.2: type = converted %.loc21_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %x: %.1 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl.loc29: %.type.2 = fn_decl @.2 [template = constants.%.3] {} {} // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { @@ -132,37 +132,53 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc31_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc31_10.2: type = converted %.loc31_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %x: %.1 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl.loc36: %.type.3 = fn_decl @.3 [template = constants.%.4] { // CHECK:STDOUT: %x.patt: = binding_pattern x // CHECK:STDOUT: %x.param_patt: = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %x: = bind_name x, %param +// CHECK:STDOUT: %x.param: = param runtime_param0 +// CHECK:STDOUT: %x: = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: %I.type = fn_decl @I [template = constants.%I] {} {} -// CHECK:STDOUT: %.decl.loc46: %.type.4 = fn_decl @.4 [template = constants.%.5] {} { +// CHECK:STDOUT: %.decl.loc46: %.type.4 = fn_decl @.4 [template = constants.%.5] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc46_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc46_12.2: type = converted %.loc46_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [template = constants.%J] {} { +// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [template = constants.%J] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc48_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc48_12.2: type = converted %.loc48_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl.loc56: %.type.5 = fn_decl @.5 [template = constants.%.6] {} {} -// CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [template = constants.%K] {} { +// CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [template = constants.%K] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc58_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc58_12.2: type = converted %.loc58_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc65: %.type.6 = fn_decl @.6 [template = constants.%.8] {} { +// CHECK:STDOUT: %.decl.loc65: %.type.6 = fn_decl @.6 [template = constants.%.8] { +// CHECK:STDOUT: %return.patt: %.7 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.7 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc65_12.1: %.7 = struct_literal () // CHECK:STDOUT: %.loc65_12.2: type = converted %.loc65_12.1, constants.%.7 [template = constants.%.7] -// CHECK:STDOUT: %return: ref %.7 = var +// CHECK:STDOUT: %return.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.7 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon index 7d8fc316cb35..07891a9a0daf 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon @@ -197,32 +197,32 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc7: %C = bind_name a, %param.loc7 +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc7: %C = bind_name a, %a.param.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc8: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc8: %C = bind_name a, %param.loc8 +// CHECK:STDOUT: %a.param.loc8: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc8: %C = bind_name a, %a.param.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl.loc10: %Bar.type = fn_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param.loc10: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc10: %C = bind_name a, %param.loc10 +// CHECK:STDOUT: %a.param.loc10: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc10: %C = bind_name a, %a.param.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl.loc11: %Bar.type = fn_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param.loc11: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc11: %C = bind_name a, %param.loc11 +// CHECK:STDOUT: %a.param.loc11: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc11: %C = bind_name a, %a.param.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -266,16 +266,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc6: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc6: %C = bind_name a, %param.loc6 +// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc6: %C = bind_name a, %a.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc7: %C = bind_name a, %param.loc7 +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc7: %C = bind_name a, %a.param.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -316,16 +316,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -366,16 +366,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc6: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc6: %C = bind_name a, %param.loc6 +// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc6: %C = bind_name a, %a.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param0 -// CHECK:STDOUT: %a.loc7: %C = bind_name a, %param.loc7 +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param0 +// CHECK:STDOUT: %a.loc7: %C = bind_name a, %a.param.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -419,16 +419,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -479,16 +479,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -535,16 +535,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %b: %C = bind_name b, %param +// CHECK:STDOUT: %b.param: %C = param runtime_param0 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -590,16 +590,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -648,16 +648,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_8.1, runtime_param [symbolic = %a.patt.loc7_8.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_8.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_8.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_8.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_8.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc15_8.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_8.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc15_8.1, runtime_param [symbolic = %a.patt.loc15_8.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc15_8.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc15_8.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc15_8.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_8.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -719,13 +719,21 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C] // CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C] -// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} { +// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return.var.loc7: ref %C = var +// CHECK:STDOUT: %return.param.loc7: %C = param runtime_param0 +// CHECK:STDOUT: %.loc7: ref %C = return_slot %return.param.loc7 // CHECK:STDOUT: } -// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} { +// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [template = constants.%Foo] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param.loc8: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -766,8 +774,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -813,8 +821,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -855,8 +863,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc6: type = const_type %C [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %a: %.3 = bind_name a, %param +// CHECK:STDOUT: %a.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %a: %.3 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.5] { // CHECK:STDOUT: %a.patt: %.3 = binding_pattern a @@ -865,8 +873,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc17_18: type = const_type %C [template = constants.%.3] // CHECK:STDOUT: %.loc17_11: type = const_type %.3 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %a: %.3 = bind_name a, %param +// CHECK:STDOUT: %a.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %a: %.3 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_one.carbon b/toolchain/check/testdata/function/definition/params_one.carbon index e36d8d3ca48f..98a708c1d4ab 100644 --- a/toolchain/check/testdata/function/definition/params_one.carbon +++ b/toolchain/check/testdata/function/definition/params_one.carbon @@ -32,7 +32,7 @@ fn Foo(a: i32) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -48,8 +48,8 @@ fn Foo(a: i32) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_one_comma.carbon b/toolchain/check/testdata/function/definition/params_one_comma.carbon index aa11b1ec315f..0e0639df86ec 100644 --- a/toolchain/check/testdata/function/definition/params_one_comma.carbon +++ b/toolchain/check/testdata/function/definition/params_one_comma.carbon @@ -32,7 +32,7 @@ fn Foo(a: i32,) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -48,8 +48,8 @@ fn Foo(a: i32,) {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_two.carbon b/toolchain/check/testdata/function/definition/params_two.carbon index 4f52b6811b62..a00c88e4c35a 100644 --- a/toolchain/check/testdata/function/definition/params_two.carbon +++ b/toolchain/check/testdata/function/definition/params_two.carbon @@ -32,7 +32,7 @@ fn Foo(a: i32, b: i32) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -53,10 +53,10 @@ fn Foo(a: i32, b: i32) {} // CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_two_comma.carbon b/toolchain/check/testdata/function/definition/params_two_comma.carbon index 0ef032a174d3..d53b8111f868 100644 --- a/toolchain/check/testdata/function/definition/params_two_comma.carbon +++ b/toolchain/check/testdata/function/definition/params_two_comma.carbon @@ -32,7 +32,7 @@ fn Foo(a: i32, b: i32,) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -53,10 +53,10 @@ fn Foo(a: i32, b: i32,) {} // CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9 -// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 32dffa37ece5..9736d5080486 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -165,7 +165,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -179,30 +179,40 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] { // CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %.loc4_39.1: type = ptr_type %T [symbolic = %.loc4_39.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_25.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)] +// CHECK:STDOUT: %return.param: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param runtime_param0 +// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] {} { +// CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] { +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_37.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32] // CHECK:STDOUT: %.loc6_37.2: type = converted %int.make_type_32.loc6, %.loc6_37.1 [template = i32] // CHECK:STDOUT: %.loc6_37.3: type = ptr_type i32 [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var +// CHECK:STDOUT: %return.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg.decl: %CallExplicitGenericParamWithGenericArg.type = fn_decl @CallExplicitGenericParamWithGenericArg [template = constants.%CallExplicitGenericParamWithGenericArg] { // CHECK:STDOUT: %T.patt.loc10_43.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_43.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10_43.1, runtime_param [symbolic = %T.patt.loc10_43.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %return.patt: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc10: type = name_ref T, %T.loc10_43.1 [symbolic = %T.loc10_43.2 (constants.%T)] // CHECK:STDOUT: %.loc10_62.1: type = struct_type {.a: %T} [symbolic = %.loc10_62.2 (constants.%.6)] // CHECK:STDOUT: %.loc10_63.1: type = ptr_type %.6 [symbolic = %.loc10_63.2 (constants.%.7)] -// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc10_43.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_43.2 (constants.%T)] +// CHECK:STDOUT: %return.param: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = param runtime_param0 +// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -350,26 +360,29 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] { // CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %.loc4_39.1: type = ptr_type %T [symbolic = %.loc4_39.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_25.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)] +// CHECK:STDOUT: %return.param: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param runtime_param0 +// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallExplicitGenericParamConst.decl: %CallExplicitGenericParamConst.type = fn_decl @CallExplicitGenericParamConst [template = constants.%CallExplicitGenericParamConst] { // CHECK:STDOUT: %T.patt.loc6_34.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_34.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_34.1, runtime_param [symbolic = %T.patt.loc6_34.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc6_34.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc6_34.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_34.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_34.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallExplicitGenericParamNonConst.decl: %CallExplicitGenericParamNonConst.type = fn_decl @CallExplicitGenericParamNonConst [template = constants.%CallExplicitGenericParamNonConst] { // CHECK:STDOUT: %T.patt: type = binding_pattern T // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param0 -// CHECK:STDOUT: %T: type = bind_name T, %param +// CHECK:STDOUT: %T.param: type = param runtime_param0 +// CHECK:STDOUT: %T: type = bind_name T, %T.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -492,20 +505,27 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_27.1, runtime_param [symbolic = %T.patt.loc6_27.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_40: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc6_46: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)] // CHECK:STDOUT: %.loc6_47.1: type = ptr_type %T [symbolic = %.loc6_47.2 (constants.%.3)] -// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = var -// CHECK:STDOUT: %param.loc6_28: type = param runtime_param -// CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %param.loc6_28 [symbolic = %T.loc6_27.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_38: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %param.loc6_38 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_27.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = param runtime_param1 +// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] {} { +// CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] { +// CHECK:STDOUT: %return.patt: %.6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.6 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc10: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %.loc10: type = ptr_type %A [template = constants.%.6] -// CHECK:STDOUT: %return: ref %.6 = var +// CHECK:STDOUT: %.loc10_37: type = ptr_type %A [template = constants.%.6] +// CHECK:STDOUT: %return.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -608,7 +628,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -623,19 +643,24 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @ImplicitGenericParam.%.loc4_45.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ImplicitGenericParam.%.loc4_45.2 (%.1) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %.loc4_45.1: type = ptr_type %T [symbolic = %.loc4_45.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%.loc4_45.2 (%.1) = var -// CHECK:STDOUT: %param.loc4_26: type = param runtime_param -// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param.loc4_26 [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_36: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %param.loc4_36 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @ImplicitGenericParam.%.loc4_45.2 (%.1) = param runtime_param1 +// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%.loc4_45.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallImplicitGenericParam.decl: %CallImplicitGenericParam.type = fn_decl @CallImplicitGenericParam [template = constants.%CallImplicitGenericParam] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc6_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_32.1: type = value_of_initializer %int.make_type_32.loc6_32 [template = i32] @@ -644,9 +669,10 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %.loc6_43.1: type = value_of_initializer %int.make_type_32.loc6_40 [template = i32] // CHECK:STDOUT: %.loc6_43.2: type = converted %int.make_type_32.loc6_40, %.loc6_43.1 [template = i32] // CHECK:STDOUT: %.loc6_43.3: type = ptr_type i32 [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -742,7 +768,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -764,10 +790,10 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_35.3: type = converted %int.make_type_32, %.loc4_35.2 [template = i32] // CHECK:STDOUT: %.loc4_35.4: type = converted %.loc4_35.1, constants.%.3 [symbolic = %.loc4_35.5 (constants.%.3)] -// CHECK:STDOUT: %param.loc4_16: type = param runtime_param -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param.loc4_16 [symbolic = %T.loc4_15.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_26: @TupleParam.%.loc4_35.5 (%.3) = param runtime_param0 -// CHECK:STDOUT: %x: @TupleParam.%.loc4_35.5 (%.3) = bind_name x, %param.loc4_26 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @TupleParam.%.loc4_35.5 (%.3) = param runtime_param0 +// CHECK:STDOUT: %x: @TupleParam.%.loc4_35.5 (%.3) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallTupleParam.decl: %CallTupleParam.type = fn_decl @CallTupleParam [template = constants.%CallTupleParam] {} {} // CHECK:STDOUT: } @@ -845,7 +871,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -866,10 +892,10 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %.loc4_41.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_41.2: type = converted %int.make_type_32, %.loc4_41.1 [template = i32] // CHECK:STDOUT: %.loc4_44.1: type = struct_type {.a: %T, .b: i32} [symbolic = %.loc4_44.2 (constants.%.2)] -// CHECK:STDOUT: %param.loc4_17: type = param runtime_param -// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %param.loc4_17 [symbolic = %T.loc4_16.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_27: @StructParam.%.loc4_44.2 (%.2) = param runtime_param0 -// CHECK:STDOUT: %x: @StructParam.%.loc4_44.2 (%.2) = bind_name x, %param.loc4_27 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @StructParam.%.loc4_44.2 (%.2) = param runtime_param0 +// CHECK:STDOUT: %x: @StructParam.%.loc4_44.2 (%.2) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallStructParam.decl: %CallStructParam.type = fn_decl @CallStructParam [template = constants.%CallStructParam] {} {} // CHECK:STDOUT: } @@ -946,16 +972,19 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc6_35.1, runtime_param [symbolic = %U.patt.loc6_35.2 (constants.%U.patt)] // CHECK:STDOUT: %x.patt: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_25.1 [symbolic = %T.loc6_25.2 (constants.%T)] // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc6_35.1 [symbolic = %U.loc6_35.2 (constants.%U)] -// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%U.loc6_35.2 (%U) = var -// CHECK:STDOUT: %param.loc6_26: type = param runtime_param -// CHECK:STDOUT: %T.loc6_25.1: type = bind_symbolic_name T, 0, %param.loc6_26 [symbolic = %T.loc6_25.2 (constants.%T)] -// CHECK:STDOUT: %param.loc6_36: type = param runtime_param -// CHECK:STDOUT: %U.loc6_35.1: type = bind_symbolic_name U, 1, %param.loc6_36 [symbolic = %U.loc6_35.2 (constants.%U)] -// CHECK:STDOUT: %param.loc6_46: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = bind_name x, %param.loc6_46 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_25.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc6_35.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc6_35.2 (constants.%U)] +// CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = param runtime_param1 +// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%U.loc6_35.2 (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallImplicitNotDeducible.decl: %CallImplicitNotDeducible.type = fn_decl @CallImplicitNotDeducible [template = constants.%CallImplicitNotDeducible] {} {} // CHECK:STDOUT: } @@ -1025,17 +1054,20 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %x.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %y.patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = binding_pattern y // CHECK:STDOUT: %y.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %y.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_50: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%T.loc4_25.2 (%T) = var -// CHECK:STDOUT: %param.loc4_26: type = param runtime_param -// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param.loc4_26 [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_36: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name x, %param.loc4_36 -// CHECK:STDOUT: %param.loc4_42: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param1 -// CHECK:STDOUT: %y: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name y, %param.loc4_42 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %y.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %y: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name y, %y.param +// CHECK:STDOUT: %return.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param2 +// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%T.loc4_25.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallImplicitNotDeducible.decl: %CallImplicitNotDeducible.type = fn_decl @CallImplicitNotDeducible [template = constants.%CallImplicitNotDeducible] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon b/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon index b3372fbdfe36..11bf490f26c7 100644 --- a/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon +++ b/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon @@ -37,7 +37,7 @@ fn F(N:! i32, a: [i32; N]*); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,10 +61,10 @@ fn F(N:! i32, a: [i32; N]*); // CHECK:STDOUT: %.loc14_19.2: type = converted %int.make_type_32.loc14_19, %.loc14_19.1 [template = i32] // CHECK:STDOUT: %.loc14_25: type = array_type %N.ref, i32 [template = ] // CHECK:STDOUT: %.loc14_26: type = ptr_type [template = ] -// CHECK:STDOUT: %param.loc14_7: i32 = param runtime_param -// CHECK:STDOUT: %N.loc14_6.1: i32 = bind_symbolic_name N, 0, %param.loc14_7 [symbolic = %N.loc14_6.2 (constants.%N)] -// CHECK:STDOUT: %param.loc14_16: = param runtime_param0 -// CHECK:STDOUT: %a: = bind_name a, %param.loc14_16 +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc14_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_6.2 (constants.%N)] +// CHECK:STDOUT: %a.param: = param runtime_param0 +// CHECK:STDOUT: %a: = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/call.carbon b/toolchain/check/testdata/function/generic/no_prelude/call.carbon index ffae8a75219f..4ce9cfec8dd6 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/call.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/call.carbon @@ -91,55 +91,67 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Function.%T.loc4_13.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_26: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_32: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = var -// CHECK:STDOUT: %param.loc4_14: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_24: @Function.%T.loc4_13.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %param.loc4_24 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @Function.%T.loc4_13.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @Function.%T.loc4_13.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [template = constants.%CallGeneric] { // CHECK:STDOUT: %T.patt.loc8_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_16.1, runtime_param [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)] // CHECK:STDOUT: %x.patt: @CallGeneric.%T.loc8_16.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallGeneric.%T.loc8_16.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_29: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc8_35: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = var -// CHECK:STDOUT: %param.loc8_17: type = param runtime_param -// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %param.loc8_17 [symbolic = %T.loc8_16.2 (constants.%T)] -// CHECK:STDOUT: %param.loc8_27: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %param.loc8_27 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_16.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] { // CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_19.1, runtime_param [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)] // CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] // CHECK:STDOUT: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)] // CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] // CHECK:STDOUT: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)] -// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = var -// CHECK:STDOUT: %param.loc12_20: type = param runtime_param -// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %param.loc12_20 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %param.loc12_30: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0 -// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %param.loc12_30 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param1 +// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] { // CHECK:STDOUT: %x.patt: %C = binding_pattern x // CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %x: %C = bind_name x, %param +// CHECK:STDOUT: %x.param: %C = param runtime_param0 +// CHECK:STDOUT: %x: %C = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -211,8 +223,8 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %x.ref: %C = name_ref x, %x // CHECK:STDOUT: %.loc19: = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.8] -// CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} -// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18 +// CHECK:STDOUT: %.loc18_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18_23.2 // CHECK:STDOUT: return %Function.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -297,55 +309,67 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Function.%T.loc4_13.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_26: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_32: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = var -// CHECK:STDOUT: %param.loc4_14: type = param runtime_param -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_24: @Function.%T.loc4_13.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %param.loc4_24 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @Function.%T.loc4_13.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @Function.%T.loc4_13.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [template = constants.%CallGeneric] { // CHECK:STDOUT: %T.patt.loc8_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_16.1, runtime_param [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)] // CHECK:STDOUT: %x.patt: @CallGeneric.%T.loc8_16.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallGeneric.%T.loc8_16.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_29: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc8_35: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = var -// CHECK:STDOUT: %param.loc8_17: type = param runtime_param -// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %param.loc8_17 [symbolic = %T.loc8_16.2 (constants.%T)] -// CHECK:STDOUT: %param.loc8_27: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %param.loc8_27 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_16.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] { // CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_19.1, runtime_param [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)] // CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] // CHECK:STDOUT: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)] // CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] // CHECK:STDOUT: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)] -// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = var -// CHECK:STDOUT: %param.loc12_20: type = param runtime_param -// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %param.loc12_20 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %param.loc12_30: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0 -// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %param.loc12_30 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param1 +// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] { // CHECK:STDOUT: %x.patt: %C = binding_pattern x // CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %x: %C = bind_name x, %param +// CHECK:STDOUT: %x.param: %C = param runtime_param0 +// CHECK:STDOUT: %x: %C = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -413,8 +437,8 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] // CHECK:STDOUT: %x.ref: %C = name_ref x, %x // CHECK:STDOUT: %.loc19: = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.8] -// CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} -// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18 +// CHECK:STDOUT: %.loc18_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18_23.2 // CHECK:STDOUT: return %Function.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon b/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon index 6878a9a908d5..23d73490d4a8 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon @@ -39,10 +39,10 @@ fn F(T:! type, U:! type) { // CHECK:STDOUT: %U.patt.loc11_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc11_16.1, runtime_param [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc11_7: type = param runtime_param -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc11_17: type = param runtime_param -// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1, %param.loc11_17 [symbolic = %U.loc11_16.2 (constants.%U)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc11_16.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/forward_decl.carbon b/toolchain/check/testdata/function/generic/no_prelude/forward_decl.carbon index 0c7473b94cc0..a34c403513cf 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/forward_decl.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/forward_decl.carbon @@ -28,8 +28,8 @@ fn F(T:! type); // CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon b/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon index 2803c001b5c0..80f212024a43 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon @@ -33,17 +33,20 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: %p.patt: @F.%.loc11_21.2 (%.2) = binding_pattern p // CHECK:STDOUT: %p.param_patt: @F.%.loc11_21.2 (%.2) = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%.loc11_20.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%.loc11_20.2 (%.1) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: %.loc11_20.1: type = ptr_type %T [symbolic = %.loc11_20.2 (constants.%.1)] // CHECK:STDOUT: %.loc11_21.1: type = ptr_type %.1 [symbolic = %.loc11_21.2 (constants.%.2)] // CHECK:STDOUT: %T.ref.loc11_27: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: %.loc11_28: type = ptr_type %T [symbolic = %.loc11_20.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @F.%.loc11_20.2 (%.1) = var -// CHECK:STDOUT: %param.loc11_7: type = param runtime_param -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc11_17: @F.%.loc11_21.2 (%.2) = param runtime_param0 -// CHECK:STDOUT: %p: @F.%.loc11_21.2 (%.2) = bind_name p, %param.loc11_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%.loc11_21.2 (%.2) = param runtime_param0 +// CHECK:STDOUT: %p: @F.%.loc11_21.2 (%.2) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: @F.%.loc11_20.2 (%.1) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%.loc11_20.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon b/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon index f9d3131d1912..092d86bc21a3 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon @@ -32,8 +32,8 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/type_param_scope.carbon b/toolchain/check/testdata/function/generic/no_prelude/type_param_scope.carbon index 443349490c87..b1efd945ce29 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/type_param_scope.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/type_param_scope.carbon @@ -32,14 +32,17 @@ fn F(T:! type, n: T) -> T { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: %n.patt: @F.%T.loc11_6.2 (%T) = binding_pattern n // CHECK:STDOUT: %n.param_patt: @F.%T.loc11_6.2 (%T) = param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%T.loc11_6.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%T.loc11_6.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc11_25: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @F.%T.loc11_6.2 (%T) = var -// CHECK:STDOUT: %param.loc11_7: type = param runtime_param -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc11_17: @F.%T.loc11_6.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %param.loc11_17 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] +// CHECK:STDOUT: %n.param: @F.%T.loc11_6.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %n.param +// CHECK:STDOUT: %return.param: @F.%T.loc11_6.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc11_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/redeclare.carbon b/toolchain/check/testdata/function/generic/redeclare.carbon index 571bf2cdea57..66ea01ec2c7c 100644 --- a/toolchain/check/testdata/function/generic/redeclare.carbon +++ b/toolchain/check/testdata/function/generic/redeclare.carbon @@ -124,22 +124,28 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %F.decl.loc4: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param [symbolic = constants.%T.patt.2] +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)] // CHECK:STDOUT: %.loc4_20.1: type = ptr_type %T [symbolic = %.loc4_20.2 (constants.%.1)] -// CHECK:STDOUT: %return.var.loc4: ref @F.%.loc4_20.2 (%.1) = var -// CHECK:STDOUT: %param.loc4: type = param runtime_param -// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4 [symbolic = %T.loc4_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param.loc4: type = param runtime_param +// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_6.2 (constants.%T)] +// CHECK:STDOUT: %return.param.loc4: @F.%.loc4_20.2 (%.1) = param runtime_param0 +// CHECK:STDOUT: %.loc4_16: ref @F.%.loc4_20.2 (%.1) = return_slot %return.param.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl.loc6: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param [symbolic = constants.%T.patt.2] +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6: type = name_ref T, %T.loc6 [symbolic = constants.%T] -// CHECK:STDOUT: %.loc6: type = ptr_type %T [symbolic = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param.loc6: type = param runtime_param -// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %param.loc6 [symbolic = constants.%T] +// CHECK:STDOUT: %.loc6_20: type = ptr_type %T [symbolic = constants.%.1] +// CHECK:STDOUT: %T.param.loc6: type = param runtime_param +// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %T.param.loc6 [symbolic = constants.%T] +// CHECK:STDOUT: %return.param.loc6: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -220,28 +226,34 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] // CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] +// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)] // CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T [symbolic = %.loc4_30.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var -// CHECK:STDOUT: %param.loc4_7: type = param runtime_param -// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_17: type = param runtime_param -// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U)] +// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %T.patt.loc13_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_6.1, runtime_param [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %U.patt.loc13_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_16.1, runtime_param [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)] +// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)] // CHECK:STDOUT: %.loc13_30.1: type = ptr_type %U [symbolic = %.loc13_30.2 (constants.%.3)] -// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var -// CHECK:STDOUT: %param.loc13_7: type = param runtime_param -// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %param.loc13_7 [symbolic = %T.loc13_6.2 (constants.%T)] -// CHECK:STDOUT: %param.loc13_17: type = param runtime_param -// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %param.loc13_17 [symbolic = %U.loc13_16.2 (constants.%U)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc13_16.2 (constants.%U)] +// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -332,28 +344,34 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] // CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] +// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)] // CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T.1 [symbolic = %.loc4_30.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var -// CHECK:STDOUT: %param.loc4_7: type = param runtime_param -// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T.1)] -// CHECK:STDOUT: %param.loc4_17: type = param runtime_param -// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)] +// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_6.1, runtime_param [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] // CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_16.1, runtime_param [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)] // CHECK:STDOUT: %.loc13_30.1: type = ptr_type %T.2 [symbolic = %.loc13_30.2 (constants.%.3)] -// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var -// CHECK:STDOUT: %param.loc13_7: type = param runtime_param -// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %param.loc13_7 [symbolic = %U.loc13_6.2 (constants.%U.2)] -// CHECK:STDOUT: %param.loc13_17: type = param runtime_param -// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %param.loc13_17 [symbolic = %T.loc13_16.2 (constants.%T.2)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)] +// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -444,28 +462,34 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] // CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] +// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)] // CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T.1 [symbolic = %.loc4_30.2 (constants.%.1)] -// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var -// CHECK:STDOUT: %param.loc4_7: type = param runtime_param -// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T.1)] -// CHECK:STDOUT: %param.loc4_17: type = param runtime_param -// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)] +// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_6.1, runtime_param [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] // CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_16.1, runtime_param [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_6.1 [symbolic = %U.loc13_6.2 (constants.%U.2)] // CHECK:STDOUT: %.loc13_30.1: type = ptr_type %U.2 [symbolic = %.loc13_30.2 (constants.%.3)] -// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var -// CHECK:STDOUT: %param.loc13_7: type = param runtime_param -// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %param.loc13_7 [symbolic = %U.loc13_6.2 (constants.%U.2)] -// CHECK:STDOUT: %param.loc13_17: type = param runtime_param -// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %param.loc13_17 [symbolic = %T.loc13_16.2 (constants.%T.2)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)] +// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0 +// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/resolve_used.carbon b/toolchain/check/testdata/function/generic/resolve_used.carbon index b4fd7d3a2e9f..981549f8de94 100644 --- a/toolchain/check/testdata/function/generic/resolve_used.carbon +++ b/toolchain/check/testdata/function/generic/resolve_used.carbon @@ -59,8 +59,8 @@ fn CallNegative() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+20, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+29, loaded [template = constants.%Int] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,8 +77,8 @@ fn CallNegative() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_23.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_23.2: type = converted %int.make_type_32, %.loc4_23.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param -// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %param [symbolic = %N.loc4_19.2 (constants.%N)] +// CHECK:STDOUT: %N.param: i32 = param runtime_param +// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_19.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallNegative.decl: %CallNegative.type = fn_decl @CallNegative [template = constants.%CallNegative] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index e4f438fbd76b..2b46b1e5fd01 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -74,7 +74,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,8 +89,8 @@ fn G() { // CHECK:STDOUT: %T.patt.loc11_12.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_12.1, runtime_param [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_12.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_12.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_12.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} @@ -105,9 +105,13 @@ fn G() { // CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] {} { +// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] { +// CHECK:STDOUT: %return.patt: @Make.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Make.%T (%T) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc11_12.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @Make.%T (%T) = var +// CHECK:STDOUT: %return.param: @Make.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %return: ref @Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/undefined.carbon b/toolchain/check/testdata/function/generic/undefined.carbon index 650774f9c69b..85d87434b068 100644 --- a/toolchain/check/testdata/function/generic/undefined.carbon +++ b/toolchain/check/testdata/function/generic/undefined.carbon @@ -78,7 +78,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -93,20 +93,27 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_12.1, runtime_param [symbolic = %T.patt.loc4_12.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @Defined.%T.loc4_12.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @Defined.%T.loc4_12.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Defined.%T.loc4_12.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Defined.%T.loc4_12.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_25: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_31: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @Defined.%T.loc4_12.2 (%T) = var -// CHECK:STDOUT: %param.loc4_13: type = param runtime_param -// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %param.loc4_13 [symbolic = %T.loc4_12.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_23: @Defined.%T.loc4_12.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @Defined.%T.loc4_12.2 (%T) = bind_name x, %param.loc4_23 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_12.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @Defined.%T.loc4_12.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @Defined.%T.loc4_12.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @Defined.%T.loc4_12.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Defined.%T.loc4_12.2 (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {} { +// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc8_21.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc8_21.2: type = converted %int.make_type_32, %.loc8_21.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -177,7 +184,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -192,34 +199,44 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10, runtime_param [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %x.patt: %T = binding_pattern x // CHECK:STDOUT: %x.param_patt: %T = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %T = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_25: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_31: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)] -// CHECK:STDOUT: %return.var.loc4: ref @Defined.%T.loc4_12.2 (%T) = var -// CHECK:STDOUT: %param.loc4_13: type = param runtime_param -// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %param.loc4_13 [symbolic = %T.loc4_12.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_23: @Defined.%T.loc4_12.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x.loc4: @Defined.%T.loc4_12.2 (%T) = bind_name x, %param.loc4_23 +// CHECK:STDOUT: %T.param.loc4: type = param runtime_param +// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_12.2 (constants.%T)] +// CHECK:STDOUT: %x.param.loc4: @Defined.%T.loc4_12.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x.loc4: @Defined.%T.loc4_12.2 (%T) = bind_name x, %x.param.loc4 +// CHECK:STDOUT: %return.param.loc4: @Defined.%T.loc4_12.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %.loc4: ref @Defined.%T.loc4_12.2 (%T) = return_slot %return.param.loc4 // CHECK:STDOUT: } -// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {} { +// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_21.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc6_21.2: type = converted %int.make_type_32, %.loc6_21.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Defined.decl.loc10: %Defined.type = fn_decl @Defined [template = constants.%Defined] { // CHECK:STDOUT: %T.patt.loc10: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10, runtime_param [symbolic = constants.%T.patt.2] // CHECK:STDOUT: %x.patt: %T = binding_pattern x // CHECK:STDOUT: %x.param_patt: %T = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %T = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc10_25: type = name_ref T, %T.loc10 [symbolic = constants.%T] // CHECK:STDOUT: %T.ref.loc10_31: type = name_ref T, %T.loc10 [symbolic = constants.%T] -// CHECK:STDOUT: %return: ref %T = var -// CHECK:STDOUT: %param.loc10_13: type = param runtime_param -// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %param.loc10_13 [symbolic = constants.%T] -// CHECK:STDOUT: %param.loc10_23: %T = param runtime_param0 -// CHECK:STDOUT: %x.loc10: %T = bind_name x, %param.loc10_23 +// CHECK:STDOUT: %T.param.loc10: type = param runtime_param +// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %T.param.loc10 [symbolic = constants.%T] +// CHECK:STDOUT: %x.param.loc10: %T = param runtime_param0 +// CHECK:STDOUT: %x.loc10: %T = bind_name x, %x.param.loc10 +// CHECK:STDOUT: %return.param.loc10: %T = param runtime_param1 +// CHECK:STDOUT: %return: ref %T = return_slot %return.param.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -289,7 +306,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -304,20 +321,27 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_14.1, runtime_param [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @Undefined.%T.loc4_14.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @Undefined.%T.loc4_14.2 (%T) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Undefined.%T.loc4_14.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Undefined.%T.loc4_14.2 (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_27: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc4_33: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @Undefined.%T.loc4_14.2 (%T) = var -// CHECK:STDOUT: %param.loc4_15: type = param runtime_param -// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %param.loc4_15 [symbolic = %T.loc4_14.2 (constants.%T)] -// CHECK:STDOUT: %param.loc4_25: @Undefined.%T.loc4_14.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @Undefined.%T.loc4_14.2 (%T) = bind_name x, %param.loc4_25 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_14.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @Undefined.%T.loc4_14.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @Undefined.%T.loc4_14.2 (%T) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @Undefined.%T.loc4_14.2 (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @Undefined.%T.loc4_14.2 (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %CallUndefined.decl: %CallUndefined.type = fn_decl @CallUndefined [template = constants.%CallUndefined] {} { +// CHECK:STDOUT: %CallUndefined.decl: %CallUndefined.type = fn_decl @CallUndefined [template = constants.%CallUndefined] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_23.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc6_23.2: type = converted %int.make_type_32, %.loc6_23.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/global/class_with_fun.carbon b/toolchain/check/testdata/global/class_with_fun.carbon index 8e69572eb865..bd1a4b093aa5 100644 --- a/toolchain/check/testdata/global/class_with_fun.carbon +++ b/toolchain/check/testdata/global/class_with_fun.carbon @@ -50,9 +50,13 @@ var a: A = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} -// CHECK:STDOUT: %ret_a.decl: %ret_a.type = fn_decl @ret_a [template = constants.%ret_a] {} { +// CHECK:STDOUT: %ret_a.decl: %ret_a.type = fn_decl @ret_a [template = constants.%ret_a] { +// CHECK:STDOUT: %return.patt: %A = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %A = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %return: ref %A = var +// CHECK:STDOUT: %return.param: %A = param runtime_param0 +// CHECK:STDOUT: %return: ref %A = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [template = constants.%A] // CHECK:STDOUT: %a.var: ref %A = var a diff --git a/toolchain/check/testdata/global/decl.carbon b/toolchain/check/testdata/global/decl.carbon index 6b791ff41a5c..851ff00dfd0d 100644 --- a/toolchain/check/testdata/global/decl.carbon +++ b/toolchain/check/testdata/global/decl.carbon @@ -29,7 +29,7 @@ var a: i32; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/global/simple_init.carbon b/toolchain/check/testdata/global/simple_init.carbon index c1e98b16b21e..65039dadf03e 100644 --- a/toolchain/check/testdata/global/simple_init.carbon +++ b/toolchain/check/testdata/global/simple_init.carbon @@ -30,7 +30,7 @@ var a: i32 = 0; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/global/simple_with_fun.carbon b/toolchain/check/testdata/global/simple_with_fun.carbon index ea6dc58b59a9..538e991bdc14 100644 --- a/toolchain/check/testdata/global/simple_with_fun.carbon +++ b/toolchain/check/testdata/global/simple_with_fun.carbon @@ -37,7 +37,7 @@ var a: i32 = test_a(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -47,11 +47,15 @@ var a: i32 = test_a(); // CHECK:STDOUT: .a = %a // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %test_a.decl: %test_a.type = fn_decl @test_a [template = constants.%test_a] {} { +// CHECK:STDOUT: %test_a.decl: %test_a.type = fn_decl @test_a [template = constants.%test_a] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_16.2: type = converted %int.make_type_32, %.loc11_16.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_8.1: type = value_of_initializer %int.make_type_32 [template = i32] diff --git a/toolchain/check/testdata/if/else.carbon b/toolchain/check/testdata/if/else.carbon index 60a845f275c1..07f0b48a7ceb 100644 --- a/toolchain/check/testdata/if/else.carbon +++ b/toolchain/check/testdata/if/else.carbon @@ -49,7 +49,7 @@ fn If(b: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -71,8 +71,8 @@ fn If(b: bool) { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc15_10.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc15_10.2: type = converted %bool.make_type, %.loc15_10.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon b/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon index ce41c17660fd..5d1080e5a55e 100644 --- a/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon +++ b/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon @@ -70,8 +70,8 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,6 +85,8 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: %If1.decl: %If1.type = fn_decl @If1 [template = constants.%If1] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %bool.make_type [template = bool] @@ -92,13 +94,16 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_20.2: type = converted %int.make_type_32, %.loc11_20.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %If2.decl: %If2.type = fn_decl @If2 [template = constants.%If2] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc22_11.1: type = value_of_initializer %bool.make_type [template = bool] @@ -106,13 +111,16 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc22_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc22_20.2: type = converted %int.make_type_32, %.loc22_20.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %If3.decl: %If3.type = fn_decl @If3 [template = constants.%If3] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc33_11.1: type = value_of_initializer %bool.make_type [template = bool] @@ -120,9 +128,10 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc33_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc33_20.2: type = converted %int.make_type_32, %.loc33_20.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if/fail_scope.carbon b/toolchain/check/testdata/if/fail_scope.carbon index 20cafe98d714..7d8cd0919d0c 100644 --- a/toolchain/check/testdata/if/fail_scope.carbon +++ b/toolchain/check/testdata/if/fail_scope.carbon @@ -45,8 +45,8 @@ fn VarScope(b: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,6 +58,8 @@ fn VarScope(b: bool) -> i32 { // CHECK:STDOUT: %VarScope.decl: %VarScope.type = fn_decl @VarScope [template = constants.%VarScope] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_16.1: type = value_of_initializer %bool.make_type [template = bool] @@ -65,9 +67,10 @@ fn VarScope(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_25.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_25.2: type = converted %int.make_type_32.loc11, %.loc11_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if/no_else.carbon b/toolchain/check/testdata/if/no_else.carbon index fad00900e88b..7a62e3701cbb 100644 --- a/toolchain/check/testdata/if/no_else.carbon +++ b/toolchain/check/testdata/if/no_else.carbon @@ -44,7 +44,7 @@ fn If(b: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -64,8 +64,8 @@ fn If(b: bool) { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_10.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc14_10.2: type = converted %bool.make_type, %.loc14_10.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if/unreachable_fallthrough.carbon b/toolchain/check/testdata/if/unreachable_fallthrough.carbon index 555bdbcafdcc..823c73966c03 100644 --- a/toolchain/check/testdata/if/unreachable_fallthrough.carbon +++ b/toolchain/check/testdata/if/unreachable_fallthrough.carbon @@ -44,8 +44,8 @@ fn If(b: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -57,6 +57,8 @@ fn If(b: bool) -> i32 { // CHECK:STDOUT: %If.decl: %If.type = fn_decl @If [template = constants.%If] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_10.1: type = value_of_initializer %bool.make_type [template = bool] @@ -64,9 +66,10 @@ fn If(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index fc7cdf4a6d55..04c0b187d945 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -44,8 +44,8 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,6 +61,8 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param1 // CHECK:STDOUT: %m.patt: i32 = binding_pattern m // CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %bool.make_type [template = bool] @@ -74,13 +76,14 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc11_34: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_34.1: type = value_of_initializer %int.make_type_32.loc11_34 [template = i32] // CHECK:STDOUT: %.loc11_34.2: type = converted %int.make_type_32.loc11_34, %.loc11_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11_7: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param.loc11_7 -// CHECK:STDOUT: %param.loc11_16: i32 = param runtime_param1 -// CHECK:STDOUT: %n: i32 = bind_name n, %param.loc11_16 -// CHECK:STDOUT: %param.loc11_24: i32 = param runtime_param2 -// CHECK:STDOUT: %m: i32 = bind_name m, %param.loc11_24 +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %n.param: i32 = param runtime_param1 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param +// CHECK:STDOUT: %m.param: i32 = param runtime_param2 +// CHECK:STDOUT: %m: i32 = bind_name m, %m.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/constant_condition.carbon b/toolchain/check/testdata/if_expr/constant_condition.carbon index 09817598a3bc..0a60f824173d 100644 --- a/toolchain/check/testdata/if_expr/constant_condition.carbon +++ b/toolchain/check/testdata/if_expr/constant_condition.carbon @@ -68,7 +68,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -82,46 +82,69 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: .PartiallyConstant = %PartiallyConstant.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} { +// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {} { +// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_11.2: type = converted %int.make_type_32, %.loc12_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_11.2: type = converted %int.make_type_32, %.loc14_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc18_11.2: type = converted %int.make_type_32, %.loc18_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Constant.decl: %Constant.type = fn_decl @Constant [template = constants.%Constant] {} { +// CHECK:STDOUT: %Constant.decl: %Constant.type = fn_decl @Constant [template = constants.%Constant] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc22_18.1: type = value_of_initializer %int.make_type_32.loc22 [template = i32] // CHECK:STDOUT: %.loc22_18.2: type = converted %int.make_type_32.loc22, %.loc22_18.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %PartiallyConstant.decl: %PartiallyConstant.type = fn_decl @PartiallyConstant [template = constants.%PartiallyConstant] { // CHECK:STDOUT: %t.patt: type = binding_pattern t // CHECK:STDOUT: %t.param_patt: type = param_pattern %t.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc28: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc28_34.1: type = value_of_initializer %int.make_type_32.loc28 [template = i32] // CHECK:STDOUT: %.loc28_34.2: type = converted %int.make_type_32.loc28, %.loc28_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: type = param runtime_param0 -// CHECK:STDOUT: %t: type = bind_name t, %param +// CHECK:STDOUT: %t.param: type = param runtime_param0 +// CHECK:STDOUT: %t: type = bind_name t, %t.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/control_flow.carbon b/toolchain/check/testdata/if_expr/control_flow.carbon index 16aab7d3ad98..1e5e3b4fdcc1 100644 --- a/toolchain/check/testdata/if_expr/control_flow.carbon +++ b/toolchain/check/testdata/if_expr/control_flow.carbon @@ -46,8 +46,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,21 +58,31 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} { +// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {} { +// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc12_11.2: type = converted %int.make_type_32, %.loc12_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_9.1: type = value_of_initializer %bool.make_type [template = bool] @@ -80,9 +90,10 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_18.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_18.2: type = converted %int.make_type_32, %.loc14_18.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon index 9153ee023c0e..b8e3db7b44af 100644 --- a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon +++ b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon @@ -68,8 +68,8 @@ class C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon index 5e502bbd3027..6aba6f060eb1 100644 --- a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon +++ b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon @@ -65,8 +65,8 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -82,8 +82,8 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc4_30.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc4_30.2: type = converted %bool.make_type, %.loc4_30.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -142,7 +142,7 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -155,8 +155,8 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: %t.patt: type = binding_pattern t // CHECK:STDOUT: %t.param_patt: type = param_pattern %t.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param0 -// CHECK:STDOUT: %t: type = bind_name t, %param +// CHECK:STDOUT: %t.param: type = param runtime_param0 +// CHECK:STDOUT: %t: type = bind_name t, %t.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/nested.carbon b/toolchain/check/testdata/if_expr/nested.carbon index 951c4c8023d5..c7bf019aea6c 100644 --- a/toolchain/check/testdata/if_expr/nested.carbon +++ b/toolchain/check/testdata/if_expr/nested.carbon @@ -41,8 +41,8 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,6 +58,8 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: %c.patt: bool = binding_pattern c // CHECK:STDOUT: %c.param_patt: bool = param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param3 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc11_9: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %bool.make_type.loc11_9 [template = bool] @@ -71,13 +73,14 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_36.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_36.2: type = converted %int.make_type_32, %.loc11_36.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc11_7: bool = param runtime_param0 -// CHECK:STDOUT: %a: bool = bind_name a, %param.loc11_7 -// CHECK:STDOUT: %param.loc11_16: bool = param runtime_param1 -// CHECK:STDOUT: %b: bool = bind_name b, %param.loc11_16 -// CHECK:STDOUT: %param.loc11_25: bool = param runtime_param2 -// CHECK:STDOUT: %c: bool = bind_name c, %param.loc11_25 +// CHECK:STDOUT: %a.param: bool = param runtime_param0 +// CHECK:STDOUT: %a: bool = bind_name a, %a.param +// CHECK:STDOUT: %b.param: bool = param runtime_param1 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %c.param: bool = param runtime_param2 +// CHECK:STDOUT: %c: bool = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param3 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/struct.carbon b/toolchain/check/testdata/if_expr/struct.carbon index beffeec5cf06..81afba0c0bed 100644 --- a/toolchain/check/testdata/if_expr/struct.carbon +++ b/toolchain/check/testdata/if_expr/struct.carbon @@ -47,8 +47,8 @@ fn F(cond: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -69,8 +69,8 @@ fn F(cond: bool) { // CHECK:STDOUT: %.loc11_23.1: type = value_of_initializer %int.make_type_32.loc11_23 [template = i32] // CHECK:STDOUT: %.loc11_23.2: type = converted %int.make_type_32.loc11_23, %.loc11_23.1 [template = i32] // CHECK:STDOUT: %.loc11_26: type = struct_type {.a: i32, .b: i32} [template = constants.%.2] -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %s: %.2 = bind_name s, %param +// CHECK:STDOUT: %s.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %s: %.2 = bind_name s, %s.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %cond.patt: bool = binding_pattern cond @@ -79,8 +79,8 @@ fn F(cond: bool) { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc13_12.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc13_12.2: type = converted %bool.make_type, %.loc13_12.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %cond: bool = bind_name cond, %param +// CHECK:STDOUT: %cond.param: bool = param runtime_param0 +// CHECK:STDOUT: %cond: bool = bind_name cond, %cond.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index d052622b5e83..d4b1c91ebce6 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -78,7 +78,7 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -105,8 +105,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_23.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc21_23.2: type = converted %int.make_type_32, %.loc21_23.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [template = constants.%InstanceCall] { // CHECK:STDOUT: %n.patt: i32 = binding_pattern n @@ -115,8 +115,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc25_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc25_20.2: type = converted %int.make_type_32, %.loc25_20.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: %NonInstanceCallIndirect.decl: %NonInstanceCallIndirect.type = fn_decl @NonInstanceCallIndirect [template = constants.%NonInstanceCallIndirect] { // CHECK:STDOUT: %p.patt: %.7 = binding_pattern p @@ -126,8 +126,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %.loc29_34.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc29_34.2: type = converted %int.make_type_32, %.loc29_34.1 [template = i32] // CHECK:STDOUT: %.loc29_34.3: type = ptr_type i32 [template = constants.%.7] -// CHECK:STDOUT: %param: %.7 = param runtime_param0 -// CHECK:STDOUT: %p: %.7 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %p: %.7 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %InstanceCallIndirect.decl: %InstanceCallIndirect.type = fn_decl @InstanceCallIndirect [template = constants.%InstanceCallIndirect] { // CHECK:STDOUT: %p.patt: %.7 = binding_pattern p @@ -137,8 +137,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %.loc33_31.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc33_31.2: type = converted %int.make_type_32, %.loc33_31.1 [template = i32] // CHECK:STDOUT: %.loc33_31.3: type = ptr_type i32 [template = constants.%.7] -// CHECK:STDOUT: %param: %.7 = param runtime_param0 -// CHECK:STDOUT: %p: %.7 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.7 = param runtime_param0 +// CHECK:STDOUT: %p: %.7 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -153,8 +153,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc13_14.1: type = facet_type_access %Self.ref [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc13_14.2: type = converted %Self.ref, %.loc13_14.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %param: @G.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @G.1.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @G.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @G.1.%Self (%Self) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: %.4 = assoc_entity element1, %G.decl [template = constants.%.5] // CHECK:STDOUT: @@ -174,8 +174,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc18_14.2: type = converted %int.make_type_32, %.loc18_14.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %self: i32 = bind_name self, %param +// CHECK:STDOUT: %self.param: i32 = param runtime_param0 +// CHECK:STDOUT: %self: i32 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16_20: = interface_witness (%F.decl, %G.decl) [template = constants.%.6] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/declaration.carbon b/toolchain/check/testdata/impl/declaration.carbon index f5199e042bd6..cdb63e4f4ed8 100644 --- a/toolchain/check/testdata/impl/declaration.carbon +++ b/toolchain/check/testdata/impl/declaration.carbon @@ -34,7 +34,7 @@ impl i32 as I; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/empty.carbon b/toolchain/check/testdata/impl/empty.carbon index af0028a73b52..f278612ec1bc 100644 --- a/toolchain/check/testdata/impl/empty.carbon +++ b/toolchain/check/testdata/impl/empty.carbon @@ -37,7 +37,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/extend_impl.carbon b/toolchain/check/testdata/impl/extend_impl.carbon index 1052d9f8a0ee..d98560585369 100644 --- a/toolchain/check/testdata/impl/extend_impl.carbon +++ b/toolchain/check/testdata/impl/extend_impl.carbon @@ -72,8 +72,8 @@ fn G(c: C) { // CHECK:STDOUT: %c.param_patt: %C = param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_call_invalid.carbon b/toolchain/check/testdata/impl/fail_call_invalid.carbon index fc7ed4bae542..c25df3d025c2 100644 --- a/toolchain/check/testdata/impl/fail_call_invalid.carbon +++ b/toolchain/check/testdata/impl/fail_call_invalid.carbon @@ -53,7 +53,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,8 +77,8 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc22_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc22_20.2: type = converted %int.make_type_32, %.loc22_20.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -91,8 +91,8 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_14.1: type = facet_type_access %Self.ref [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref, %.loc12_14.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %param: @G.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @G.1.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @G.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @G.1.%Self (%Self) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %G.decl [template = constants.%.3] // CHECK:STDOUT: @@ -108,8 +108,8 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %self.param_patt: = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Undeclared.ref: = name_ref Undeclared, [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %self: = bind_name self, %param +// CHECK:STDOUT: %self.param: = param runtime_param0 +// CHECK:STDOUT: %self: = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15_20: = interface_witness () [template = ] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon index 0bba438f72c1..dfb5f0f8ff63 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -68,8 +68,8 @@ class C { // CHECK:STDOUT: %T.patt.loc11_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_28.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_28.1, runtime_param [symbolic = %T.patt.loc11_28.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_28.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_28.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_28.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: } @@ -93,8 +93,8 @@ class C { // CHECK:STDOUT: %x.param_patt: @F.1.%T (%T) = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @GenericInterface.%T.loc11_28.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %param: @F.1.%T (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @F.1.%T (%T) = bind_name x, %param +// CHECK:STDOUT: %x.param: @F.1.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @F.1.%T (%T) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12_13.1: @GenericInterface.%.loc12_13.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc12_13.3 (constants.%.3)] // CHECK:STDOUT: @@ -121,8 +121,8 @@ class C { // CHECK:STDOUT: %x.param_patt: @F.2.%T (%T) = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @impl.%T.loc19_23.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %param: @F.2.%T (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @F.2.%T (%T) = bind_name x, %param +// CHECK:STDOUT: %x.param: @F.2.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @F.2.%T (%T) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19_56.1: = interface_witness (%F.decl) [symbolic = %.loc19_56.2 (constants.%.4)] // CHECK:STDOUT: @@ -141,8 +141,8 @@ class C { // CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.1 = name_ref GenericInterface, file.%GenericInterface.decl [template = constants.%GenericInterface] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc19_23.1 [symbolic = %T.loc19_23.2 (constants.%T)] // CHECK:STDOUT: %GenericInterface.type.loc19_52.1: type = interface_type @GenericInterface, @GenericInterface(constants.%T) [symbolic = %GenericInterface.type.loc19_52.2 (constants.%GenericInterface.type.2)] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc19_23.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc19_23.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc19_23.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_23.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = complete_type_witness %.5 [template = constants.%.6] // 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 453353292f8f..8a8793084d62 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -38,7 +38,7 @@ extend impl i32 as I {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon index 3a7774a92b7e..0260c7752b01 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon @@ -67,7 +67,7 @@ class E { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon index c787d2dea43d..4b7b057cac1f 100644 --- a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon @@ -38,7 +38,7 @@ class C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon index 60bc7391c239..a19070e42f92 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_const.carbon @@ -39,7 +39,7 @@ impl bool as I {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { 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 f7e06ad76931..689d9fee53da 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -314,8 +314,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -381,6 +381,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %self.param_patt: bool = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc93_26: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc93_26.1: type = value_of_initializer %bool.make_type.loc93_26 [template = bool] @@ -391,11 +393,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc93_44: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc93_44.1: type = value_of_initializer %bool.make_type.loc93_44 [template = bool] // CHECK:STDOUT: %.loc93_44.2: type = converted %bool.make_type.loc93_44, %.loc93_44.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc93_24: bool = param runtime_param0 -// CHECK:STDOUT: %self: bool = bind_name self, %param.loc93_24 -// CHECK:STDOUT: %param.loc93_33: bool = param runtime_param1 -// CHECK:STDOUT: %b: bool = bind_name b, %param.loc93_33 +// CHECK:STDOUT: %self.param: bool = param runtime_param0 +// CHECK:STDOUT: %self: bool = bind_name self, %self.param +// CHECK:STDOUT: %b.param: bool = param runtime_param1 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc93: %.6 = assoc_entity element0, %F.decl [template = constants.%.7] // CHECK:STDOUT: @@ -410,6 +413,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %F.decl: %F.type.13 = fn_decl @F.13 [template = constants.%F.14] { // CHECK:STDOUT: %x.patt: @F.13.%.loc188_38.1 (%.11) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @F.13.%.loc188_38.1 (%.11) = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.13.%.loc188_52.1 (%.13) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.13.%.loc188_52.1 (%.13) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc188_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.3)] // CHECK:STDOUT: %.loc188_16.2: type = facet_type_access %Self.ref.loc188_12 [symbolic = %Self (constants.%Self.3)] @@ -429,9 +434,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %.loc188_45.1: type = facet_type_access %Self.ref.loc188_45 [symbolic = %Self (constants.%Self.3)] // CHECK:STDOUT: %.loc188_45.2: type = converted %Self.ref.loc188_45, %.loc188_45.1 [symbolic = %Self (constants.%Self.3)] // CHECK:STDOUT: %.loc188_52.2: type = array_type %.loc188_51, %Self.3 [symbolic = %.loc188_52.1 (constants.%.13)] -// CHECK:STDOUT: %return: ref @F.13.%.loc188_52.1 (%.13) = var -// CHECK:STDOUT: %param: @F.13.%.loc188_38.1 (%.11) = param runtime_param0 -// CHECK:STDOUT: %x: @F.13.%.loc188_38.1 (%.11) = bind_name x, %param +// CHECK:STDOUT: %x.param: @F.13.%.loc188_38.1 (%.11) = param runtime_param0 +// CHECK:STDOUT: %x: @F.13.%.loc188_38.1 (%.11) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @F.13.%.loc188_52.1 (%.13) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.13.%.loc188_52.1 (%.13) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc188: %.14 = assoc_entity element0, %F.decl [template = constants.%.15] // CHECK:STDOUT: @@ -475,8 +481,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc62_13.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc62_13.2: type = converted %bool.make_type, %.loc62_13.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc54: = interface_witness () [template = ] // CHECK:STDOUT: @@ -491,8 +497,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %self.param_patt: %FExtraImplicitParam = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [template = constants.%FExtraImplicitParam] -// CHECK:STDOUT: %param: %FExtraImplicitParam = param runtime_param0 -// CHECK:STDOUT: %self: %FExtraImplicitParam = bind_name self, %param +// CHECK:STDOUT: %self.param: %FExtraImplicitParam = param runtime_param0 +// CHECK:STDOUT: %self: %FExtraImplicitParam = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc67: = interface_witness () [template = ] // CHECK:STDOUT: @@ -502,11 +508,15 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.6: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.4 = fn_decl @F.4 [template = constants.%F.5] {} { +// CHECK:STDOUT: %F.decl: %F.type.4 = fn_decl @F.4 [template = constants.%F.5] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc89_15.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc89_15.2: type = converted %bool.make_type, %.loc89_15.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc81: = interface_witness () [template = ] // CHECK:STDOUT: @@ -519,6 +529,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %F.decl: %F.type.6 = fn_decl @F.6 [template = constants.%F.7] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc104_16: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc104_16.1: type = value_of_initializer %bool.make_type.loc104_16 [template = bool] @@ -526,9 +538,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc104_27: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc104_27.1: type = value_of_initializer %bool.make_type.loc104_27 [template = bool] // CHECK:STDOUT: %.loc104_27.2: type = converted %bool.make_type.loc104_27, %.loc104_27.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %self: bool = bind_name self, %param +// CHECK:STDOUT: %self.param: bool = param runtime_param0 +// CHECK:STDOUT: %self: bool = bind_name self, %self.param +// CHECK:STDOUT: %return.param: bool = param runtime_param1 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc96: = interface_witness () [template = ] // CHECK:STDOUT: @@ -541,6 +554,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %F.decl: %F.type.7 = fn_decl @F.7 [template = constants.%F.8] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc117_13: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc117_13.1: type = value_of_initializer %bool.make_type.loc117_13 [template = bool] @@ -548,9 +563,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc117_22: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc117_22.1: type = value_of_initializer %bool.make_type.loc117_22 [template = bool] // CHECK:STDOUT: %.loc117_22.2: type = converted %bool.make_type.loc117_22, %.loc117_22.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param1 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc109: = interface_witness () [template = ] // CHECK:STDOUT: @@ -572,10 +588,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc130_25: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc130_25.1: type = value_of_initializer %bool.make_type.loc130_25 [template = bool] // CHECK:STDOUT: %.loc130_25.2: type = converted %bool.make_type.loc130_25, %.loc130_25.1 [template = bool] -// CHECK:STDOUT: %param.loc130_14: bool = param runtime_param0 -// CHECK:STDOUT: %self: bool = bind_name self, %param.loc130_14 -// CHECK:STDOUT: %param.loc130_23: bool = param runtime_param1 -// CHECK:STDOUT: %b: bool = bind_name b, %param.loc130_23 +// CHECK:STDOUT: %self.param: bool = param runtime_param0 +// CHECK:STDOUT: %self: bool = bind_name self, %self.param +// CHECK:STDOUT: %b.param: bool = param runtime_param1 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc122: = interface_witness () [template = ] // CHECK:STDOUT: @@ -590,6 +606,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %self.param_patt: bool = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %FDifferentParamType = binding_pattern b // CHECK:STDOUT: %b.param_patt: %FDifferentParamType = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc143_16: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc143_16.1: type = value_of_initializer %bool.make_type.loc143_16 [template = bool] @@ -598,11 +616,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc143_34: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc143_34.1: type = value_of_initializer %bool.make_type.loc143_34 [template = bool] // CHECK:STDOUT: %.loc143_34.2: type = converted %bool.make_type.loc143_34, %.loc143_34.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc143_14: bool = param runtime_param0 -// CHECK:STDOUT: %self: bool = bind_name self, %param.loc143_14 -// CHECK:STDOUT: %param.loc143_23: %FDifferentParamType = param runtime_param1 -// CHECK:STDOUT: %b: %FDifferentParamType = bind_name b, %param.loc143_23 +// CHECK:STDOUT: %self.param: bool = param runtime_param0 +// CHECK:STDOUT: %self: bool = bind_name self, %self.param +// CHECK:STDOUT: %b.param: %FDifferentParamType = param runtime_param1 +// CHECK:STDOUT: %b: %FDifferentParamType = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc135: = interface_witness () [template = ] // CHECK:STDOUT: @@ -617,6 +636,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %self.param_patt: %FDifferentImplicitParamType = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [template = constants.%FDifferentImplicitParamType] // CHECK:STDOUT: %bool.make_type.loc156_25: init type = call constants.%Bool() [template = bool] @@ -625,11 +646,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc156_34: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc156_34.1: type = value_of_initializer %bool.make_type.loc156_34 [template = bool] // CHECK:STDOUT: %.loc156_34.2: type = converted %bool.make_type.loc156_34, %.loc156_34.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc156_14: %FDifferentImplicitParamType = param runtime_param0 -// CHECK:STDOUT: %self: %FDifferentImplicitParamType = bind_name self, %param.loc156_14 -// CHECK:STDOUT: %param.loc156_23: bool = param runtime_param1 -// CHECK:STDOUT: %b: bool = bind_name b, %param.loc156_23 +// CHECK:STDOUT: %self.param: %FDifferentImplicitParamType = param runtime_param0 +// CHECK:STDOUT: %self: %FDifferentImplicitParamType = bind_name self, %self.param +// CHECK:STDOUT: %b.param: bool = param runtime_param1 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc148: = interface_witness () [template = ] // CHECK:STDOUT: @@ -644,6 +666,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %self.param_patt: bool = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %FDifferentReturnType = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %FDifferentReturnType = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc169_16: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc169_16.1: type = value_of_initializer %bool.make_type.loc169_16 [template = bool] @@ -652,11 +676,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %.loc169_25.1: type = value_of_initializer %bool.make_type.loc169_25 [template = bool] // CHECK:STDOUT: %.loc169_25.2: type = converted %bool.make_type.loc169_25, %.loc169_25.1 [template = bool] // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [template = constants.%FDifferentReturnType] -// CHECK:STDOUT: %return: ref %FDifferentReturnType = var -// CHECK:STDOUT: %param.loc169_14: bool = param runtime_param0 -// CHECK:STDOUT: %self: bool = bind_name self, %param.loc169_14 -// CHECK:STDOUT: %param.loc169_23: bool = param runtime_param1 -// CHECK:STDOUT: %b: bool = bind_name b, %param.loc169_23 +// CHECK:STDOUT: %self.param: bool = param runtime_param0 +// CHECK:STDOUT: %self: bool = bind_name self, %self.param +// CHECK:STDOUT: %b.param: bool = param runtime_param1 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %FDifferentReturnType = param runtime_param2 +// CHECK:STDOUT: %return: ref %FDifferentReturnType = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc161: = interface_witness () [template = ] // CHECK:STDOUT: @@ -671,6 +696,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %self.param_patt: bool = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %not_b.patt: bool = binding_pattern not_b // CHECK:STDOUT: %not_b.param_patt: bool = param_pattern %not_b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc183_16: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc183_16.1: type = value_of_initializer %bool.make_type.loc183_16 [template = bool] @@ -681,11 +708,12 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %bool.make_type.loc183_38: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc183_38.1: type = value_of_initializer %bool.make_type.loc183_38 [template = bool] // CHECK:STDOUT: %.loc183_38.2: type = converted %bool.make_type.loc183_38, %.loc183_38.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc183_14: bool = param runtime_param0 -// CHECK:STDOUT: %self: bool = bind_name self, %param.loc183_14 -// CHECK:STDOUT: %param.loc183_27: bool = param runtime_param1 -// CHECK:STDOUT: %not_b: bool = bind_name not_b, %param.loc183_27 +// CHECK:STDOUT: %self.param: bool = param runtime_param0 +// CHECK:STDOUT: %self: bool = bind_name self, %self.param +// CHECK:STDOUT: %not_b.param: bool = param runtime_param1 +// CHECK:STDOUT: %not_b: bool = bind_name not_b, %not_b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc175: = interface_witness () [template = ] // CHECK:STDOUT: @@ -698,6 +726,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %F.decl: %F.type.14 = fn_decl @F.14 [template = constants.%F.15] { // CHECK:STDOUT: %x.patt: %.18 = binding_pattern x // CHECK:STDOUT: %x.param_patt: %.18 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.19 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.19 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_14: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam] // CHECK:STDOUT: %.loc200_32: type = ptr_type %SelfNestedBadParam [template = constants.%.16] @@ -713,9 +743,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_60: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam] // CHECK:STDOUT: %.loc200_80: i32 = int_literal 4 [template = constants.%.12] // CHECK:STDOUT: %.loc200_81: type = array_type %.loc200_80, %SelfNestedBadParam [template = constants.%.19] -// CHECK:STDOUT: %return: ref %.19 = var -// CHECK:STDOUT: %param: %.18 = param runtime_param0 -// CHECK:STDOUT: %x: %.18 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.18 = param runtime_param0 +// CHECK:STDOUT: %x: %.18 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %.19 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.19 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc192: = interface_witness () [template = ] // CHECK:STDOUT: @@ -728,6 +759,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %F.decl: %F.type.15 = fn_decl @F.15 [template = constants.%F.16] { // CHECK:STDOUT: %x.patt: %.24 = binding_pattern x // CHECK:STDOUT: %x.param_patt: %.24 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.19 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.19 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc212_14: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [template = constants.%SelfNestedBadReturnType] // CHECK:STDOUT: %.loc212_37: type = ptr_type %SelfNestedBadReturnType [template = constants.%.22] @@ -741,9 +774,10 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNestedBadParam.ref: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam] // CHECK:STDOUT: %.loc212_105: i32 = int_literal 4 [template = constants.%.12] // CHECK:STDOUT: %.loc212_106: type = array_type %.loc212_105, %SelfNestedBadParam [template = constants.%.19] -// CHECK:STDOUT: %return: ref %.19 = var -// CHECK:STDOUT: %param: %.24 = param runtime_param0 -// CHECK:STDOUT: %x: %.24 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.24 = param runtime_param0 +// CHECK:STDOUT: %x: %.24 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %.19 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.19 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc205: = interface_witness () [template = ] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon index db4a4cfba1d0..2f362f0b17d5 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon @@ -59,13 +59,13 @@ impl i32 as false {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/fail_redefinition.carbon b/toolchain/check/testdata/impl/fail_redefinition.carbon index 8a18d05c0318..f5f324aeb210 100644 --- a/toolchain/check/testdata/impl/fail_redefinition.carbon +++ b/toolchain/check/testdata/impl/fail_redefinition.carbon @@ -43,7 +43,7 @@ impl i32 as I {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/fail_todo_impl_assoc_const.carbon b/toolchain/check/testdata/impl/fail_todo_impl_assoc_const.carbon index 39f06510d40d..e4544fdbd2ce 100644 --- a/toolchain/check/testdata/impl/fail_todo_impl_assoc_const.carbon +++ b/toolchain/check/testdata/impl/fail_todo_impl_assoc_const.carbon @@ -65,13 +65,13 @@ impl bool as I where .T = bool {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/impl_forall.carbon b/toolchain/check/testdata/impl/impl_forall.carbon index a3b113da4ca3..e50b368761e0 100644 --- a/toolchain/check/testdata/impl/impl_forall.carbon +++ b/toolchain/check/testdata/impl/impl_forall.carbon @@ -59,8 +59,8 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T)] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc15_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc15_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc15_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/alias.carbon b/toolchain/check/testdata/impl/lookup/alias.carbon index dba0cf8d1706..b1a014e416d3 100644 --- a/toolchain/check/testdata/impl/lookup/alias.carbon +++ b/toolchain/check/testdata/impl/lookup/alias.carbon @@ -78,8 +78,8 @@ fn G(c: C) { // CHECK:STDOUT: %c.param_patt: %C = param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc23: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon b/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon index a41a3835fa74..2b188d97d179 100644 --- a/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon @@ -74,8 +74,8 @@ fn F(c: C) { // CHECK:STDOUT: %c.param_patt: %C = param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon index fd128c947563..7857abf8bda6 100644 --- a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon @@ -63,7 +63,7 @@ impl C as I { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -76,11 +76,15 @@ impl C as I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} { +// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc19_11.2: type = converted %int.make_type_32, %.loc19_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index daf2b65acf27..9c1613b40ecc 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -172,8 +172,8 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %.5 = binding_pattern x @@ -181,8 +181,8 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_10.1: %.5 = struct_literal () // CHECK:STDOUT: %.loc12_10.2: type = converted %.loc12_10.1, constants.%.5 [template = constants.%.5] -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %x: %.5 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %x: %.5 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -327,20 +327,23 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %.5 = binding_pattern x // CHECK:STDOUT: %x.param_patt: %.5 = param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.5 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.5 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_10.1: %.5 = struct_literal () // CHECK:STDOUT: %.loc12_10.2: type = converted %.loc12_10.1, constants.%.5 [template = constants.%.5] // CHECK:STDOUT: %.loc12_17.1: %.5 = struct_literal () // CHECK:STDOUT: %.loc12_17.2: type = converted %.loc12_17.1, constants.%.5 [template = constants.%.5] -// CHECK:STDOUT: %return: ref %.5 = var -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %x: %.5 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %x: %.5 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %.5 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.5 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -349,6 +352,8 @@ fn G(x: A) { // CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { // CHECK:STDOUT: %self.patt: @F.1.%Self (%Self) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self (%Self) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.1.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.1.%Self (%Self) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_14: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc5_14.1: type = facet_type_access %Self.ref.loc5_14 [symbolic = %Self (constants.%Self)] @@ -356,9 +361,10 @@ fn G(x: A) { // CHECK:STDOUT: %Self.ref.loc5_25: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc5_25.1: type = facet_type_access %Self.ref.loc5_25 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc5_25.2: type = converted %Self.ref.loc5_25, %.loc5_25.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @F.1.%Self (%Self) = var -// CHECK:STDOUT: %param: @F.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @F.1.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.1.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: @@ -381,12 +387,15 @@ fn G(x: A) { // CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] { // CHECK:STDOUT: %self.patt: @F.2.%T (%T) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.2.%T (%T) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.2.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.2.%T (%T) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%T.ref [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.ref: type = name_ref T, @impl.%T.loc8_14.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @F.2.%T (%T) = var -// CHECK:STDOUT: %param: @F.2.%T (%T) = param runtime_param0 -// CHECK:STDOUT: %self: @F.2.%T (%T) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.2.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %self: @F.2.%T (%T) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @F.2.%T (%T) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.2.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8_34.1: = interface_witness (%F.decl) [symbolic = %.loc8_34.2 (constants.%.4)] // CHECK:STDOUT: @@ -530,8 +539,8 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_9.1, runtime_param [symbolic = %T.patt.loc8_9.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl [template] { // CHECK:STDOUT: %T.patt.loc10_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_14.2 (constants.%T.patt.2)] @@ -541,8 +550,8 @@ fn G(x: A) { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)] // CHECK:STDOUT: %C.loc10_25.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_25.2 (constants.%C.2)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc10_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %C.3 = binding_pattern x @@ -552,8 +561,8 @@ fn G(x: A) { // CHECK:STDOUT: %.loc14_12: %.4 = struct_literal () // CHECK:STDOUT: %.loc14_10: type = converted %.loc14_12, constants.%.4 [template = constants.%.4] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%.4) [template = constants.%C.3] -// CHECK:STDOUT: %param: %C.3 = param runtime_param0 -// CHECK:STDOUT: %x: %C.3 = bind_name x, %param +// CHECK:STDOUT: %x.param: %C.3 = param runtime_param0 +// CHECK:STDOUT: %x: %C.3 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -738,8 +747,8 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_16.1, runtime_param [symbolic = %T.patt.loc4_16.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_16.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl [template] { // CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt.2)] @@ -750,8 +759,8 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %HasF.type.loc8_34.1: type = interface_type @HasF, @HasF(constants.%T) [symbolic = %HasF.type.loc8_34.2 (constants.%HasF.type.2)] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %.4 = binding_pattern x @@ -759,8 +768,8 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_10.1: %.4 = struct_literal () // CHECK:STDOUT: %.loc12_10.2: type = converted %.loc12_10.1, constants.%.4 [template = constants.%.4] -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %x: %.4 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %x: %.4 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -962,10 +971,10 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc9_14.1 [symbolic = %T.loc9_14.2 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] -// CHECK:STDOUT: %param.loc9_15: type = param runtime_param -// CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0, %param.loc9_15 [symbolic = %T.loc9_14.2 (constants.%T)] -// CHECK:STDOUT: %param.loc9_25: type = param runtime_param -// CHECK:STDOUT: %U.loc9_24.1: type = bind_symbolic_name U, 1, %param.loc9_25 [symbolic = %U.loc9_24.2 (constants.%U)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_14.2 (constants.%T)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc9_24.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc9_24.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %.5 = binding_pattern x @@ -973,8 +982,8 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_10.1: %.5 = struct_literal () // CHECK:STDOUT: %.loc13_10.2: type = converted %.loc13_10.1, constants.%.5 [template = constants.%.5] -// CHECK:STDOUT: %param: %.5 = param runtime_param0 -// CHECK:STDOUT: %x: %.5 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %x: %.5 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1115,8 +1124,8 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_16.1, runtime_param [symbolic = %T.patt.loc4_16.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_16.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl [template] { // CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt.2)] @@ -1126,8 +1135,8 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF] // CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %HasF.type.loc8_33.1: type = interface_type @HasF, @HasF(constants.%T) [symbolic = %HasF.type.loc8_33.2 (constants.%HasF.type.2)] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} @@ -1136,8 +1145,8 @@ fn G(x: A) { // CHECK:STDOUT: %x.param_patt: %A = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %x: %A = bind_name x, %param +// CHECK:STDOUT: %x.param: %A = param runtime_param0 +// CHECK:STDOUT: %x: %A = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 10f6cfc991d3..5b980a067ff8 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -180,8 +180,8 @@ fn G(c: Impl.C) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Impl.ref.loc4: = name_ref Impl, imports.%Impl [template = imports.%Impl] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.8 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index c77a2079475f..33fd3e21eb3a 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -59,7 +59,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -76,14 +76,17 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c // CHECK:STDOUT: %c.param_patt: %C = param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc11 [template = constants.%C] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc23_15.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc23_15.2: type = converted %int.make_type_32, %.loc23_15.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -92,6 +95,8 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { // CHECK:STDOUT: %self.patt: @F.1.%Self (%Self) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self (%Self) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc14_14.1: type = facet_type_access %Self.ref [symbolic = %Self (constants.%Self)] @@ -99,9 +104,10 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_25.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc14_25.2: type = converted %int.make_type_32, %.loc14_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: @F.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: @@ -115,14 +121,17 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc19_27.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc19_27.2: type = converted %int.make_type_32, %.loc19_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: = interface_witness (%F.decl) [template = constants.%.4] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon index 6923857a36ce..2b4d0be18a7d 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon @@ -117,15 +117,15 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.patt.loc2_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_9.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc2_9.1, runtime_param [symbolic = %T.patt.loc2_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc2_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc2_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc2_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc2_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I] { // CHECK:STDOUT: %U.patt.loc6_13.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc6_13.1, runtime_param [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc6_13.1: type = bind_symbolic_name U, 0, %param [symbolic = %U.loc6_13.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc6_13.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc6_13.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl [template] { // CHECK:STDOUT: %V.patt.loc10_14.1: type = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc10_14.2 (constants.%V.patt)] @@ -137,28 +137,33 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I] // CHECK:STDOUT: %V.ref.loc10_34: type = name_ref V, %V.loc10_14.1 [symbolic = %V.loc10_14.2 (constants.%V)] // CHECK:STDOUT: %I.type.loc10_33.1: type = interface_type @I, @I(constants.%V) [symbolic = %I.type.loc10_33.2 (constants.%I.type.3)] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %V.loc10_14.1: type = bind_symbolic_name V, 0, %param [symbolic = %V.loc10_14.2 (constants.%V)] +// CHECK:STDOUT: %V.param: type = param runtime_param +// CHECK:STDOUT: %V.loc10_14.1: type = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc10_14.2 (constants.%V)] // CHECK:STDOUT: } // CHECK:STDOUT: %TestGeneric.decl: %TestGeneric.type = fn_decl @TestGeneric [template = constants.%TestGeneric] { // CHECK:STDOUT: %W.patt.loc16_16.1: type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)] // CHECK:STDOUT: %W.param_patt: type = param_pattern %W.patt.loc16_16.1, runtime_param [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)] // CHECK:STDOUT: %a.patt: @TestGeneric.%A.loc16_30.2 (%A.4) = binding_pattern a // CHECK:STDOUT: %a.param_patt: @TestGeneric.%A.loc16_30.2 (%A.4) = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @TestGeneric.%W.loc16_16.2 (%W) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @TestGeneric.%W.loc16_16.2 (%W) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.1] // CHECK:STDOUT: %W.ref.loc16_31: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)] // CHECK:STDOUT: %A.loc16_30.1: type = class_type @A, @A(constants.%W) [symbolic = %A.loc16_30.2 (constants.%A.4)] // CHECK:STDOUT: %W.ref.loc16_38: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)] -// CHECK:STDOUT: %return: ref @TestGeneric.%W.loc16_16.2 (%W) = var -// CHECK:STDOUT: %param.loc16_17: type = param runtime_param -// CHECK:STDOUT: %W.loc16_16.1: type = bind_symbolic_name W, 0, %param.loc16_17 [symbolic = %W.loc16_16.2 (constants.%W)] -// CHECK:STDOUT: %param.loc16_27: @TestGeneric.%A.loc16_30.2 (%A.4) = param runtime_param0 -// CHECK:STDOUT: %a: @TestGeneric.%A.loc16_30.2 (%A.4) = bind_name a, %param.loc16_27 +// CHECK:STDOUT: %W.param: type = param runtime_param +// CHECK:STDOUT: %W.loc16_16.1: type = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc16_16.2 (constants.%W)] +// CHECK:STDOUT: %a.param: @TestGeneric.%A.loc16_30.2 (%A.4) = param runtime_param0 +// CHECK:STDOUT: %a: @TestGeneric.%A.loc16_30.2 (%A.4) = bind_name a, %a.param +// CHECK:STDOUT: %return.param: @TestGeneric.%W.loc16_16.2 (%W) = param runtime_param1 +// CHECK:STDOUT: %return: ref @TestGeneric.%W.loc16_16.2 (%W) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestSpecific.decl: %TestSpecific.type = fn_decl @TestSpecific [template = constants.%TestSpecific] { // CHECK:STDOUT: %a.patt: %A.5 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %A.5 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.21 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.21 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.1] // CHECK:STDOUT: %.loc20_23: %.21 = struct_literal () @@ -166,9 +171,10 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %A: type = class_type @A, @A(constants.%.21) [template = constants.%A.5] // CHECK:STDOUT: %.loc20_31.1: %.21 = struct_literal () // CHECK:STDOUT: %.loc20_31.2: type = converted %.loc20_31.1, constants.%.21 [template = constants.%.21] -// CHECK:STDOUT: %return: ref %.21 = var -// CHECK:STDOUT: %param: %A.5 = param runtime_param0 -// CHECK:STDOUT: %a: %A.5 = bind_name a, %param +// CHECK:STDOUT: %a.param: %A.5 = param runtime_param0 +// CHECK:STDOUT: %a: %A.5 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %.21 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.21 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -189,15 +195,18 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @I.%F (constants.%F.1)] { // CHECK:STDOUT: %self.patt: @F.1.%Self (%Self) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self (%Self) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.1.%U (%U) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.1.%U (%U) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_14.1: @F.1.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%U) [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.ref: @F.1.%I.type (%I.type.2) = name_ref Self, %.loc7_14.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc7_14.2: type = facet_type_access %Self.ref [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc7_14.3: type = converted %Self.ref, %.loc7_14.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %U.ref: type = name_ref U, @I.%U.loc6_13.1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %return: ref @F.1.%U (%U) = var -// CHECK:STDOUT: %param: @F.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @F.1.%U (%U) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.1.%U (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_26.1: @I.%.loc7_26.2 (%.5) = assoc_entity element0, %F.decl [symbolic = %.loc7_26.3 (constants.%.6)] // CHECK:STDOUT: @@ -223,12 +232,15 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] { // CHECK:STDOUT: %self.patt: @F.2.%A (%A.3) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.2.%A (%A.3) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.2.%V (%V) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.2.%V (%V) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%A.loc10_25.1 [symbolic = %A (constants.%A.3)] // CHECK:STDOUT: %V.ref: type = name_ref V, @impl.%V.loc10_14.1 [symbolic = %V (constants.%V)] -// CHECK:STDOUT: %return: ref @F.2.%V (%V) = var -// CHECK:STDOUT: %param: @F.2.%A (%A.3) = param runtime_param0 -// CHECK:STDOUT: %self: @F.2.%A (%A.3) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.2.%A (%A.3) = param runtime_param0 +// CHECK:STDOUT: %self: @F.2.%A (%A.3) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @F.2.%V (%V) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.2.%V (%V) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_37.1: = interface_witness (%F.decl) [symbolic = %.loc10_37.2 (constants.%.9)] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon index 9abfcdf61928..9391c01c0b69 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon @@ -153,8 +153,8 @@ fn G(c: Impl.C) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Impl.ref.loc4: = name_ref Impl, imports.%Impl [template = imports.%Impl] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.8 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %c: %C = bind_name c, %param +// CHECK:STDOUT: %c.param: %C = param runtime_param0 +// CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon b/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon index c184bce28afb..38fe302d289f 100644 --- a/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon @@ -114,8 +114,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc11_21.1: type = facet_type_access %T.ref [symbolic = %T.loc11_14.2 (constants.%T.1)] // CHECK:STDOUT: %.loc11_21.2: type = converted %T.ref, %.loc11_21.1 [symbolic = %T.loc11_14.2 (constants.%T.1)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %T.loc11_14.1: %I.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_14.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: %I.type = param runtime_param +// CHECK:STDOUT: %T.loc11_14.1: %I.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_14.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.2 [template] { // CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.2)] @@ -126,8 +126,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc12_21.1: type = facet_type_access %T.ref [symbolic = %T.loc12_14.2 (constants.%T.2)] // CHECK:STDOUT: %.loc12_21.2: type = converted %T.ref, %.loc12_21.1 [symbolic = %T.loc12_14.2 (constants.%T.2)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %J.type = param runtime_param -// CHECK:STDOUT: %T.loc12_14.1: %J.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc12_14.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %J.type = param runtime_param +// CHECK:STDOUT: %T.loc12_14.1: %J.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_14.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.3 [template] { // CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.3)] @@ -138,8 +138,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc13_21.1: type = facet_type_access %T.ref [symbolic = %T.loc13_14.2 (constants.%T.3)] // CHECK:STDOUT: %.loc13_21.2: type = converted %T.ref, %.loc13_21.1 [symbolic = %T.loc13_14.2 (constants.%T.3)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %K.type = param runtime_param -// CHECK:STDOUT: %T.loc13_14.1: %K.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc13_14.2 (constants.%T.3)] +// CHECK:STDOUT: %T.param: %K.type = param runtime_param +// CHECK:STDOUT: %T.loc13_14.1: %K.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_14.2 (constants.%T.3)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.4 [template] { // CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.4)] @@ -150,8 +150,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc14_21.1: type = facet_type_access %T.ref [symbolic = %T.loc14_14.2 (constants.%T.4)] // CHECK:STDOUT: %.loc14_21.2: type = converted %T.ref, %.loc14_21.1 [symbolic = %T.loc14_14.2 (constants.%T.4)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %L.type = param runtime_param -// CHECK:STDOUT: %T.loc14_14.1: %L.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc14_14.2 (constants.%T.4)] +// CHECK:STDOUT: %T.param: %L.type = param runtime_param +// CHECK:STDOUT: %T.loc14_14.1: %L.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_14.2 (constants.%T.4)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.5 [template] { // CHECK:STDOUT: %T.patt.loc18_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_14.2 (constants.%T.patt.5)] @@ -162,8 +162,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc18_21.1: type = facet_type_access %T.ref [symbolic = %T.loc18_14.2 (constants.%T.1)] // CHECK:STDOUT: %.loc18_21.2: type = converted %T.ref, %.loc18_21.1 [symbolic = %T.loc18_14.2 (constants.%T.1)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %T.loc18_14.1: %I.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc18_14.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: %I.type = param runtime_param +// CHECK:STDOUT: %T.loc18_14.1: %I.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc18_14.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.6 [template] { // CHECK:STDOUT: %T.patt.loc19_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_14.2 (constants.%T.patt.6)] @@ -174,8 +174,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc19_21.1: type = facet_type_access %T.ref [symbolic = %T.loc19_14.2 (constants.%T.2)] // CHECK:STDOUT: %.loc19_21.2: type = converted %T.ref, %.loc19_21.1 [symbolic = %T.loc19_14.2 (constants.%T.2)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %J.type = param runtime_param -// CHECK:STDOUT: %T.loc19_14.1: %J.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc19_14.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %J.type = param runtime_param +// CHECK:STDOUT: %T.loc19_14.1: %J.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_14.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.7 [template] { // CHECK:STDOUT: %T.patt.loc20_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt.7)] @@ -186,8 +186,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc20_21.1: type = facet_type_access %T.ref [symbolic = %T.loc20_14.2 (constants.%T.3)] // CHECK:STDOUT: %.loc20_21.2: type = converted %T.ref, %.loc20_21.1 [symbolic = %T.loc20_14.2 (constants.%T.3)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %K.type = param runtime_param -// CHECK:STDOUT: %T.loc20_14.1: %K.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc20_14.2 (constants.%T.3)] +// CHECK:STDOUT: %T.param: %K.type = param runtime_param +// CHECK:STDOUT: %T.loc20_14.1: %K.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc20_14.2 (constants.%T.3)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.8 [template] { // CHECK:STDOUT: %T.patt.loc21_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_14.2 (constants.%T.patt.8)] @@ -198,8 +198,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc21_21.1: type = facet_type_access %T.ref [symbolic = %T.loc21_14.2 (constants.%T.4)] // CHECK:STDOUT: %.loc21_21.2: type = converted %T.ref, %.loc21_21.1 [symbolic = %T.loc21_14.2 (constants.%T.4)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %L.type = param runtime_param -// CHECK:STDOUT: %T.loc21_14.1: %L.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc21_14.2 (constants.%T.4)] +// CHECK:STDOUT: %T.param: %L.type = param runtime_param +// CHECK:STDOUT: %T.loc21_14.1: %L.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_14.2 (constants.%T.4)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -397,8 +397,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc7_21.1: type = facet_type_access %T.ref.loc7 [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: %.loc7_21.2: type = converted %T.ref.loc7, %.loc7_21.1 [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: %J.ref.loc7: type = name_ref J, file.%J.decl [template = constants.%J.type] -// CHECK:STDOUT: %param.loc7: %I.type = param runtime_param -// CHECK:STDOUT: %T.loc7_14.1: %I.type = bind_symbolic_name T, 0, %param.loc7 [symbolic = %T.loc7_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param.loc7: %I.type = param runtime_param +// CHECK:STDOUT: %T.loc7_14.1: %I.type = bind_symbolic_name T, 0, %T.param.loc7 [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl [template] { // CHECK:STDOUT: %T.patt.loc7_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_14.2 (constants.%T.patt.1)] @@ -409,8 +409,8 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %.loc14_21.1: type = facet_type_access %T.ref.loc14 [symbolic = constants.%T] // CHECK:STDOUT: %.loc14_21.2: type = converted %T.ref.loc14, %.loc14_21.1 [symbolic = constants.%T] // CHECK:STDOUT: %J.ref.loc14: type = name_ref J, file.%J.decl [template = constants.%J.type] -// CHECK:STDOUT: %param.loc14: %I.type = param runtime_param -// CHECK:STDOUT: %T.loc14: %I.type = bind_symbolic_name T, 0, %param.loc14 [symbolic = constants.%T] +// CHECK:STDOUT: %T.param.loc14: %I.type = param runtime_param +// CHECK:STDOUT: %T.loc14: %I.type = bind_symbolic_name T, 0, %T.param.loc14 [symbolic = constants.%T] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon index 6289eabc3ffb..1ed655eacf9d 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon @@ -67,8 +67,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc5_13.1, runtime_param [symbolic = %T.patt.loc5_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc5_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc5_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc5_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc5_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.1 [template] { // CHECK:STDOUT: %T.patt.loc7_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_14.2 (constants.%T.patt.2)] @@ -78,8 +78,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_14.1 [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc7_30.1: type = interface_type @I, @I(constants.%T) [symbolic = %I.type.loc7_30.2 (constants.%I.type.2)] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc7_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc7_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc7_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.2 [template] { // CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt.3)] @@ -90,8 +90,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %.loc8_32.1: type = ptr_type %T [symbolic = %.loc8_32.2 (constants.%.4)] // CHECK:STDOUT: %I.type.loc8_30.1: type = interface_type @I, @I(constants.%.4) [symbolic = %I.type.loc8_30.2 (constants.%I.type.3)] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_14.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -229,8 +229,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.2 [template = constants.%I] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4 [symbolic = constants.%T] // CHECK:STDOUT: %I.type.loc4: type = interface_type @I, @I(constants.%T) [symbolic = constants.%I.type.2] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %param [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -369,8 +369,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11 [symbolic = constants.%T] // CHECK:STDOUT: %.loc11: type = ptr_type %T [symbolic = constants.%.4] // CHECK:STDOUT: %I.type.loc11: type = interface_type @I, @I(constants.%.4) [symbolic = constants.%I.type.3] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11: type = bind_symbolic_name T, 0, %param [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/import_self.carbon b/toolchain/check/testdata/impl/no_prelude/import_self.carbon index 50bdabe1131c..f3080520e674 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_self.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_self.carbon @@ -56,6 +56,8 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %self.param_patt: @Op.%Self (%Self) = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: @Op.%Self (%Self) = binding_pattern other // CHECK:STDOUT: %other.param_patt: @Op.%Self (%Self) = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @Op.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Op.%Self (%Self) = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc5_15.1: type = facet_type_access %Self.ref.loc5_15 [symbolic = %Self (constants.%Self)] @@ -66,11 +68,12 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %Self.ref.loc5_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc5_37.1: type = facet_type_access %Self.ref.loc5_37 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc5_37.2: type = converted %Self.ref.loc5_37, %.loc5_37.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @Op.%Self (%Self) = var -// CHECK:STDOUT: %param.loc5_13: @Op.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @Op.%Self (%Self) = bind_name self, %param.loc5_13 -// CHECK:STDOUT: %param.loc5_26: @Op.%Self (%Self) = param runtime_param1 -// CHECK:STDOUT: %other: @Op.%Self (%Self) = bind_name other, %param.loc5_26 +// CHECK:STDOUT: %self.param: @Op.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @Op.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @Op.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %other: @Op.%Self (%Self) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: @Op.%Self (%Self) = param runtime_param2 +// CHECK:STDOUT: %return: ref @Op.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5: %.2 = assoc_entity element0, %Op.decl [template = constants.%.3] // CHECK:STDOUT: @@ -111,9 +114,9 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, inst+1, loaded [template = constants.%Add.type] // CHECK:STDOUT: %import_ref.2 = import_ref Main//a, inst+3, unloaded -// CHECK:STDOUT: %import_ref.3: %.3 = import_ref Main//a, inst+29, loaded [template = constants.%.4] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Main//a, inst+23, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//a, inst+23, unloaded +// CHECK:STDOUT: %import_ref.3: %.3 = import_ref Main//a, inst+32, loaded [template = constants.%.4] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Main//a, inst+26, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5 = import_ref Main//a, inst+26, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -132,6 +135,8 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %x.param_patt: %.1 = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %y.patt: %.1 = binding_pattern y // CHECK:STDOUT: %y.param_patt: %.1 = param_pattern %y.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc10_10.2: type = converted %.loc10_10.1, constants.%.1 [template = constants.%.1] @@ -139,11 +144,12 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %.loc10_17.2: type = converted %.loc10_17.1, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc10_24.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc10_24.2: type = converted %.loc10_24.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param.loc10_7: %.1 = param runtime_param0 -// CHECK:STDOUT: %x: %.1 = bind_name x, %param.loc10_7 -// CHECK:STDOUT: %param.loc10_14: %.1 = param runtime_param1 -// CHECK:STDOUT: %y: %.1 = bind_name y, %param.loc10_14 +// CHECK:STDOUT: %x.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param +// CHECK:STDOUT: %y.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %y: %.1 = bind_name y, %y.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param2 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -160,15 +166,18 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %self.param_patt: %.1 = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %.1 = binding_pattern other // CHECK:STDOUT: %other.param_patt: %.1 = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @impl.%.loc6_7.2 [template = constants.%.1] // CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @impl.%.loc6_7.2 [template = constants.%.1] // CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @impl.%.loc6_7.2 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var -// CHECK:STDOUT: %param.loc7_13: %.1 = param runtime_param0 -// CHECK:STDOUT: %self: %.1 = bind_name self, %param.loc7_13 -// CHECK:STDOUT: %param.loc7_26: %.1 = param runtime_param1 -// CHECK:STDOUT: %other: %.1 = bind_name other, %param.loc7_26 +// CHECK:STDOUT: %self.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %.1 = param runtime_param1 +// CHECK:STDOUT: %other: %.1 = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %.1 = param runtime_param2 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6_16: = interface_witness (%Op.decl) [template = constants.%.2] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon index 71f4d759f02c..79a65f32bc48 100644 --- a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon +++ b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon @@ -122,8 +122,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_18.1, runtime_param [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_18.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_18.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} @@ -139,8 +139,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %a.param_patt: %A = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %a: %A = bind_name a, %param +// CHECK:STDOUT: %a.param: %A = param runtime_param0 +// CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -317,8 +317,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %a.param_patt: %A = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %a: %A = bind_name a, %param +// CHECK:STDOUT: %a.param: %A = param runtime_param0 +// CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -476,8 +476,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %a.param_patt: %A = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %a: %A = bind_name a, %param +// CHECK:STDOUT: %a.param: %A = param runtime_param0 +// CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -614,8 +614,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_19.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_19.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} @@ -641,9 +641,13 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Factory.%Factory.type (%Factory.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Make.decl: @Factory.%Make.type (%Make.type.1) = fn_decl @Make.1 [symbolic = @Factory.%Make (constants.%Make.1)] {} { +// CHECK:STDOUT: %Make.decl: @Factory.%Make.type (%Make.type.1) = fn_decl @Make.1 [symbolic = @Factory.%Make (constants.%Make.1)] { +// CHECK:STDOUT: %return.patt: @Make.1.%T (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Make.1.%T (%T) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Factory.%T.loc4_19.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %return: ref @Make.1.%T (%T) = var +// CHECK:STDOUT: %return.param: @Make.1.%T (%T) = param runtime_param0 +// CHECK:STDOUT: %return: ref @Make.1.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5_17.1: @Factory.%.loc5_17.2 (%.2) = assoc_entity element0, %Make.decl [symbolic = %.loc5_17.3 (constants.%.3)] // CHECK:STDOUT: @@ -655,9 +659,13 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %A.ref as %Factory.type { -// CHECK:STDOUT: %Make.decl: %Make.type.2 = fn_decl @Make.2 [template = constants.%Make.2] {} { +// CHECK:STDOUT: %Make.decl: %Make.type.2 = fn_decl @Make.2 [template = constants.%Make.2] { +// CHECK:STDOUT: %return.patt: %B = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %B = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %return: ref %B = var +// CHECK:STDOUT: %return.param: %B = param runtime_param0 +// CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11: = interface_witness (%Make.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -754,20 +762,20 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %Factory.type.1 = import_ref Main//factory, inst+7, loaded [template = constants.%Factory] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//factory, inst+31, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//factory, inst+36, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//factory, inst+37, unloaded +// CHECK:STDOUT: %import_ref.2: type = import_ref Main//factory, inst+34, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.3: type = import_ref Main//factory, inst+39, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.4 = import_ref Main//factory, inst+40, unloaded // CHECK:STDOUT: %import_ref.5 = import_ref Main//factory, inst+14, unloaded -// CHECK:STDOUT: %import_ref.6: @Factory.%.1 (%.4) = import_ref Main//factory, inst+23, loaded [symbolic = @Factory.%.2 (constants.%.9)] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//factory, inst+18, unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Main//factory, inst+32, unloaded -// CHECK:STDOUT: %import_ref.9: type = import_ref Main//factory, inst+39, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.10: type = import_ref Main//factory, inst+42, loaded [template = constants.%Factory.type.3] -// CHECK:STDOUT: %import_ref.11: = import_ref Main//factory, inst+54, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.12 = import_ref Main//factory, inst+47, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref Main//factory, inst+18, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, inst+18, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, inst+18, unloaded +// CHECK:STDOUT: %import_ref.6: @Factory.%.1 (%.4) = import_ref Main//factory, inst+26, loaded [symbolic = @Factory.%.2 (constants.%.9)] +// CHECK:STDOUT: %import_ref.7 = import_ref Main//factory, inst+21, unloaded +// CHECK:STDOUT: %import_ref.8 = import_ref Main//factory, inst+35, unloaded +// CHECK:STDOUT: %import_ref.9: type = import_ref Main//factory, inst+42, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.10: type = import_ref Main//factory, inst+45, loaded [template = constants.%Factory.type.3] +// CHECK:STDOUT: %import_ref.11: = import_ref Main//factory, inst+60, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.12 = import_ref Main//factory, inst+53, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref Main//factory, inst+21, unloaded +// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, inst+21, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, inst+21, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -782,12 +790,15 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %MakeB.decl: %MakeB.type = fn_decl @MakeB [template = constants.%MakeB] { // CHECK:STDOUT: %a.patt: %A = binding_pattern a // CHECK:STDOUT: %a.param_patt: %A = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %B = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %B = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] // CHECK:STDOUT: %B.ref.loc4: type = name_ref B, imports.%import_ref.3 [template = constants.%B] -// CHECK:STDOUT: %return: ref %B = var -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %a: %A = bind_name a, %param +// CHECK:STDOUT: %a.param: %A = param runtime_param0 +// CHECK:STDOUT: %a: %A = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %B = param runtime_param1 +// CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -842,8 +853,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %.loc5_23: %.6 = specific_constant imports.%import_ref.6, @Factory(constants.%B) [template = constants.%.7] // CHECK:STDOUT: %Make.ref: %.6 = name_ref Make, %.loc5_23 [template = constants.%.7] // CHECK:STDOUT: %.loc5_11: %Make.type.2 = interface_witness_access constants.%.10, element0 [template = constants.%Make.3] -// CHECK:STDOUT: %.loc4: ref %B = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %B = call %.loc5_11() to %.loc4 +// CHECK:STDOUT: %.loc4_16.2: ref %B = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %B = call %.loc5_11() to %.loc4_16.2 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -914,20 +925,20 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.1: %Factory.type.1 = import_ref Main//factory, inst+7, loaded [template = constants.%Factory] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//factory, inst+31, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//factory, inst+36, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//factory, inst+37, unloaded +// CHECK:STDOUT: %import_ref.2: type = import_ref Main//factory, inst+34, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.3 = import_ref Main//factory, inst+39, unloaded +// CHECK:STDOUT: %import_ref.4 = import_ref Main//factory, inst+40, unloaded // CHECK:STDOUT: %import_ref.5 = import_ref Main//factory, inst+14, unloaded -// CHECK:STDOUT: %import_ref.6: @Factory.%.1 (%.4) = import_ref Main//factory, inst+23, loaded [symbolic = @Factory.%.2 (constants.%.11)] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//factory, inst+18, unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Main//factory, inst+32, unloaded -// CHECK:STDOUT: %import_ref.9: type = import_ref Main//factory, inst+39, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.10: type = import_ref Main//factory, inst+42, loaded [template = constants.%Factory.type.3] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//factory, inst+54, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref Main//factory, inst+47, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref Main//factory, inst+18, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, inst+18, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, inst+18, unloaded +// CHECK:STDOUT: %import_ref.6: @Factory.%.1 (%.4) = import_ref Main//factory, inst+26, loaded [symbolic = @Factory.%.2 (constants.%.11)] +// CHECK:STDOUT: %import_ref.7 = import_ref Main//factory, inst+21, unloaded +// CHECK:STDOUT: %import_ref.8 = import_ref Main//factory, inst+35, unloaded +// CHECK:STDOUT: %import_ref.9: type = import_ref Main//factory, inst+42, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.10: type = import_ref Main//factory, inst+45, loaded [template = constants.%Factory.type.3] +// CHECK:STDOUT: %import_ref.11 = import_ref Main//factory, inst+60, unloaded +// CHECK:STDOUT: %import_ref.12 = import_ref Main//factory, inst+53, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref Main//factory, inst+21, unloaded +// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, inst+21, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, inst+21, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -944,12 +955,15 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [template = constants.%MakeC] { // CHECK:STDOUT: %a.patt: %A = binding_pattern a // CHECK:STDOUT: %a.param_patt: %A = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %A = param runtime_param0 -// CHECK:STDOUT: %a: %A = bind_name a, %param +// CHECK:STDOUT: %a.param: %A = param runtime_param0 +// CHECK:STDOUT: %a: %A = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon b/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon index be96eb28f10b..bda01b65a392 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon @@ -56,11 +56,15 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: interface @DefaultConstructible { // CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Make.decl: %Make.type.1 = fn_decl @Make.1 [template = constants.%Make.1] {} { +// CHECK:STDOUT: %Make.decl: %Make.type.1 = fn_decl @Make.1 [template = constants.%Make.1] { +// CHECK:STDOUT: %return.patt: @Make.1.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Make.1.%Self (%Self) = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: %DefaultConstructible.type = name_ref Self, @DefaultConstructible.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_16.1: type = facet_type_access %Self.ref [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_16.2: type = converted %Self.ref, %.loc12_16.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @Make.1.%Self (%Self) = var +// CHECK:STDOUT: %return.param: @Make.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %return: ref @Make.1.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %Make.decl [template = constants.%.3] // CHECK:STDOUT: @@ -71,9 +75,13 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %DefaultConstructible.ref { -// CHECK:STDOUT: %Make.decl: %Make.type.2 = fn_decl @Make.2 [template = constants.%Make.2] {} { +// CHECK:STDOUT: %Make.decl: %Make.type.2 = fn_decl @Make.2 [template = constants.%Make.2] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%C.ref [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: = interface_witness (%Make.decl) [template = constants.%.6] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon b/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon index 265436e40050..c593c351b5bd 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon @@ -119,6 +119,8 @@ impl D as SelfNested { // CHECK:STDOUT: %self.param_patt: @F.1.%Self (%Self.1) = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %x.patt: @F.1.%Self (%Self.1) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @F.1.%Self (%Self.1) = param_pattern %x.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @F.1.%Self (%Self.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.1.%Self (%Self.1) = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc12_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.1)] // CHECK:STDOUT: %.loc12_14.1: type = facet_type_access %Self.ref.loc12_14 [symbolic = %Self (constants.%Self.1)] @@ -129,11 +131,12 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.ref.loc12_32: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.1)] // CHECK:STDOUT: %.loc12_32.1: type = facet_type_access %Self.ref.loc12_32 [symbolic = %Self (constants.%Self.1)] // CHECK:STDOUT: %.loc12_32.2: type = converted %Self.ref.loc12_32, %.loc12_32.1 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %return: ref @F.1.%Self (%Self.1) = var -// CHECK:STDOUT: %param.loc12_12: @F.1.%Self (%Self.1) = param runtime_param0 -// CHECK:STDOUT: %self: @F.1.%Self (%Self.1) = bind_name self, %param.loc12_12 -// CHECK:STDOUT: %param.loc12_21: @F.1.%Self (%Self.1) = param runtime_param1 -// CHECK:STDOUT: %x: @F.1.%Self (%Self.1) = bind_name x, %param.loc12_21 +// CHECK:STDOUT: %self.param: @F.1.%Self (%Self.1) = param runtime_param0 +// CHECK:STDOUT: %self: @F.1.%Self (%Self.1) = bind_name self, %self.param +// CHECK:STDOUT: %x.param: @F.1.%Self (%Self.1) = param runtime_param1 +// CHECK:STDOUT: %x: @F.1.%Self (%Self.1) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: @F.1.%Self (%Self.1) = param runtime_param2 +// CHECK:STDOUT: %return: ref @F.1.%Self (%Self.1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: @@ -161,8 +164,8 @@ impl D as SelfNested { // CHECK:STDOUT: %.loc28_36.2: type = struct_type {.x: %Self.2, .y: %.1} [symbolic = %.loc28_36.1 (constants.%.10)] // CHECK:STDOUT: %.loc28_37.2: %.11 = tuple_literal (%.loc28_16.4, %.loc28_36.2) // CHECK:STDOUT: %.loc28_37.3: type = converted %.loc28_37.2, constants.%.12 [symbolic = %.loc28_37.1 (constants.%.12)] -// CHECK:STDOUT: %param: @F.4.%.loc28_37.1 (%.12) = param runtime_param0 -// CHECK:STDOUT: %x: @F.4.%.loc28_37.1 (%.12) = bind_name x, %param +// CHECK:STDOUT: %x.param: @F.4.%.loc28_37.1 (%.12) = param runtime_param0 +// CHECK:STDOUT: %x: @F.4.%.loc28_37.1 (%.12) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc28: %.13 = assoc_entity element0, %F.decl [template = constants.%.14] // CHECK:STDOUT: @@ -178,15 +181,18 @@ impl D as SelfNested { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %x.patt: %C = binding_pattern x // CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc20_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc20_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc20_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc20_12: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc20_12 -// CHECK:STDOUT: %param.loc20_18: %C = param runtime_param1 -// CHECK:STDOUT: %x: %C = bind_name x, %param.loc20_18 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %x.param: %C = param runtime_param1 +// CHECK:STDOUT: %x: %C = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = interface_witness (%F.decl) [template = constants.%.6] // CHECK:STDOUT: @@ -201,15 +207,18 @@ impl D as SelfNested { // CHECK:STDOUT: %self.param_patt: %D = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %x.patt: %D = binding_pattern x // CHECK:STDOUT: %x.param_patt: %D = param_pattern %x.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %D = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc24_14: type = name_ref Self, @impl.2.%D.ref [template = constants.%D] // CHECK:STDOUT: %Self.ref.loc24_23: type = name_ref Self, @impl.2.%D.ref [template = constants.%D] // CHECK:STDOUT: %Self.ref.loc24_32: type = name_ref Self, @impl.2.%D.ref [template = constants.%D] -// CHECK:STDOUT: %return: ref %D = var -// CHECK:STDOUT: %param.loc24_12: %D = param runtime_param0 -// CHECK:STDOUT: %self: %D = bind_name self, %param.loc24_12 -// CHECK:STDOUT: %param.loc24_21: %D = param runtime_param1 -// CHECK:STDOUT: %x: %D = bind_name x, %param.loc24_21 +// CHECK:STDOUT: %self.param: %D = param runtime_param0 +// CHECK:STDOUT: %self: %D = bind_name self, %self.param +// CHECK:STDOUT: %x.param: %D = param runtime_param1 +// CHECK:STDOUT: %x: %D = bind_name x, %x.param +// CHECK:STDOUT: %return.param: %D = param runtime_param2 +// CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc23: = interface_witness (%F.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,8 +240,8 @@ impl D as SelfNested { // CHECK:STDOUT: %.loc32_30: type = struct_type {.x: %C, .y: %.1} [template = constants.%.16] // CHECK:STDOUT: %.loc32_31.1: %.11 = tuple_literal (%.loc32_13, %.loc32_30) // CHECK:STDOUT: %.loc32_31.2: type = converted %.loc32_31.1, constants.%.17 [template = constants.%.17] -// CHECK:STDOUT: %param: %.17 = param runtime_param0 -// CHECK:STDOUT: %x: %.17 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.17 = param runtime_param0 +// CHECK:STDOUT: %x: %.17 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc31: = interface_witness (%F.decl) [template = constants.%.18] // CHECK:STDOUT: @@ -254,8 +263,8 @@ impl D as SelfNested { // CHECK:STDOUT: %.loc36_36: type = struct_type {.x: %D, .y: %.1} [template = constants.%.20] // CHECK:STDOUT: %.loc36_37.1: %.11 = tuple_literal (%.loc36_16, %.loc36_36) // CHECK:STDOUT: %.loc36_37.2: type = converted %.loc36_37.1, constants.%.21 [template = constants.%.21] -// CHECK:STDOUT: %param: %.21 = param runtime_param0 -// CHECK:STDOUT: %x: %.21 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.21 = param runtime_param0 +// CHECK:STDOUT: %x: %.21 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc35: = interface_witness (%F.decl) [template = constants.%.22] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/redeclaration.carbon b/toolchain/check/testdata/impl/redeclaration.carbon index c441e53ba106..cd5f92d6b2da 100644 --- a/toolchain/check/testdata/impl/redeclaration.carbon +++ b/toolchain/check/testdata/impl/redeclaration.carbon @@ -44,7 +44,7 @@ impl i32 as I {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/array_element_access.carbon b/toolchain/check/testdata/index/array_element_access.carbon index bcf9fed6cb23..2fdde70bf98c 100644 --- a/toolchain/check/testdata/index/array_element_access.carbon +++ b/toolchain/check/testdata/index/array_element_access.carbon @@ -42,7 +42,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index 17e324648901..24d016c474eb 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -64,7 +64,7 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -75,13 +75,17 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: .ValueBinding = %ValueBinding.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_17: i32 = int_literal 3 [template = constants.%.2] // CHECK:STDOUT: %.loc11_12.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_12.2: type = converted %int.make_type_32, %.loc11_12.1 [template = i32] // CHECK:STDOUT: %.loc11_18: type = array_type %.loc11_17, i32 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %b.patt: %.3 = binding_pattern b @@ -92,8 +96,8 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: %.loc13_10.1: type = value_of_initializer %int.make_type_32.loc13 [template = i32] // CHECK:STDOUT: %.loc13_10.2: type = converted %int.make_type_32.loc13, %.loc13_10.1 [template = i32] // CHECK:STDOUT: %.loc13_16: type = array_type %.loc13_15, i32 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %b: %.3 = bind_name b, %param +// CHECK:STDOUT: %b.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %b: %.3 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: %ValueBinding.decl: %ValueBinding.type = fn_decl @ValueBinding [template = constants.%ValueBinding] { // CHECK:STDOUT: %b.patt: %.3 = binding_pattern b @@ -104,8 +108,8 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: %.loc21_21.1: type = value_of_initializer %int.make_type_32.loc21 [template = i32] // CHECK:STDOUT: %.loc21_21.2: type = converted %int.make_type_32.loc21, %.loc21_21.1 [template = i32] // CHECK:STDOUT: %.loc21_27: type = array_type %.loc21_26, i32 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %b: %.3 = bind_name b, %param +// CHECK:STDOUT: %b.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %b: %.3 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_array_large_index.carbon b/toolchain/check/testdata/index/fail_array_large_index.carbon index a93b99f4306b..90b928f8bdf9 100644 --- a/toolchain/check/testdata/index/fail_array_large_index.carbon +++ b/toolchain/check/testdata/index/fail_array_large_index.carbon @@ -49,7 +49,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon index 423d0d203de5..0f174a48dfa4 100644 --- a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon @@ -63,13 +63,13 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.9) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.13)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.9) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.13)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon index db129d2d31b5..c66676429425 100644 --- a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon @@ -41,7 +41,7 @@ var b: i32 = a[1]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index 9f58ac5ea37d..9eb18d2a82ab 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -66,7 +66,7 @@ fn G(b: [i32; 3]) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -76,13 +76,17 @@ fn G(b: [i32; 3]) { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_17: i32 = int_literal 3 [template = constants.%.2] // CHECK:STDOUT: %.loc11_12.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_12.2: type = converted %int.make_type_32, %.loc11_12.1 [template = i32] // CHECK:STDOUT: %.loc11_18: type = array_type %.loc11_17, i32 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %b.patt: %.3 = binding_pattern b @@ -93,8 +97,8 @@ fn G(b: [i32; 3]) { // CHECK:STDOUT: %.loc13_10.1: type = value_of_initializer %int.make_type_32.loc13 [template = i32] // CHECK:STDOUT: %.loc13_10.2: type = converted %int.make_type_32.loc13, %.loc13_10.1 [template = i32] // CHECK:STDOUT: %.loc13_16: type = array_type %.loc13_15, i32 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %b: %.3 = bind_name b, %param +// CHECK:STDOUT: %b.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %b: %.3 = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_invalid_base.carbon b/toolchain/check/testdata/index/fail_invalid_base.carbon index a028f1256387..0ab82525706d 100644 --- a/toolchain/check/testdata/index/fail_invalid_base.carbon +++ b/toolchain/check/testdata/index/fail_invalid_base.carbon @@ -61,7 +61,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/fail_name_not_found.carbon b/toolchain/check/testdata/index/fail_name_not_found.carbon index ea632d7513b2..9d43146c2093 100644 --- a/toolchain/check/testdata/index/fail_name_not_found.carbon +++ b/toolchain/check/testdata/index/fail_name_not_found.carbon @@ -38,7 +38,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/index/fail_negative_indexing.carbon b/toolchain/check/testdata/index/fail_negative_indexing.carbon index f09d0a6be08b..b3951f5d1721 100644 --- a/toolchain/check/testdata/index/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/index/fail_negative_indexing.carbon @@ -51,12 +51,12 @@ var d: i32 = c[-10]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/arithmetic, inst+82, loaded [template = constants.%Negate.type] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/arithmetic, inst+84, unloaded -// CHECK:STDOUT: %import_ref.4: %.10 = import_ref Core//prelude/operators/arithmetic, inst+102, loaded [template = constants.%.11] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/arithmetic, inst+85, loaded [template = constants.%Negate.type] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/arithmetic, inst+87, unloaded +// CHECK:STDOUT: %import_ref.4: %.10 = import_ref Core//prelude/operators/arithmetic, inst+108, loaded [template = constants.%.11] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/interface/assoc_const.carbon b/toolchain/check/testdata/interface/assoc_const.carbon index 1c52a77416f0..c800141ea392 100644 --- a/toolchain/check/testdata/interface/assoc_const.carbon +++ b/toolchain/check/testdata/interface/assoc_const.carbon @@ -39,7 +39,7 @@ interface I { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon b/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon index bb3d86ad945f..7b1aeb70e9db 100644 --- a/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon @@ -58,12 +58,12 @@ interface I { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon index a0382e454d97..9f6785fb8fa4 100644 --- a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon +++ b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon @@ -49,7 +49,7 @@ interface I { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon index f349fb318d55..54a9ab3247cc 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon @@ -51,7 +51,7 @@ interface Interface { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -72,6 +72,8 @@ interface Interface { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc21_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_19.1: type = value_of_initializer %int.make_type_32.loc21_19 [template = i32] @@ -82,11 +84,12 @@ interface Interface { // CHECK:STDOUT: %int.make_type_32.loc21_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_35.1: type = value_of_initializer %int.make_type_32.loc21_35 [template = i32] // CHECK:STDOUT: %.loc21_35.2: type = converted %int.make_type_32.loc21_35, %.loc21_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc21_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc21_17 -// CHECK:STDOUT: %param.loc21_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc21_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc21: %.4 = assoc_entity element1, %G.decl [template = constants.%.5] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon index f7ec781ce45a..6d963be8c2f3 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon @@ -97,7 +97,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -113,6 +113,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc31_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc31_19.1: type = value_of_initializer %int.make_type_32.loc31_19 [template = i32] @@ -123,11 +125,12 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %int.make_type_32.loc31_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc31_35.1: type = value_of_initializer %int.make_type_32.loc31_35 [template = i32] // CHECK:STDOUT: %.loc31_35.2: type = converted %int.make_type_32.loc31_35, %.loc31_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc31_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc31_17 -// CHECK:STDOUT: %param.loc31_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc31_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -140,6 +143,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc13_19: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_19.1: type = value_of_initializer %int.make_type_32.loc13_19 [template = i32] @@ -150,11 +155,12 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %int.make_type_32.loc13_35: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_35.1: type = value_of_initializer %int.make_type_32.loc13_35 [template = i32] // CHECK:STDOUT: %.loc13_35.2: type = converted %int.make_type_32.loc13_35, %.loc13_35.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc13_17: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_17 -// CHECK:STDOUT: %param.loc13_25: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_25 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: %.4 = assoc_entity element1, %G.decl [template = constants.%.5] // CHECK:STDOUT: @@ -244,18 +250,21 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc20, runtime_param [symbolic = constants.%U.patt.2] // CHECK:STDOUT: %u.patt: %U = binding_pattern u // CHECK:STDOUT: %u.param_patt: %U = param_pattern %u.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %U = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %U = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc20: type = specific_constant constants.%C.2, @C(constants.%Self) [symbolic = constants.%C.2] -// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20 [symbolic = constants.%C.2] +// CHECK:STDOUT: %.loc20_24: type = specific_constant constants.%C.2, @C(constants.%Self) [symbolic = constants.%C.2] +// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20_24 [symbolic = constants.%C.2] // CHECK:STDOUT: %U.ref.loc20_43: type = name_ref U, %U.loc20 [symbolic = constants.%U] // CHECK:STDOUT: %U.ref.loc20_49: type = name_ref U, %U.loc20 [symbolic = constants.%U] -// CHECK:STDOUT: %return: ref %U = var -// CHECK:STDOUT: %param.loc20_22: %C.2 = param runtime_param0 -// CHECK:STDOUT: %self.loc20: %C.2 = bind_name self, %param.loc20_22 -// CHECK:STDOUT: %param.loc20_31: type = param runtime_param -// CHECK:STDOUT: %U.loc20: type = bind_symbolic_name U, 1, %param.loc20_31 [symbolic = constants.%U] -// CHECK:STDOUT: %param.loc20_41: %U = param runtime_param1 -// CHECK:STDOUT: %u.loc20: %U = bind_name u, %param.loc20_41 +// CHECK:STDOUT: %self.param.loc20: %C.2 = param runtime_param0 +// CHECK:STDOUT: %self.loc20: %C.2 = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %U.param.loc20: type = param runtime_param +// CHECK:STDOUT: %U.loc20: type = bind_symbolic_name U, 1, %U.param.loc20 [symbolic = constants.%U] +// CHECK:STDOUT: %u.param.loc20: %U = param runtime_param1 +// CHECK:STDOUT: %u.loc20: %U = bind_name u, %u.param.loc20 +// CHECK:STDOUT: %return.param.loc20: %U = param runtime_param2 +// CHECK:STDOUT: %return: ref %U = return_slot %return.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -283,18 +292,21 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc20, runtime_param [symbolic = constants.%U.patt.2] // CHECK:STDOUT: %u.patt: %U = binding_pattern u // CHECK:STDOUT: %u.param_patt: %U = param_pattern %u.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %U = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %U = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc14: type = specific_constant constants.%C.2, @C(constants.%Self) [symbolic = %C (constants.%C.2)] -// CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14 [symbolic = %C (constants.%C.2)] +// CHECK:STDOUT: %.loc14_16: type = specific_constant constants.%C.2, @C(constants.%Self) [symbolic = %C (constants.%C.2)] +// CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14_16 [symbolic = %C (constants.%C.2)] // CHECK:STDOUT: %U.ref.loc14_35: type = name_ref U, %U.loc14_22.2 [symbolic = %U.loc14_22.1 (constants.%U)] // CHECK:STDOUT: %U.ref.loc14_41: type = name_ref U, %U.loc14_22.2 [symbolic = %U.loc14_22.1 (constants.%U)] -// CHECK:STDOUT: %return.var.loc14: ref @F.%U.loc14_22.1 (%U) = var -// CHECK:STDOUT: %param.loc14_14: @F.%C (%C.2) = param runtime_param0 -// CHECK:STDOUT: %self.loc14: @F.%C (%C.2) = bind_name self, %param.loc14_14 -// CHECK:STDOUT: %param.loc14_23: type = param runtime_param -// CHECK:STDOUT: %U.loc14_22.2: type = bind_symbolic_name U, 1, %param.loc14_23 [symbolic = %U.loc14_22.1 (constants.%U)] -// CHECK:STDOUT: %param.loc14_33: @F.%U.loc14_22.1 (%U) = param runtime_param1 -// CHECK:STDOUT: %u.loc14: @F.%U.loc14_22.1 (%U) = bind_name u, %param.loc14_33 +// CHECK:STDOUT: %self.param.loc14: @F.%C (%C.2) = param runtime_param0 +// CHECK:STDOUT: %self.loc14: @F.%C (%C.2) = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %U.param.loc14: type = param runtime_param +// CHECK:STDOUT: %U.loc14_22.2: type = bind_symbolic_name U, 1, %U.param.loc14 [symbolic = %U.loc14_22.1 (constants.%U)] +// CHECK:STDOUT: %u.param.loc14: @F.%U.loc14_22.1 (%U) = param runtime_param1 +// CHECK:STDOUT: %u.loc14: @F.%U.loc14_22.1 (%U) = bind_name u, %u.param.loc14 +// CHECK:STDOUT: %return.param.loc14: @F.%U.loc14_22.1 (%U) = param runtime_param2 +// CHECK:STDOUT: %.loc14_38: ref @F.%U.loc14_22.1 (%U) = return_slot %return.param.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/as_type.carbon b/toolchain/check/testdata/interface/no_prelude/as_type.carbon index 41e51f847fc8..9909ff791fef 100644 --- a/toolchain/check/testdata/interface/no_prelude/as_type.carbon +++ b/toolchain/check/testdata/interface/no_prelude/as_type.carbon @@ -33,8 +33,8 @@ fn F(e: Empty) {} // CHECK:STDOUT: %e.param_patt: %Empty.type = param_pattern %e.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [template = constants.%Empty.type] -// CHECK:STDOUT: %param: %Empty.type = param runtime_param0 -// CHECK:STDOUT: %e: %Empty.type = bind_name e, %param +// CHECK:STDOUT: %e.param: %Empty.type = param runtime_param0 +// CHECK:STDOUT: %e: %Empty.type = bind_name e, %e.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon b/toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon index 35906e8dc856..022d135a93cd 100644 --- a/toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon +++ b/toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon @@ -37,8 +37,8 @@ fn F(T:! Empty) { // CHECK:STDOUT: %T.param_patt: %Empty.type = param_pattern %T.patt.loc13_6.1, runtime_param [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [template = constants.%Empty.type] -// CHECK:STDOUT: %param: %Empty.type = param runtime_param -// CHECK:STDOUT: %T.loc13_6.1: %Empty.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc13_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: %Empty.type = param runtime_param +// CHECK:STDOUT: %T.loc13_6.1: %Empty.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon b/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon index 3d2abe5c3e3f..26276c0a96cc 100644 --- a/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon @@ -62,15 +62,15 @@ fn H() { // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %T.patt.loc15_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc15_6.1, runtime_param [symbolic = %T.patt.loc15_6.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} {} // CHECK:STDOUT: } @@ -92,11 +92,14 @@ fn H() { // CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.1) = fn_decl @F [symbolic = @I.%F (constants.%F)] { // CHECK:STDOUT: %U.patt.loc12_8.2: type = symbolic_binding_pattern U, 2 [symbolic = %U.patt.loc12_8.1 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc12_8.2, runtime_param [symbolic = %U.patt.loc12_8.1 (constants.%U.patt)] +// CHECK:STDOUT: %return.patt: @F.%U.loc12_8.1 (%U) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%U.loc12_8.1 (%U) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc12_8.2 [symbolic = %U.loc12_8.1 (constants.%U)] -// CHECK:STDOUT: %return: ref @F.%U.loc12_8.1 (%U) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc12_8.2: type = bind_symbolic_name U, 2, %param [symbolic = %U.loc12_8.1 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc12_8.2: type = bind_symbolic_name U, 2, %U.param [symbolic = %U.loc12_8.1 (constants.%U)] +// CHECK:STDOUT: %return.param: @F.%U.loc12_8.1 (%U) = param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%U.loc12_8.1 (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12_22.1: @I.%.loc12_22.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc12_22.3 (constants.%.3)] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/export_name.carbon b/toolchain/check/testdata/interface/no_prelude/export_name.carbon index c019e8112fb1..e81fbd064c17 100644 --- a/toolchain/check/testdata/interface/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/interface/no_prelude/export_name.carbon @@ -112,8 +112,8 @@ fn UseEmpty(i: I) {} // CHECK:STDOUT: %i.param_patt: %I.type = param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.1 [template = constants.%I.type] -// CHECK:STDOUT: %param: %I.type = param runtime_param0 -// CHECK:STDOUT: %i: %I.type = bind_name i, %param +// CHECK:STDOUT: %i.param: %I.type = param runtime_param0 +// CHECK:STDOUT: %i: %I.type = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon b/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon index 3883cccbefa2..6e13cd8a4801 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon @@ -156,8 +156,8 @@ interface Class { } // CHECK:STDOUT: %Self.ref: %.type = name_ref Self, @.1.%Self [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.loc14_14.1: type = facet_type_access %Self.ref [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.loc14_14.2: type = converted %Self.ref, %.loc14_14.1 [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %param: @F.%Self (%Self.2) = param runtime_param0 -// CHECK:STDOUT: %self: @F.%Self (%Self.2) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.%Self (%Self.2) = param runtime_param0 +// CHECK:STDOUT: %self: @F.%Self (%Self.2) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon b/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon index 5df130ddea42..1e290e51298f 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon @@ -75,23 +75,23 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: %T.patt.loc19_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc19_22.1, runtime_param [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc19_22.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc19_22.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc19_22.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_22.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %Generic.decl: %Generic.type = interface_decl @Generic [template = constants.%Generic] { // CHECK:STDOUT: %T.patt.loc21_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc21_19.1, runtime_param [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc21_19.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc21_19.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc21_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_19.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl.loc29: type = interface_decl @.2 [template = constants.%.type.3] {} {} // CHECK:STDOUT: %DifferentParams.decl: %DifferentParams.type = interface_decl @DifferentParams [template = constants.%DifferentParams] { // CHECK:STDOUT: %T.patt.loc31_27.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.3)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc31_27.1, runtime_param [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.3)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc31_27.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc31_27.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc31_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc31_27.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl.loc38: %.type.4 = interface_decl @.3 [template = constants.%.3] { // CHECK:STDOUT: %T.patt.loc38_27.1: %.1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)] @@ -99,8 +99,8 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc38_32.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc38_32.2: type = converted %.loc38_32.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param -// CHECK:STDOUT: %T.loc38_27.1: %.1 = bind_symbolic_name T, 0, %param [symbolic = %T.loc38_27.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %.1 = param runtime_param +// CHECK:STDOUT: %T.loc38_27.1: %.1 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc38_27.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon b/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon index 64401231b8ee..d08aadfc1faf 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon @@ -84,10 +84,14 @@ interface BeingDefined { // CHECK:STDOUT: // CHECK:STDOUT: interface @BeingDefined { // CHECK:STDOUT: %Self: %BeingDefined.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} { +// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %BeingDefined.ref: type = name_ref BeingDefined, file.%BeingDefined.decl [template = constants.%BeingDefined.type] // CHECK:STDOUT: %T.ref: = name_ref T, [template = ] -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc45: %.3 = assoc_entity element0, %H.decl [template = constants.%.4] // CHECK:STDOUT: %.decl: %.type.2 = fn_decl @.2 [template = constants.%.5] {} {} diff --git a/toolchain/check/testdata/interface/no_prelude/fail_todo_facet_lookup.carbon b/toolchain/check/testdata/interface/no_prelude/fail_todo_facet_lookup.carbon index f78bb592797e..15256361bda3 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_todo_facet_lookup.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_todo_facet_lookup.carbon @@ -56,8 +56,8 @@ fn CallFacet(T:! Interface, x: T) { // CHECK:STDOUT: %T.param_patt: %Interface.type = param_pattern %T.patt.loc13_15.1, runtime_param [symbolic = %T.patt.loc13_15.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] -// CHECK:STDOUT: %param: %Interface.type = param runtime_param -// CHECK:STDOUT: %T.loc13_15.1: %Interface.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc13_15.2 (constants.%T)] +// CHECK:STDOUT: %T.param: %Interface.type = param runtime_param +// CHECK:STDOUT: %T.loc13_15.1: %Interface.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallFacet.decl: %CallFacet.type = fn_decl @CallFacet [template = constants.%CallFacet] { // CHECK:STDOUT: %T.patt.loc21_14.1: %Interface.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_14.2 (constants.%T.patt.2)] @@ -69,10 +69,10 @@ fn CallFacet(T:! Interface, x: T) { // CHECK:STDOUT: %T.ref: %Interface.type = name_ref T, %T.loc21_14.1 [symbolic = %T.loc21_14.2 (constants.%T)] // CHECK:STDOUT: %.loc21_32.1: type = facet_type_access %T.ref [symbolic = %T.loc21_14.2 (constants.%T)] // CHECK:STDOUT: %.loc21_32.2: type = converted %T.ref, %.loc21_32.1 [symbolic = %T.loc21_14.2 (constants.%T)] -// CHECK:STDOUT: %param.loc21_15: %Interface.type = param runtime_param -// CHECK:STDOUT: %T.loc21_14.1: %Interface.type = bind_symbolic_name T, 0, %param.loc21_15 [symbolic = %T.loc21_14.2 (constants.%T)] -// CHECK:STDOUT: %param.loc21_30: @CallFacet.%T.loc21_14.2 (%T) = param runtime_param0 -// CHECK:STDOUT: %x: @CallFacet.%T.loc21_14.2 (%T) = bind_name x, %param.loc21_30 +// CHECK:STDOUT: %T.param: %Interface.type = param runtime_param +// CHECK:STDOUT: %T.loc21_14.1: %Interface.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_14.2 (constants.%T)] +// CHECK:STDOUT: %x.param: @CallFacet.%T.loc21_14.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %x: @CallFacet.%T.loc21_14.2 (%T) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon b/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon index 7a8c6ce06e45..d6ff8bdd315f 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon @@ -48,15 +48,17 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_13.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [symbolic = constants.%.4] { // CHECK:STDOUT: %self.patt: @.1.%Self (%Self) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @.1.%Self (%Self) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @.1.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%Self (%Self) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %param.loc22_7: type = param runtime_param -// CHECK:STDOUT: %T.loc22_6.1: type = bind_symbolic_name T, 0, %param.loc22_7 [symbolic = %T.loc22_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc22_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc22_6.2 (constants.%T)] // CHECK:STDOUT: %.loc22_24.1: @.1.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.ref.loc22_24: @.1.%I.type (%I.type.2) = name_ref Self, %.loc22_24.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc22_24.2: type = facet_type_access %Self.ref.loc22_24 [symbolic = %Self (constants.%Self)] @@ -65,9 +67,10 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %Self.ref.loc22_35: @.1.%I.type (%I.type.2) = name_ref Self, %.loc22_35.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc22_35.2: type = facet_type_access %Self.ref.loc22_35 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc22_35.3: type = converted %Self.ref.loc22_35, %.loc22_35.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @.1.%Self (%Self) = var -// CHECK:STDOUT: %param.loc22_22: @.1.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @.1.%Self (%Self) = bind_name self, %param.loc22_22 +// CHECK:STDOUT: %self.param: @.1.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @.1.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @.1.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %return: ref @.1.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -88,6 +91,8 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %F.decl: @I.%F.type (%F.type) = fn_decl @F [symbolic = @I.%F (constants.%F)] { // CHECK:STDOUT: %self.patt: @F.%Self (%Self) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.%Self (%Self) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%Self (%Self) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_14.1: @F.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.ref.loc13_14: @F.%I.type (%I.type.2) = name_ref Self, %.loc13_14.1 [symbolic = %Self (constants.%Self)] @@ -97,9 +102,10 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %Self.ref.loc13_25: @F.%I.type (%I.type.2) = name_ref Self, %.loc13_25.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc13_25.2: type = facet_type_access %Self.ref.loc13_25 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc13_25.3: type = converted %Self.ref.loc13_25, %.loc13_25.2 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @F.%Self (%Self) = var -// CHECK:STDOUT: %param: @F.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @F.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @F.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @F.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13_29.1: @I.%.loc13_29.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc13_29.3 (constants.%.3)] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/generic.carbon b/toolchain/check/testdata/interface/no_prelude/generic.carbon index f55743d7b1e1..13a8f7b88472 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic.carbon @@ -122,16 +122,16 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_18.1, runtime_param [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_18.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_18.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {} // CHECK:STDOUT: %WithAssocFn.decl: %WithAssocFn.type.1 = interface_decl @WithAssocFn [template = constants.%WithAssocFn] { // CHECK:STDOUT: %T.patt.loc8_23.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_23.1, runtime_param [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_23.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_23.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_23.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_23.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %WithImplicitArgs.decl: %WithImplicitArgs.type = interface_decl @WithImplicitArgs [template = constants.%WithImplicitArgs] { @@ -141,10 +141,10 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %N.param_patt: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = param_pattern %N.patt.loc22_38.1, runtime_param [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc22_28.1 [symbolic = %T.loc22_28.2 (constants.%T.1)] -// CHECK:STDOUT: %param.loc22_29: type = param runtime_param -// CHECK:STDOUT: %T.loc22_28.1: type = bind_symbolic_name T, 0, %param.loc22_29 [symbolic = %T.loc22_28.2 (constants.%T.1)] -// CHECK:STDOUT: %param.loc22_39: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = param runtime_param -// CHECK:STDOUT: %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = bind_symbolic_name N, 1, %param.loc22_39 [symbolic = %N.loc22_38.2 (constants.%N)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc22_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc22_28.2 (constants.%T.1)] +// CHECK:STDOUT: %N.param: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = param runtime_param +// CHECK:STDOUT: %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc22_38.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %Receive.decl: %Receive.type = fn_decl @Receive [template = constants.%Receive] { // CHECK:STDOUT: %T.patt.loc24_12.1: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.4)] @@ -153,8 +153,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %Simple.ref: %Simple.type.1 = name_ref Simple, file.%Simple.decl [template = constants.%Simple] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Simple.type: type = interface_type @Simple, @Simple(constants.%C) [template = constants.%Simple.type.3] -// CHECK:STDOUT: %param: %Simple.type.3 = param runtime_param -// CHECK:STDOUT: %T.loc24_12.1: %Simple.type.3 = bind_symbolic_name T, 0, %param [symbolic = %T.loc24_12.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %Simple.type.3 = param runtime_param +// CHECK:STDOUT: %T.loc24_12.1: %Simple.type.3 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc24_12.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: %Pass.decl: %Pass.type = fn_decl @Pass [template = constants.%Pass] { // CHECK:STDOUT: %T.patt.loc25_9.1: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.5)] @@ -163,8 +163,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %Simple.ref: %Simple.type.1 = name_ref Simple, file.%Simple.decl [template = constants.%Simple] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Simple.type: type = interface_type @Simple, @Simple(constants.%C) [template = constants.%Simple.type.3] -// CHECK:STDOUT: %param: %Simple.type.3 = param runtime_param -// CHECK:STDOUT: %T.loc25_9.1: %Simple.type.3 = bind_symbolic_name T, 0, %param [symbolic = %T.loc25_9.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %Simple.type.3 = param runtime_param +// CHECK:STDOUT: %T.loc25_9.1: %Simple.type.3 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc25_9.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -199,9 +199,13 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] -// CHECK:STDOUT: %F.decl: @WithAssocFn.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @WithAssocFn.%F (constants.%F.1)] {} { +// CHECK:STDOUT: %F.decl: @WithAssocFn.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @WithAssocFn.%F (constants.%F.1)] { +// CHECK:STDOUT: %return.patt: %X = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %return: ref %X = var +// CHECK:STDOUT: %return.param: %X = param runtime_param0 +// CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_14.1: @WithAssocFn.%.loc10_14.2 (%.4) = assoc_entity element0, %F.decl [symbolic = %.loc10_14.3 (constants.%.5)] // CHECK:STDOUT: @@ -229,9 +233,13 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %Self.ref as %WithAssocFn.type { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} { +// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %return.patt: %X = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %return: ref %X = var +// CHECK:STDOUT: %return.param: %X = param runtime_param0 +// CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = interface_witness (%F.decl) [template = constants.%.9] // CHECK:STDOUT: @@ -416,8 +424,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_19.2 (constants.%T.1)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_19.2 (constants.%T.1)] // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} @@ -428,8 +436,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %Generic.ref: %Generic.type.1 = name_ref Generic, file.%Generic.decl [template = constants.%Generic] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %Generic.type: type = interface_type @Generic, @Generic(constants.%A) [template = constants.%Generic.type.3] -// CHECK:STDOUT: %param: %Generic.type.3 = param runtime_param -// CHECK:STDOUT: %T.loc9_6.1: %Generic.type.3 = bind_symbolic_name T, 0, %param [symbolic = %T.loc9_6.2 (constants.%T.2)] +// CHECK:STDOUT: %T.param: %Generic.type.3 = param runtime_param +// CHECK:STDOUT: %T.loc9_6.1: %Generic.type.3 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_6.2 (constants.%T.2)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %T.patt.loc10_6.1: %Generic.type.4 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.3)] @@ -438,8 +446,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %Generic.ref: %Generic.type.1 = name_ref Generic, file.%Generic.decl [template = constants.%Generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %Generic.type: type = interface_type @Generic, @Generic(constants.%B) [template = constants.%Generic.type.4] -// CHECK:STDOUT: %param: %Generic.type.4 = param runtime_param -// CHECK:STDOUT: %T.loc10_6.1: %Generic.type.4 = bind_symbolic_name T, 0, %param [symbolic = %T.loc10_6.2 (constants.%T.3)] +// CHECK:STDOUT: %T.param: %Generic.type.4 = param runtime_param +// CHECK:STDOUT: %T.loc10_6.1: %Generic.type.4 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_6.2 (constants.%T.3)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/generic_binding_after_assoc_const.carbon b/toolchain/check/testdata/interface/no_prelude/generic_binding_after_assoc_const.carbon index a57f57aa6d67..5b42a9395fd7 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_binding_after_assoc_const.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_binding_after_assoc_const.carbon @@ -50,8 +50,8 @@ interface I { // CHECK:STDOUT: %T.patt.loc12_8.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc12_8.1 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_8.2, runtime_param [symbolic = %T.patt.loc12_8.1 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc12_8.2: type = bind_symbolic_name T, 1, %param [symbolic = %T.loc12_8.1 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc12_8.2: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc12_8.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: %U: type = assoc_const_decl U [template] @@ -60,8 +60,8 @@ interface I { // CHECK:STDOUT: %T.patt.loc16_8.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc16_8.1 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc16_8.2, runtime_param [symbolic = %T.patt.loc16_8.1 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc16_8.2: type = bind_symbolic_name T, 1, %param [symbolic = %T.loc16_8.1 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc16_8.2: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc16_8.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16: %.6 = assoc_entity element2, %G.decl [template = constants.%.7] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon index 2be2b8c69d90..4df6b6834d33 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon @@ -51,8 +51,8 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_19.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_19.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon b/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon index bfb2eac6f52a..db68aba63189 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon @@ -102,15 +102,15 @@ interface A(T: type) {} // CHECK:STDOUT: %T.patt.loc6_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_28.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_28.1, runtime_param [symbolic = %T.patt.loc6_28.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc6_28.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc6_28.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc6_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_28.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.1] { // CHECK:STDOUT: %T.patt.loc8_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_9.1, runtime_param [symbolic = %T.patt.loc8_9.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_9.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {} // CHECK:STDOUT: impl_decl @impl.1 [template] {} { @@ -262,8 +262,8 @@ interface A(T: type) {} // CHECK:STDOUT: %U.patt.loc10_30.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_30.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc10_30.1, runtime_param [symbolic = %U.patt.loc10_30.2 (constants.%U.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc10_30.1: type = bind_symbolic_name U, 1, %param [symbolic = %U.loc10_30.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc10_30.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc10_30.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/import.carbon b/toolchain/check/testdata/interface/no_prelude/import.carbon index eb28df4fb129..0bbca5f3e28f 100644 --- a/toolchain/check/testdata/interface/no_prelude/import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import.carbon @@ -216,24 +216,24 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %e.param_patt: %Empty.type = param_pattern %e.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, imports.%import_ref.1 [template = constants.%Empty.type] -// CHECK:STDOUT: %param: %Empty.type = param runtime_param0 -// CHECK:STDOUT: %e: %Empty.type = bind_name e, %param +// CHECK:STDOUT: %e.param: %Empty.type = param runtime_param0 +// CHECK:STDOUT: %e: %Empty.type = bind_name e, %e.param // CHECK:STDOUT: } // CHECK:STDOUT: %UseBasic.decl: %UseBasic.type = fn_decl @UseBasic [template = constants.%UseBasic] { // CHECK:STDOUT: %e.patt: %Basic.type = binding_pattern e // CHECK:STDOUT: %e.param_patt: %Basic.type = param_pattern %e.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Basic.ref: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type] -// CHECK:STDOUT: %param: %Basic.type = param runtime_param0 -// CHECK:STDOUT: %e: %Basic.type = bind_name e, %param +// CHECK:STDOUT: %e.param: %Basic.type = param runtime_param0 +// CHECK:STDOUT: %e: %Basic.type = bind_name e, %e.param // CHECK:STDOUT: } // CHECK:STDOUT: %UseForwardDeclared.decl: %UseForwardDeclared.type = fn_decl @UseForwardDeclared [template = constants.%UseForwardDeclared] { // CHECK:STDOUT: %f.patt: %ForwardDeclared.type = binding_pattern f // CHECK:STDOUT: %f.param_patt: %ForwardDeclared.type = param_pattern %f.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type] -// CHECK:STDOUT: %param: %ForwardDeclared.type = param runtime_param0 -// CHECK:STDOUT: %f: %ForwardDeclared.type = bind_name f, %param +// CHECK:STDOUT: %f.param: %ForwardDeclared.type = param runtime_param0 +// CHECK:STDOUT: %f: %ForwardDeclared.type = bind_name f, %f.param // CHECK:STDOUT: } // CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type] // CHECK:STDOUT: %T.ref.loc10: %.2 = name_ref T, imports.%import_ref.7 [template = constants.%.3] diff --git a/toolchain/check/testdata/interface/no_prelude/import_access.carbon b/toolchain/check/testdata/interface/no_prelude/import_access.carbon index a7ac1f61ee4f..d4403846c80f 100644 --- a/toolchain/check/testdata/interface/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import_access.carbon @@ -218,8 +218,8 @@ private interface Redecl {} // CHECK:STDOUT: %i.param_patt: %Def.type = param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Def.ref: type = name_ref Def, imports.%import_ref.1 [template = constants.%Def.type] -// CHECK:STDOUT: %param: %Def.type = param runtime_param0 -// CHECK:STDOUT: %i: %Def.type = bind_name i, %param +// CHECK:STDOUT: %i.param: %Def.type = param runtime_param0 +// CHECK:STDOUT: %i: %Def.type = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -252,8 +252,8 @@ private interface Redecl {} // CHECK:STDOUT: %i.param_patt: = param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Def.ref: = name_ref Def, [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,8 +288,8 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [template = imports.%Test] // CHECK:STDOUT: %Def.ref: = name_ref Def, [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -325,8 +325,8 @@ private interface Redecl {} // CHECK:STDOUT: %i.param_patt: %ForwardWithDef.type = param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %ForwardWithDef.ref: type = name_ref ForwardWithDef, imports.%import_ref.1 [template = constants.%ForwardWithDef.type] -// CHECK:STDOUT: %param: %ForwardWithDef.type = param runtime_param0 -// CHECK:STDOUT: %i: %ForwardWithDef.type = bind_name i, %param +// CHECK:STDOUT: %i.param: %ForwardWithDef.type = param runtime_param0 +// CHECK:STDOUT: %i: %ForwardWithDef.type = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -359,8 +359,8 @@ private interface Redecl {} // CHECK:STDOUT: %i.param_patt: = param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %ForwardWithDef.ref: = name_ref ForwardWithDef, [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -395,8 +395,8 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [template = imports.%Test] // CHECK:STDOUT: %ForwardWithDef.ref: = name_ref ForwardWithDef, [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -428,8 +428,8 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [template = ] // CHECK:STDOUT: %.loc8: type = ptr_type [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: %Forward.decl: type = interface_decl @Forward [template = constants.%Forward.type] {} {} // CHECK:STDOUT: } @@ -466,8 +466,8 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [template = ] // CHECK:STDOUT: %.loc10: type = ptr_type [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -502,8 +502,8 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [template = ] // CHECK:STDOUT: %.loc9: type = ptr_type [template = ] -// CHECK:STDOUT: %param: = param runtime_param0 -// CHECK:STDOUT: %i: = bind_name i, %param +// CHECK:STDOUT: %i.param: = param runtime_param0 +// CHECK:STDOUT: %i: = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/self.carbon b/toolchain/check/testdata/interface/no_prelude/self.carbon index 590b411a5021..e8bec2f72b29 100644 --- a/toolchain/check/testdata/interface/no_prelude/self.carbon +++ b/toolchain/check/testdata/interface/no_prelude/self.carbon @@ -36,6 +36,8 @@ interface UseSelf { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: @F.%Self (%Self) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.%Self (%Self) = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%Self (%Self) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%Self (%Self) = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc12_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_14.1: type = facet_type_access %Self.ref.loc12_14 [symbolic = %Self (constants.%Self)] @@ -43,9 +45,10 @@ interface UseSelf { // CHECK:STDOUT: %Self.ref.loc12_25: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_25.1: type = facet_type_access %Self.ref.loc12_25 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %.loc12_25.2: type = converted %Self.ref.loc12_25, %.loc12_25.1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %return: ref @F.%Self (%Self) = var -// CHECK:STDOUT: %param: @F.%Self (%Self) = param runtime_param0 -// CHECK:STDOUT: %self: @F.%Self (%Self) = bind_name self, %param +// CHECK:STDOUT: %self.param: @F.%Self (%Self) = param runtime_param0 +// CHECK:STDOUT: %self: @F.%Self (%Self) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: @F.%Self (%Self) = param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%Self (%Self) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon index af9af796a6ab..972e65b631a6 100644 --- a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon @@ -222,32 +222,32 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %param.loc7 [symbolic = %a.loc7_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc8: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc8: %C = param runtime_param -// CHECK:STDOUT: %a.loc8: %C = bind_symbolic_name a, 0, %param.loc8 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc8: %C = param runtime_param +// CHECK:STDOUT: %a.loc8: %C = bind_symbolic_name a, 0, %a.param.loc8 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl.loc10: %Bar.type.1 = interface_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt.loc10_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt.3)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc10_15.1, runtime_param [symbolic = %a.patt.loc10_15.2 (constants.%a.patt.3)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param.loc10: %C = param runtime_param -// CHECK:STDOUT: %a.loc10_15.1: %C = bind_symbolic_name a, 0, %param.loc10 [symbolic = %a.loc10_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc10: %C = param runtime_param +// CHECK:STDOUT: %a.loc10_15.1: %C = bind_symbolic_name a, 0, %a.param.loc10 [symbolic = %a.loc10_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl.loc11: %Bar.type.1 = interface_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt.loc10_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt.3)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc10_15.1, runtime_param [symbolic = %a.patt.loc10_15.2 (constants.%a.patt.3)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param.loc11: %C = param runtime_param -// CHECK:STDOUT: %a.loc11: %C = bind_symbolic_name a, 0, %param.loc11 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc11: %C = param runtime_param +// CHECK:STDOUT: %a.loc11: %C = bind_symbolic_name a, 0, %a.param.loc11 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -339,16 +339,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_21.1, runtime_param [symbolic = %a.patt.loc6_21.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc6: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_21.1: %C = bind_symbolic_name a, 0, %param.loc6 [symbolic = %a.loc6_21.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_21.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_21.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt.loc6_21.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_21.2 (constants.%a.patt.1)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_21.1, runtime_param [symbolic = %a.patt.loc6_21.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param -// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %param.loc7 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param +// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -415,16 +415,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_15.1, runtime_param [symbolic = %a.patt.loc6_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc6_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc14_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc14_15.1, runtime_param [symbolic = %a.patt.loc14_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc14_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc14_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc14_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc14_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -501,16 +501,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_15.1, runtime_param [symbolic = %a.patt.loc6_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc6: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %param.loc6 [symbolic = %a.loc6_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_15.1, runtime_param [symbolic = %a.patt.loc6_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc7: %C = param runtime_param -// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %param.loc7 [symbolic = constants.%a] +// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param +// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -579,16 +579,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = interface_decl @Bar [template = constants.%Bar] { // CHECK:STDOUT: %a.patt.loc8_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc8_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc8_15.1, runtime_param [symbolic = %a.patt.loc8_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc8_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc8_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc8_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc8_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -670,16 +670,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc12_15.1, runtime_param [symbolic = %a.patt.loc12_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc12_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc12_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc12_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc12_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl.loc21: %.type.3 = interface_decl @.2 [template = constants.%.5] { // CHECK:STDOUT: %a.patt.loc21_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc21_15.2 (constants.%a.patt.3)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc21_15.1, runtime_param [symbolic = %a.patt.loc21_15.2 (constants.%a.patt.3)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc21_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc21_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc21_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc21_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -799,16 +799,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %b.patt.loc15_15.1: %C = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)] // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt.loc15_15.1, runtime_param [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %b.loc15_15.1: %C = bind_symbolic_name b, 0, %param [symbolic = %b.loc15_15.2 (constants.%b)] +// CHECK:STDOUT: %b.param: %C = param runtime_param +// CHECK:STDOUT: %b.loc15_15.1: %C = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc15_15.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -890,16 +890,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc15_15.1, runtime_param [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc15_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc15_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc15_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -981,16 +981,16 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] { // CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc15_15.1, runtime_param [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc15_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc15_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc15_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1064,8 +1064,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc6_15.1, runtime_param [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc6_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1127,8 +1127,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc17_15.1, runtime_param [symbolic = %a.patt.loc17_15.2 (constants.%a.patt.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param -// CHECK:STDOUT: %a.loc17_15.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc17_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %C = param runtime_param +// CHECK:STDOUT: %a.loc17_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc17_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1207,8 +1207,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc6: type = const_type %C [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param -// CHECK:STDOUT: %a.loc6_15.1: %.3 = bind_symbolic_name a, 0, %param [symbolic = %a.loc6_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %.3 = param runtime_param +// CHECK:STDOUT: %a.loc6_15.1: %.3 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.5] { // CHECK:STDOUT: %a.patt.loc17_15.1: %.3 = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt.2)] @@ -1217,8 +1217,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc17_26: type = const_type %C [template = constants.%.3] // CHECK:STDOUT: %.loc17_19: type = const_type %.3 [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param -// CHECK:STDOUT: %a.loc17_15.1: %.3 = bind_symbolic_name a, 0, %param [symbolic = %a.loc17_15.2 (constants.%a)] +// CHECK:STDOUT: %a.param: %.3 = param runtime_param +// CHECK:STDOUT: %a.loc17_15.1: %.3 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc17_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/todo_define_not_default.carbon b/toolchain/check/testdata/interface/todo_define_not_default.carbon index 4ac3b134e5d4..ced25c14aaad 100644 --- a/toolchain/check/testdata/interface/todo_define_not_default.carbon +++ b/toolchain/check/testdata/interface/todo_define_not_default.carbon @@ -56,7 +56,7 @@ interface I { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,6 +77,8 @@ interface I { // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: i32 = binding_pattern b // CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc14_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_11.1: type = value_of_initializer %int.make_type_32.loc14_11 [template = i32] @@ -87,11 +89,12 @@ interface I { // CHECK:STDOUT: %int.make_type_32.loc14_27: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_27.1: type = value_of_initializer %int.make_type_32.loc14_27 [template = i32] // CHECK:STDOUT: %.loc14_27.2: type = converted %int.make_type_32.loc14_27, %.loc14_27.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param.loc14_9: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc14_9 -// CHECK:STDOUT: %param.loc14_17: i32 = param runtime_param1 -// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc14_17 +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: i32 = param runtime_param1 +// CHECK:STDOUT: %b: i32 = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param2 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: %.4 = assoc_entity element1, %G.decl [template = constants.%.5] // CHECK:STDOUT: %int.make_type_32.loc18_19: init type = call constants.%Int32() [template = i32] diff --git a/toolchain/check/testdata/ir/duplicate_name_same_line.carbon b/toolchain/check/testdata/ir/duplicate_name_same_line.carbon index c7936395c01e..de6ea37db9aa 100644 --- a/toolchain/check/testdata/ir/duplicate_name_same_line.carbon +++ b/toolchain/check/testdata/ir/duplicate_name_same_line.carbon @@ -35,7 +35,7 @@ fn A() { if (true) { var n: i32 = 1; } if (true) { var n: i32 = 2; } } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index 43935d753507..892174c88035 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -197,10 +197,14 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc10_12.2: type = converted %.loc10_12.1, constants.%.1 [template = constants.%.1] @@ -263,10 +267,14 @@ impl i32 as Empty { // CHECK:STDOUT: %tuple: %.1 = tuple_value () [template = constants.%tuple] // CHECK:STDOUT: %.loc9_18: %.1 = converted %.loc9_17, %tuple [template = constants.%tuple] // CHECK:STDOUT: %x: %.1 = bind_name x, %.loc9_18 -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_14.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc10_14.2: type = converted %.loc10_14.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -342,8 +350,8 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc10_16.1: %.2 = tuple_literal (%.loc10_14) // CHECK:STDOUT: %.loc10_16.2: type = converted %.loc10_14, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc10_16.3: type = converted %.loc10_16.1, constants.%.2 [template = constants.%.2] -// CHECK:STDOUT: %param: %.2 = param runtime_param -// CHECK:STDOUT: %b.loc10_8.2: %.2 = bind_symbolic_name b, 0, %param [symbolic = %b.loc10_8.1 (constants.%b)] +// CHECK:STDOUT: %b.param: %.2 = param runtime_param +// CHECK:STDOUT: %b.loc10_8.2: %.2 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc10_8.1 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22_13: %.1 = tuple_literal () // CHECK:STDOUT: %.loc22_17: %.1 = tuple_literal () @@ -512,10 +520,14 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc14_12.2: type = converted %.loc14_12.1, constants.%.1 [template = constants.%.1] @@ -560,7 +572,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -569,11 +581,15 @@ impl i32 as Empty { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4 [template = i32] // CHECK:STDOUT: %.loc4_11.2: type = converted %int.make_type_32.loc4, %.loc4_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -616,7 +632,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -625,11 +641,15 @@ impl i32 as Empty { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc4: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_11.1: type = value_of_initializer %int.make_type_32.loc4 [template = i32] // CHECK:STDOUT: %.loc4_11.2: type = converted %int.make_type_32.loc4, %.loc4_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -700,13 +720,13 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -725,13 +745,17 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc5_21.2: type = converted %int.make_type_32, %.loc5_21.1 [template = i32] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] // CHECK:STDOUT: %.loc5_21.3: %.2 = assoc_entity element0, %T [template = constants.%.3] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %.2 = name_ref T, @I.%.loc5_21.3 [template = constants.%.3] // CHECK:STDOUT: %ImplicitAs.type: type = interface_type @ImplicitAs, @ImplicitAs(type) [template = constants.%ImplicitAs.type.3] // CHECK:STDOUT: %.loc13_13.1: %.6 = specific_constant imports.%import_ref.4, @ImplicitAs(type) [template = constants.%.7] // CHECK:STDOUT: %Convert.ref: %.6 = name_ref Convert, %.loc13_13.1 [template = constants.%.7] // CHECK:STDOUT: %.loc13_13.2: type = converted %T.ref, [template = ] -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc13: %.9 = assoc_entity element1, %F.decl [template = constants.%.10] // CHECK:STDOUT: @@ -838,7 +862,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -855,9 +879,13 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc9_21.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc9_21.2: type = converted %int.make_type_32, %.loc9_21.1 [template = i32] // CHECK:STDOUT: %T: type = bind_name T, %.loc9_21.2 -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @I.%T -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -893,7 +921,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -903,9 +931,13 @@ impl i32 as Empty { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @__global_init.%T -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -946,7 +978,7 @@ impl i32 as Empty { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/convert.carbon b/toolchain/check/testdata/let/convert.carbon index 7ba25fe97f19..63c9f63cc8be 100644 --- a/toolchain/check/testdata/let/convert.carbon +++ b/toolchain/check/testdata/let/convert.carbon @@ -44,7 +44,7 @@ fn F() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -53,11 +53,15 @@ fn F() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32.loc11, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_duplicate_decl.carbon b/toolchain/check/testdata/let/fail_duplicate_decl.carbon index af62635b8f08..a3d6a9303263 100644 --- a/toolchain/check/testdata/let/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/let/fail_duplicate_decl.carbon @@ -43,7 +43,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/fail_generic.carbon b/toolchain/check/testdata/let/fail_generic.carbon index 284c64bfb9d4..ce8c99124a66 100644 --- a/toolchain/check/testdata/let/fail_generic.carbon +++ b/toolchain/check/testdata/let/fail_generic.carbon @@ -75,13 +75,13 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -93,6 +93,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_9.1: type = value_of_initializer %int.make_type_32.loc12_9 [template = i32] @@ -100,9 +102,10 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc12_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_17.1: type = value_of_initializer %int.make_type_32.loc12_17 [template = i32] // CHECK:STDOUT: %.loc12_17.2: type = converted %int.make_type_32.loc12_17, %.loc12_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_generic_import.carbon b/toolchain/check/testdata/let/fail_generic_import.carbon index 265f22534571..8fe8bc84fe9f 100644 --- a/toolchain/check/testdata/let/fail_generic_import.carbon +++ b/toolchain/check/testdata/let/fail_generic_import.carbon @@ -48,7 +48,7 @@ let a: T = 0; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/fail_missing_value.carbon b/toolchain/check/testdata/let/fail_missing_value.carbon index 5ef03a1dd8da..9b4871273b53 100644 --- a/toolchain/check/testdata/let/fail_missing_value.carbon +++ b/toolchain/check/testdata/let/fail_missing_value.carbon @@ -43,7 +43,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/fail_modifiers.carbon b/toolchain/check/testdata/let/fail_modifiers.carbon index 4f448eac3e74..d5b75ddfbb13 100644 --- a/toolchain/check/testdata/let/fail_modifiers.carbon +++ b/toolchain/check/testdata/let/fail_modifiers.carbon @@ -104,7 +104,7 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/fail_use_in_init.carbon b/toolchain/check/testdata/let/fail_use_in_init.carbon index 0eda57a86fab..65fed3da4ee1 100644 --- a/toolchain/check/testdata/let/fail_use_in_init.carbon +++ b/toolchain/check/testdata/let/fail_use_in_init.carbon @@ -37,7 +37,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/generic.carbon b/toolchain/check/testdata/let/generic.carbon index 2fbd9cf4906c..43393ce59955 100644 --- a/toolchain/check/testdata/let/generic.carbon +++ b/toolchain/check/testdata/let/generic.carbon @@ -38,7 +38,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/generic_import.carbon b/toolchain/check/testdata/let/generic_import.carbon index 703d5d9df520..3731a56b0477 100644 --- a/toolchain/check/testdata/let/generic_import.carbon +++ b/toolchain/check/testdata/let/generic_import.carbon @@ -52,7 +52,7 @@ var b: T = *a; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/let/global.carbon b/toolchain/check/testdata/let/global.carbon index e91efdabf94a..9727696b5b15 100644 --- a/toolchain/check/testdata/let/global.carbon +++ b/toolchain/check/testdata/let/global.carbon @@ -35,7 +35,7 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -48,11 +48,15 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_8.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_8.2: type = converted %int.make_type_32, %.loc11_8.1 [template = i32] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_11.2: type = converted %int.make_type_32, %.loc13_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/local.carbon b/toolchain/check/testdata/let/local.carbon index 23496eac6b2e..63e3935c7450 100644 --- a/toolchain/check/testdata/let/local.carbon +++ b/toolchain/check/testdata/let/local.carbon @@ -35,7 +35,7 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -47,6 +47,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32.loc11_9 [template = i32] @@ -54,9 +56,10 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc11_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_17.1: type = value_of_initializer %int.make_type_32.loc11_17 [template = i32] // CHECK:STDOUT: %.loc11_17.2: type = converted %int.make_type_32.loc11_17, %.loc11_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/shadowed_decl.carbon b/toolchain/check/testdata/let/shadowed_decl.carbon index 066a29f24d59..d5c8f3639eca 100644 --- a/toolchain/check/testdata/let/shadowed_decl.carbon +++ b/toolchain/check/testdata/let/shadowed_decl.carbon @@ -37,7 +37,7 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -49,6 +49,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %a.patt: i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_9: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32.loc11_9 [template = i32] @@ -56,9 +58,10 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc11_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_17.1: type = value_of_initializer %int.make_type_32.loc11_17 [template = i32] // CHECK:STDOUT: %.loc11_17.2: type = converted %int.make_type_32.loc11_17, %.loc11_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %a.loc11: i32 = bind_name a, %param +// CHECK:STDOUT: %a.param: i32 = param runtime_param0 +// CHECK:STDOUT: %a.loc11: i32 = bind_name a, %a.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index 247fd984a4da..e1c496771578 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -73,7 +73,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,11 +85,15 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %Implicit.import = import Implicit // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} { +// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc4_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc4_14.2: type = converted %int.make_type_32, %.loc4_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc6_8.1: type = value_of_initializer %int.make_type_32 [template = i32] diff --git a/toolchain/check/testdata/namespace/alias.carbon b/toolchain/check/testdata/namespace/alias.carbon index 7cf072ed14ad..9f34420d291b 100644 --- a/toolchain/check/testdata/namespace/alias.carbon +++ b/toolchain/check/testdata/namespace/alias.carbon @@ -47,7 +47,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -65,26 +65,38 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: } // CHECK:STDOUT: %NS.ref.loc13: = name_ref NS, %NS [template = %NS] // CHECK:STDOUT: %ns: = bind_alias ns, %NS [template = %NS] -// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} { +// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc15_14.2: type = converted %int.make_type_32, %.loc15_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {} { +// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc17_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc17_11.2: type = converted %int.make_type_32, %.loc17_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %NS.ref.loc19: = name_ref NS, %NS [template = %NS] // CHECK:STDOUT: %A.ref: %A.type = name_ref A, %A.decl [template = constants.%A] // CHECK:STDOUT: %C: %A.type = bind_alias C, %A.decl [template = constants.%A] -// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} { +// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc21_11.2: type = converted %int.make_type_32, %.loc21_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon index 35ba7b6c324e..15c81418950d 100644 --- a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon +++ b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon @@ -44,7 +44,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -57,11 +57,15 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %NS: = namespace [template] {} // CHECK:STDOUT: %NS.ref: = name_ref NS, %NS [template = %NS] // CHECK:STDOUT: %ns: = bind_alias ns, %NS [template = %NS] -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.2] {} { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.2] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc22_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc22_14.2: type = converted %int.make_type_32, %.loc22_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_params.carbon b/toolchain/check/testdata/namespace/fail_params.carbon index de574b1bca5f..9cd326a71d7b 100644 --- a/toolchain/check/testdata/namespace/fail_params.carbon +++ b/toolchain/check/testdata/namespace/fail_params.carbon @@ -65,7 +65,7 @@ fn D(T:! type).F() {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -84,19 +84,19 @@ fn D(T:! type).F() {} // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc24_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc24_16.2: type = converted %int.make_type_32, %.loc24_16.1 [template = i32] -// CHECK:STDOUT: %param.loc24: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param.loc24 +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: %B: = namespace [template] {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T [symbolic = constants.%T] -// CHECK:STDOUT: %param.loc30_14: type = param runtime_param -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %param.loc30_14 [symbolic = constants.%T] -// CHECK:STDOUT: %param.loc30_24: %T = param runtime_param0 -// CHECK:STDOUT: %x: %T = bind_name x, %param.loc30_24 +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] +// CHECK:STDOUT: %x.param: %T = param runtime_param0 +// CHECK:STDOUT: %x: %T = bind_name x, %x.param // CHECK:STDOUT: %C: = namespace [template] {} // CHECK:STDOUT: %D: = namespace [template] {} // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.2] {} { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc39_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc39_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc39_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc39_6.2 (constants.%T)] // CHECK:STDOUT: } // 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 6161b6cac1a1..48084d59f156 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -128,10 +128,14 @@ fn Run() { // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %A = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %A = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %NS1.ref: = name_ref NS1, imports.%NS1 [template = imports.%NS1] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] -// CHECK:STDOUT: %return: ref %A = var +// CHECK:STDOUT: %return.param: %A = param runtime_param0 +// CHECK:STDOUT: %return: ref %A = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -186,7 +190,7 @@ fn Run() { // CHECK:STDOUT: import Other//b // CHECK:STDOUT: import Other//a // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Other//b, inst+19, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Other//b, inst+22, loaded [template = constants.%F] // CHECK:STDOUT: %import_ref.2 = import_ref Other//b, inst+16, unloaded // CHECK:STDOUT: %import_ref.3: = import_ref Other//b, inst+4, loaded // CHECK:STDOUT: %NS1: = namespace %import_ref.3, [template] { diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index 91905d3a7ea2..e218bd723867 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -55,7 +55,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -74,11 +74,15 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %M: = namespace [template] { // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {} { +// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc18: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_15.1: type = value_of_initializer %int.make_type_32.loc18 [template = i32] // CHECK:STDOUT: %.loc18_15.2: type = converted %int.make_type_32.loc18, %.loc18_15.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/and.carbon b/toolchain/check/testdata/operators/builtin/and.carbon index c70dc4c1af5a..798dc323f9b9 100644 --- a/toolchain/check/testdata/operators/builtin/and.carbon +++ b/toolchain/check/testdata/operators/builtin/and.carbon @@ -59,7 +59,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -72,23 +72,35 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: .PartialConstant = %PartialConstant.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc11_11.2: type = converted %bool.make_type, %.loc11_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_11.2: type = converted %bool.make_type, %.loc12_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %And.decl: %And.type = fn_decl @And [template = constants.%And] {} { +// CHECK:STDOUT: %And.decl: %And.type = fn_decl @And [template = constants.%And] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_13.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc14_13.2: type = converted %bool.make_type, %.loc14_13.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Constant.decl: %Constant.type = fn_decl @Constant [template = constants.%Constant] {} {} // CHECK:STDOUT: %PartialConstant.decl: %PartialConstant.type = fn_decl @PartialConstant [template = constants.%PartialConstant] { @@ -98,8 +110,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %bool.make_type.loc25: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc25_23.1: type = value_of_initializer %bool.make_type.loc25 [template = bool] // CHECK:STDOUT: %.loc25_23.2: type = converted %bool.make_type.loc25, %.loc25_23.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %x: bool = bind_name x, %param +// CHECK:STDOUT: %x.param: bool = param runtime_param0 +// CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/assignment.carbon b/toolchain/check/testdata/operators/builtin/assignment.carbon index 9b6af0d12c32..2241edd9d94f 100644 --- a/toolchain/check/testdata/operators/builtin/assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/assignment.carbon @@ -66,7 +66,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon index e14fe0ba5a55..eaefb4028230 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon @@ -72,14 +72,14 @@ var or_: F(true or true); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.3: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.3: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: %.loc42_17: bool = block_arg [template = constants.%.3] -// CHECK:STDOUT: %F.call: init type = call .inst+64.loc42_10(%.loc42_17) +// CHECK:STDOUT: %F.call: init type = call .inst+67.loc42_10(%.loc42_17) // CHECK:STDOUT: %.loc42_24.1: type = value_of_initializer %F.call // CHECK:STDOUT: %.loc42_24.2: type = converted %F.call, %.loc42_24.1 // CHECK:STDOUT: %or_.var: ref = var or_ diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon index 84091a1f534a..5632719c4165 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon @@ -67,7 +67,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -83,8 +83,8 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: %bool.make_type.loc4: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc4_23.1: type = value_of_initializer %bool.make_type.loc4 [template = bool] // CHECK:STDOUT: %.loc4_23.2: type = converted %bool.make_type.loc4, %.loc4_23.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %x: bool = bind_name x, %param +// CHECK:STDOUT: %x.param: bool = param runtime_param0 +// CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -174,7 +174,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -190,8 +190,8 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: %bool.make_type.loc4: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc4_41.1: type = value_of_initializer %bool.make_type.loc4 [template = bool] // CHECK:STDOUT: %.loc4_41.2: type = converted %bool.make_type.loc4, %.loc4_41.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %x: bool = bind_name x, %param +// CHECK:STDOUT: %x.param: bool = param runtime_param0 +// CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index 8827670c2e02..cc7c8917dc5e 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -96,7 +96,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -106,11 +106,15 @@ fn Main() { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon index 9a210dbebaa6..e955bdfd3767 100644 --- a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon @@ -49,7 +49,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -59,11 +59,15 @@ fn Main() { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon index 9bc56a7c28f5..fcf4e379a389 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon @@ -59,13 +59,13 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon index 6029a64b70bb..28f4d6ec95e4 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon @@ -61,13 +61,13 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon index e35e76518a9d..eac8a24f8307 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon @@ -52,12 +52,12 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/arithmetic, inst+1, loaded [template = constants.%Add.type] // CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/arithmetic, inst+3, unloaded -// CHECK:STDOUT: %import_ref.4: %.4 = import_ref Core//prelude/operators/arithmetic, inst+29, loaded [template = constants.%.5] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded +// CHECK:STDOUT: %import_ref.4: %.4 = import_ref Core//prelude/operators/arithmetic, inst+32, loaded [template = constants.%.5] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -66,11 +66,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon index 4b53bf368a20..2786dac9c2b9 100644 --- a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon @@ -46,12 +46,12 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/arithmetic, inst+1, loaded [template = constants.%Add.type] // CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/arithmetic, inst+3, unloaded -// CHECK:STDOUT: %import_ref.4: %.4 = import_ref Core//prelude/operators/arithmetic, inst+29, loaded [template = constants.%.5] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded +// CHECK:STDOUT: %import_ref.4: %.4 = import_ref Core//prelude/operators/arithmetic, inst+32, loaded [template = constants.%.5] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,11 +60,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/or.carbon b/toolchain/check/testdata/operators/builtin/or.carbon index de4aacd4d08f..dafec45418cc 100644 --- a/toolchain/check/testdata/operators/builtin/or.carbon +++ b/toolchain/check/testdata/operators/builtin/or.carbon @@ -59,7 +59,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -72,23 +72,35 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: .PartialConstant = %PartialConstant.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc11_11.2: type = converted %bool.make_type, %.loc11_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_11.2: type = converted %bool.make_type, %.loc12_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Or.decl: %Or.type = fn_decl @Or [template = constants.%Or] {} { +// CHECK:STDOUT: %Or.decl: %Or.type = fn_decl @Or [template = constants.%Or] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_12.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc14_12.2: type = converted %bool.make_type, %.loc14_12.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Constant.decl: %Constant.type = fn_decl @Constant [template = constants.%Constant] {} {} // CHECK:STDOUT: %PartialConstant.decl: %PartialConstant.type = fn_decl @PartialConstant [template = constants.%PartialConstant] { @@ -98,8 +110,8 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %bool.make_type.loc25: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc25_23.1: type = value_of_initializer %bool.make_type.loc25 [template = bool] // CHECK:STDOUT: %.loc25_23.2: type = converted %bool.make_type.loc25, %.loc25_23.1 [template = bool] -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %x: bool = bind_name x, %param +// CHECK:STDOUT: %x.param: bool = param runtime_param0 +// CHECK:STDOUT: %x: bool = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/unary_op.carbon b/toolchain/check/testdata/operators/builtin/unary_op.carbon index 0cd213e390e2..674c0de7179b 100644 --- a/toolchain/check/testdata/operators/builtin/unary_op.carbon +++ b/toolchain/check/testdata/operators/builtin/unary_op.carbon @@ -47,7 +47,7 @@ fn Constant() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -62,6 +62,8 @@ fn Constant() { // CHECK:STDOUT: %Not.decl: %Not.type = fn_decl @Not [template = constants.%Not] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type.loc11_11: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %bool.make_type.loc11_11 [template = bool] @@ -69,9 +71,10 @@ fn Constant() { // CHECK:STDOUT: %bool.make_type.loc11_20: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_20.1: type = value_of_initializer %bool.make_type.loc11_20 [template = bool] // CHECK:STDOUT: %.loc11_20.2: type = converted %bool.make_type.loc11_20, %.loc11_20.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param1 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %bool.make_type.loc15: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc15_15.1: type = value_of_initializer %bool.make_type.loc15 [template = bool] diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index 1c7c832e5ed5..50cd064e2a45 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -81,14 +81,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+1, loaded [template = constants.%Add.type] // CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+3, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+29, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+23, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+31, loaded [template = constants.%AddAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+33, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+58, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+52, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+52, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+32, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+26, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+34, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+36, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+61, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+55, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+55, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %AddAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 2996e6aab801..c4eb3824f0d1 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+24, loaded [template = constants.%BitAnd.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+26, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+51, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+46, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+53, loaded [template = constants.%BitAndAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+55, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+80, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+74, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+46, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+74, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+27, loaded [template = constants.%BitAnd.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+29, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+57, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+52, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+59, loaded [template = constants.%BitAndAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+61, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+86, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+80, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+52, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+80, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %BitAndAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 37ee156bdc68..987bf9e2a948 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -60,9 +60,9 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+1, loaded [template = constants.%BitComplement.type] // CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+3, unloaded -// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/bitwise, inst+22, loaded [template = constants.%.7] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+16, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/bitwise, inst+16, unloaded +// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/bitwise, inst+25, loaded [template = constants.%.7] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+19, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/bitwise, inst+19, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -81,12 +81,15 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc23_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -101,12 +104,15 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %Op.decl: %Op.type.1 = fn_decl @Op.1 [template = constants.%Op.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_23: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -142,8 +148,8 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %Op.ref: %.6 = name_ref Op, imports.%import_ref.3 [template = constants.%.7] // CHECK:STDOUT: %.loc24_10.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc24_10.2: = bound_method %a.ref, %.loc24_10.1 -// CHECK:STDOUT: %.loc23: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc24_10.2(%a.ref) to %.loc23 +// CHECK:STDOUT: %.loc23_17.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc24_10.2(%a.ref) to %.loc23_17.2 // CHECK:STDOUT: return %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 5a0b5488bb67..f5f03c0510b5 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+82, loaded [template = constants.%BitOr.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+84, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+109, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+104, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+111, loaded [template = constants.%BitOrAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+113, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+138, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+132, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+104, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+132, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+88, loaded [template = constants.%BitOr.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+90, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+118, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+113, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+120, loaded [template = constants.%BitOrAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+122, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+147, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+141, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+113, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+141, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %BitOrAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 f06a3dc245de..108442c25f9c 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+140, loaded [template = constants.%BitXor.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+142, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+167, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+162, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+169, loaded [template = constants.%BitXorAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+171, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+196, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+190, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+162, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+190, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+149, loaded [template = constants.%BitXor.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+151, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+179, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+174, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+181, loaded [template = constants.%BitXorAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+183, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+208, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+202, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+174, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+202, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %BitXorAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/dec.carbon b/toolchain/check/testdata/operators/overloaded/dec.carbon index b1623a6958dd..85140aa6da9f 100644 --- a/toolchain/check/testdata/operators/overloaded/dec.carbon +++ b/toolchain/check/testdata/operators/overloaded/dec.carbon @@ -59,11 +59,11 @@ fn TestOp() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+162, loaded [template = constants.%Dec.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+164, unloaded -// CHECK:STDOUT: %import_ref.3: %.8 = import_ref Core//prelude/operators/arithmetic, inst+182, loaded [template = constants.%.9] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+176, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+176, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+171, loaded [template = constants.%Dec.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+173, unloaded +// CHECK:STDOUT: %import_ref.3: %.8 = import_ref Core//prelude/operators/arithmetic, inst+191, loaded [template = constants.%.9] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+185, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+185, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -97,8 +97,8 @@ fn TestOp() { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc18_21: type = ptr_type %C [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %self: %.3 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %self: %.3 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.6] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index b9145fb0c685..6780bbdc0e25 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+242, loaded [template = constants.%Div.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+244, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+269, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+264, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+271, loaded [template = constants.%DivAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+273, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+298, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+292, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+264, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+292, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+254, loaded [template = constants.%Div.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+256, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+284, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+279, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+286, loaded [template = constants.%DivAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+288, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+313, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+307, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+279, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+307, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %DivAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index 7622b902b870..0c42576a0608 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -128,13 +128,13 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, inst+3, loaded [template = constants.%Eq.type] // CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/comparison, inst+5, unloaded -// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/comparison, inst+35, loaded [template = constants.%.7] -// CHECK:STDOUT: %import_ref.4: %.8 = import_ref Core//prelude/operators/comparison, inst+60, loaded [template = constants.%.9] -// CHECK:STDOUT: %import_ref.5: %Equal.type.2 = import_ref Core//prelude/operators/comparison, inst+30, loaded [template = constants.%Equal.2] -// CHECK:STDOUT: %import_ref.6: %NotEqual.type.2 = import_ref Core//prelude/operators/comparison, inst+55, loaded [template = constants.%NotEqual.2] -// CHECK:STDOUT: %import_ref.7: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+30, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/comparison, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/comparison, inst+38, loaded [template = constants.%.7] +// CHECK:STDOUT: %import_ref.4: %.8 = import_ref Core//prelude/operators/comparison, inst+66, loaded [template = constants.%.9] +// CHECK:STDOUT: %import_ref.5: %Equal.type.2 = import_ref Core//prelude/operators/comparison, inst+33, loaded [template = constants.%Equal.2] +// CHECK:STDOUT: %import_ref.6: %NotEqual.type.2 = import_ref Core//prelude/operators/comparison, inst+61, loaded [template = constants.%NotEqual.2] +// CHECK:STDOUT: %import_ref.7: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+33, unloaded +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/comparison, inst+61, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -156,34 +156,40 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc11_17: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc11_23: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_29.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc11_29.2: type = converted %bool.make_type, %.loc11_29.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc11_15: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc11_15 -// CHECK:STDOUT: %param.loc11_21: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc11_21 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestNotEqual.decl: %TestNotEqual.type = fn_decl @TestNotEqual [template = constants.%TestNotEqual] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc15_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc15_26: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc15_32.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc15_32.2: type = converted %bool.make_type, %.loc15_32.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc15_18: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc15_18 -// CHECK:STDOUT: %param.loc15_24: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc15_24 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -201,34 +207,40 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc7_28: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc7_34.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc7_34.2: type = converted %bool.make_type, %.loc7_34.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc7_16: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc7_16 -// CHECK:STDOUT: %param.loc7_26: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc7_26 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.1 = fn_decl @NotEqual.1 [template = constants.%NotEqual.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_21: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc8_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc8_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc8_37.2: type = converted %bool.make_type, %.loc8_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc8_19: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc8_19 -// CHECK:STDOUT: %param.loc8_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc8_29 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6: = interface_witness (%Equal.decl, %NotEqual.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -344,15 +356,15 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/comparison, inst+3, loaded [template = constants.%Eq.type] // CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/comparison, inst+5, unloaded -// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//prelude/operators/comparison, inst+35, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.5: %.7 = import_ref Core//prelude/operators/comparison, inst+60, loaded [template = constants.%.8] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/comparison, inst+30, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/comparison, inst+55, unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+30, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/comparison, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//prelude/operators/comparison, inst+38, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.5: %.7 = import_ref Core//prelude/operators/comparison, inst+66, loaded [template = constants.%.8] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/comparison, inst+33, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/comparison, inst+61, unloaded +// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+33, unloaded +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/comparison, inst+61, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -369,34 +381,40 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc6_17: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %D.ref.loc6_23: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc6_29.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc6_29.2: type = converted %bool.make_type, %.loc6_29.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc6_15: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc6_15 -// CHECK:STDOUT: %param.loc6_21: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc6_21 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestNotEqual.decl: %TestNotEqual.type = fn_decl @TestNotEqual [template = constants.%TestNotEqual] { // CHECK:STDOUT: %a.patt: %D = binding_pattern a // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc14_20: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %D.ref.loc14_26: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_32.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc14_32.2: type = converted %bool.make_type, %.loc14_32.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc14_18: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc14_18 -// CHECK:STDOUT: %param.loc14_24: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc14_24 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -518,19 +536,19 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, inst+3, loaded [template = constants.%Eq.type] // CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/comparison, inst+5, unloaded -// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/comparison, inst+35, loaded [template = constants.%.7] -// CHECK:STDOUT: %import_ref.4: %.13 = import_ref Core//prelude/operators/comparison, inst+60, loaded [template = constants.%.14] -// CHECK:STDOUT: %import_ref.5: %Equal.type.2 = import_ref Core//prelude/operators/comparison, inst+30, loaded [template = constants.%Equal.2] -// CHECK:STDOUT: %import_ref.6: %NotEqual.type.2 = import_ref Core//prelude/operators/comparison, inst+55, loaded [template = constants.%NotEqual.2] -// CHECK:STDOUT: %import_ref.7: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+30, unloaded -// CHECK:STDOUT: %import_ref.9: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.11: @ImplicitAs.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.12)] -// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/comparison, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/comparison, inst+38, loaded [template = constants.%.7] +// CHECK:STDOUT: %import_ref.4: %.13 = import_ref Core//prelude/operators/comparison, inst+66, loaded [template = constants.%.14] +// CHECK:STDOUT: %import_ref.5: %Equal.type.2 = import_ref Core//prelude/operators/comparison, inst+33, loaded [template = constants.%Equal.2] +// CHECK:STDOUT: %import_ref.6: %NotEqual.type.2 = import_ref Core//prelude/operators/comparison, inst+61, loaded [template = constants.%NotEqual.2] +// CHECK:STDOUT: %import_ref.7: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+33, unloaded +// CHECK:STDOUT: %import_ref.9: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.11: @ImplicitAs.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.12)] +// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/comparison, inst+61, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -554,34 +572,40 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_30.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_30.2: type = converted %bool.make_type, %.loc12_30.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc12_16: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc12_16 -// CHECK:STDOUT: %param.loc12_22: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc12_22 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestLhsBad.decl: %TestLhsBad.type = fn_decl @TestLhsBad [template = constants.%TestLhsBad] { // CHECK:STDOUT: %a.patt: %D = binding_pattern a // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc26_30.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc26_30.2: type = converted %bool.make_type, %.loc26_30.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc26_16: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc26_16 -// CHECK:STDOUT: %param.loc26_22: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_22 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -619,34 +643,40 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc8_28: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc8_34.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc8_34.2: type = converted %bool.make_type, %.loc8_34.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc8_16: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc8_16 -// CHECK:STDOUT: %param.loc8_26: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc8_26 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.1 = fn_decl @NotEqual.1 [template = constants.%NotEqual.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc9_21: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc9_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc9_37.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc9_37.2: type = converted %bool.make_type, %.loc9_37.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc9_19: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc9_19 -// CHECK:STDOUT: %param.loc9_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc9_29 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7: = interface_witness (%Equal.decl, %NotEqual.decl) [template = constants.%.4] // 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 9882f08cd654..232a791c1116 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -88,16 +88,16 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+60, loaded [template = constants.%Inc.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+62, unloaded -// CHECK:STDOUT: %import_ref.3: %.10 = import_ref Core//prelude/operators/arithmetic, inst+80, loaded [template = constants.%.11] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+74, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+31, loaded [template = constants.%AddAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+33, unloaded -// CHECK:STDOUT: %import_ref.7: %.12 = import_ref Core//prelude/operators/arithmetic, inst+58, loaded [template = constants.%.13] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+52, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+74, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+52, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+63, loaded [template = constants.%Inc.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+65, unloaded +// CHECK:STDOUT: %import_ref.3: %.10 = import_ref Core//prelude/operators/arithmetic, inst+83, loaded [template = constants.%.11] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+77, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+34, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+36, unloaded +// CHECK:STDOUT: %import_ref.7: %.12 = import_ref Core//prelude/operators/arithmetic, inst+61, loaded [template = constants.%.13] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+55, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+77, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+55, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -124,8 +124,8 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAddAssignNonRef.decl: %TestAddAssignNonRef.type = fn_decl @TestAddAssignNonRef [template = constants.%TestAddAssignNonRef] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a @@ -135,10 +135,10 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc33_27: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc33_33: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc33_25: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc33_25 -// CHECK:STDOUT: %param.loc33_31: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc33_31 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,8 +164,8 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc16_21: type = ptr_type %C [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %self: %.3 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %self: %.3 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15: = interface_witness (%Op.decl) [template = constants.%.6] // CHECK:STDOUT: @@ -185,10 +185,10 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %C.ref.loc19_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc19_21: type = ptr_type %C [template = constants.%.3] // CHECK:STDOUT: %C.ref.loc19_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc19_18: %.3 = param runtime_param0 -// CHECK:STDOUT: %self: %.3 = bind_name self, %param.loc19_18 -// CHECK:STDOUT: %param.loc19_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc19_29 +// CHECK:STDOUT: %self.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %self: %.3 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index 959134f9ce70..35d6cdc981dc 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -99,26 +99,26 @@ fn TestRef(b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+82, loaded [template = constants.%Negate.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+84, unloaded -// CHECK:STDOUT: %import_ref.3: %.5 = import_ref Core//prelude/operators/arithmetic, inst+102, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+85, loaded [template = constants.%Negate.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+87, unloaded +// CHECK:STDOUT: %import_ref.3: %.5 = import_ref Core//prelude/operators/arithmetic, inst+108, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded // CHECK:STDOUT: %import_ref.6: type = import_ref Core//prelude/operators/arithmetic, inst+1, loaded [template = constants.%Add.type] // CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/arithmetic, inst+3, unloaded -// CHECK:STDOUT: %import_ref.8: %.7 = import_ref Core//prelude/operators/arithmetic, inst+29, loaded [template = constants.%.8] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded -// CHECK:STDOUT: %import_ref.11: type = import_ref Core//prelude/operators/arithmetic, inst+31, loaded [template = constants.%AddAssign.type] -// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/arithmetic, inst+33, unloaded -// CHECK:STDOUT: %import_ref.13: %.10 = import_ref Core//prelude/operators/arithmetic, inst+58, loaded [template = constants.%.11] -// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/arithmetic, inst+52, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/arithmetic, inst+52, unloaded -// CHECK:STDOUT: %import_ref.16: type = import_ref Core//prelude/operators/arithmetic, inst+60, loaded [template = constants.%Inc.type] -// CHECK:STDOUT: %import_ref.17 = import_ref Core//prelude/operators/arithmetic, inst+62, unloaded -// CHECK:STDOUT: %import_ref.18: %.13 = import_ref Core//prelude/operators/arithmetic, inst+80, loaded [template = constants.%.14] -// CHECK:STDOUT: %import_ref.19 = import_ref Core//prelude/operators/arithmetic, inst+74, unloaded -// CHECK:STDOUT: %import_ref.20 = import_ref Core//prelude/operators/arithmetic, inst+74, unloaded +// CHECK:STDOUT: %import_ref.8: %.7 = import_ref Core//prelude/operators/arithmetic, inst+32, loaded [template = constants.%.8] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded +// CHECK:STDOUT: %import_ref.11: type = import_ref Core//prelude/operators/arithmetic, inst+34, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/arithmetic, inst+36, unloaded +// CHECK:STDOUT: %import_ref.13: %.10 = import_ref Core//prelude/operators/arithmetic, inst+61, loaded [template = constants.%.11] +// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/arithmetic, inst+55, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/arithmetic, inst+55, unloaded +// CHECK:STDOUT: %import_ref.16: type = import_ref Core//prelude/operators/arithmetic, inst+63, loaded [template = constants.%Inc.type] +// CHECK:STDOUT: %import_ref.17 = import_ref Core//prelude/operators/arithmetic, inst+65, unloaded +// CHECK:STDOUT: %import_ref.18: %.13 = import_ref Core//prelude/operators/arithmetic, inst+83, loaded [template = constants.%.14] +// CHECK:STDOUT: %import_ref.19 = import_ref Core//prelude/operators/arithmetic, inst+77, unloaded +// CHECK:STDOUT: %import_ref.20 = import_ref Core//prelude/operators/arithmetic, inst+77, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -134,35 +134,41 @@ fn TestRef(b: C) { // CHECK:STDOUT: %TestUnary.decl: %TestUnary.type = fn_decl @TestUnary [template = constants.%TestUnary] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc15_17: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc15_23: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestBinary.decl: %TestBinary.type = fn_decl @TestBinary [template = constants.%TestBinary] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc23_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc23_24: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc23_30: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc23_16: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc23_16 -// CHECK:STDOUT: %param.loc23_22: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc23_22 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestRef.decl: %TestRef.type = fn_decl @TestRef [template = constants.%TestRef] { // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %b: %C = bind_name b, %param +// CHECK:STDOUT: %b.param: %C = param runtime_param0 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -249,14 +255,14 @@ fn TestRef(b: C) { // CHECK:STDOUT: %Self: %AddAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.3)] // CHECK:STDOUT: %.2: type = ptr_type @Op.3.%Self (%Self.3) [symbolic = %.2 (constants.%.9)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+116: @Op.3.%.2 (%.9)](%other.param_patt: @Op.3.%Self (%Self.3)); +// CHECK:STDOUT: fn[addr .inst+122: @Op.3.%.2 (%.9)](%other.param_patt: @Op.3.%Self (%Self.3)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.4(constants.%Self.4: %Inc.type) { // CHECK:STDOUT: %Self: %Inc.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.4)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.4) [symbolic = %.2 (constants.%.12)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+143: @Op.4.%.2 (%.12)](); +// CHECK:STDOUT: fn[addr .inst+149: @Op.4.%.2 (%.12)](); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Op.1(constants.%Self.1) { diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon index e52077004cda..599576ebd8ae 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon @@ -117,20 +117,20 @@ fn TestAssign(b: D) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+1, loaded [template = constants.%Add.type] // CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+3, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+29, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+23, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+31, loaded [template = constants.%AddAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+33, unloaded -// CHECK:STDOUT: %import_ref.7: %.16 = import_ref Core//prelude/operators/arithmetic, inst+58, loaded [template = constants.%.17] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+52, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+23, unloaded -// CHECK:STDOUT: %import_ref.10: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.12: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] -// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.16 = import_ref Core//prelude/operators/arithmetic, inst+52, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+32, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+26, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+34, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+36, unloaded +// CHECK:STDOUT: %import_ref.7: %.16 = import_ref Core//prelude/operators/arithmetic, inst+61, loaded [template = constants.%.17] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+55, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+26, unloaded +// CHECK:STDOUT: %import_ref.10: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.12: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] +// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.16 = import_ref Core//prelude/operators/arithmetic, inst+55, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -159,23 +159,26 @@ fn TestAssign(b: D) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc23_12: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %C.ref.loc23_24: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc23_10: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc23_10 -// CHECK:STDOUT: %param.loc23_16: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc23_16 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %param: %D = param runtime_param0 -// CHECK:STDOUT: %b: %D = bind_name b, %param +// CHECK:STDOUT: %b.param: %D = param runtime_param0 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,15 +222,18 @@ fn TestAssign(b: D) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc17_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc17_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc17_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc17_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc17_13 -// CHECK:STDOUT: %param.loc17_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc17_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc16: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -247,10 +253,10 @@ fn TestAssign(b: D) { // CHECK:STDOUT: %C.ref.loc20_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc20_21: type = ptr_type %C [template = constants.%.5] // CHECK:STDOUT: %C.ref.loc20_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc20_18: %.5 = param runtime_param0 -// CHECK:STDOUT: %self: %.5 = bind_name self, %param.loc20_18 -// CHECK:STDOUT: %param.loc20_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc20_29 +// CHECK:STDOUT: %self.param: %.5 = param runtime_param0 +// CHECK:STDOUT: %self: %.5 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19: = interface_witness (%Op.decl) [template = constants.%.7] // CHECK:STDOUT: @@ -287,7 +293,7 @@ fn TestAssign(b: D) { // CHECK:STDOUT: %Self: %AddAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.6)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+87: @Op.4.%.2 (%.6)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.6)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Test(%a.param_patt: %C, %b.param_patt: %D) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index cf2c7e4a180b..f82df0d5d571 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -98,13 +98,13 @@ fn Test() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.16)] -// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%Convert.type (%Convert.type.1) = import_ref Core//prelude/operators/as, inst+64, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.1)] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.16)] +// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%Convert.type (%Convert.type.1) = import_ref Core//prelude/operators/as, inst+70, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.1)] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -143,25 +143,28 @@ fn Test() { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc25_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc25_16.2: type = converted %int.make_type_32, %.loc25_16.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: %Sink_X.decl: %Sink_X.type = fn_decl @Sink_X [template = constants.%Sink_X] { // CHECK:STDOUT: %x.patt: %X = binding_pattern x // CHECK:STDOUT: %x.param_patt: %X = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %param: %X = param runtime_param0 -// CHECK:STDOUT: %x: %X = bind_name x, %param +// CHECK:STDOUT: %x.param: %X = param runtime_param0 +// CHECK:STDOUT: %x: %X = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %Source.decl: %Source.type = fn_decl @Source [template = constants.%Source] { // CHECK:STDOUT: %T.patt.loc27_11.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc27_11.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc27_11.1, runtime_param [symbolic = %T.patt.loc27_11.2 (constants.%T.patt)] +// CHECK:STDOUT: %return.patt: @Source.%T.loc27_11.2 (%T) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Source.%T.loc27_11.2 (%T) = param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc27_24: type = name_ref T, %T.loc27_11.1 [symbolic = %T.loc27_11.2 (constants.%T)] -// CHECK:STDOUT: %return: ref @Source.%T.loc27_11.2 (%T) = var -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc27_11.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc27_11.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc27_11.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc27_11.2 (constants.%T)] +// CHECK:STDOUT: %return.param: @Source.%T.loc27_11.2 (%T) = param runtime_param0 +// CHECK:STDOUT: %return: ref @Source.%T.loc27_11.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [template = constants.%Test] {} {} // CHECK:STDOUT: } @@ -190,14 +193,17 @@ fn Test() { // CHECK:STDOUT: %Convert.decl: %Convert.type.2 = fn_decl @Convert.2 [template = constants.%Convert.2] { // CHECK:STDOUT: %self.patt: i32 = binding_pattern self // CHECK:STDOUT: %self.param_patt: i32 = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %X = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc16_20.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc16_20.2: type = converted %int.make_type_32, %.loc16_20.1 [template = i32] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %return: ref %X = var -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %self: i32 = bind_name self, %param +// CHECK:STDOUT: %self.param: i32 = param runtime_param0 +// CHECK:STDOUT: %self: i32 = bind_name self, %self.param +// CHECK:STDOUT: %return.param: %X = param runtime_param1 +// CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc15_32: = interface_witness (%Convert.decl) [template = constants.%.9] // CHECK:STDOUT: @@ -210,14 +216,17 @@ fn Test() { // CHECK:STDOUT: %Convert.decl: %Convert.type.4 = fn_decl @Convert.3 [template = constants.%Convert.4] { // CHECK:STDOUT: %self.patt: %X = binding_pattern self // CHECK:STDOUT: %self.param_patt: %X = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc20_28.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc20_28.2: type = converted %int.make_type_32, %.loc20_28.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: %X = param runtime_param0 -// CHECK:STDOUT: %self: %X = bind_name self, %param +// CHECK:STDOUT: %self.param: %X = param runtime_param0 +// CHECK:STDOUT: %self: %X = bind_name self, %self.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc19_32: = interface_witness (%Convert.decl) [template = constants.%.13] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/inc.carbon b/toolchain/check/testdata/operators/overloaded/inc.carbon index 90a153efd317..d3ccdc512d91 100644 --- a/toolchain/check/testdata/operators/overloaded/inc.carbon +++ b/toolchain/check/testdata/operators/overloaded/inc.carbon @@ -59,11 +59,11 @@ fn TestOp() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+60, loaded [template = constants.%Inc.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+62, unloaded -// CHECK:STDOUT: %import_ref.3: %.8 = import_ref Core//prelude/operators/arithmetic, inst+80, loaded [template = constants.%.9] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+74, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+74, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+63, loaded [template = constants.%Inc.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+65, unloaded +// CHECK:STDOUT: %import_ref.3: %.8 = import_ref Core//prelude/operators/arithmetic, inst+83, loaded [template = constants.%.9] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+77, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+77, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -97,8 +97,8 @@ fn TestOp() { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc18_21: type = ptr_type %C [template = constants.%.3] -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %self: %.3 = bind_name self, %param +// CHECK:STDOUT: %self.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %self: %.3 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.6] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index d1856f370699..16f64a462434 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+198, loaded [template = constants.%LeftShift.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+200, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+225, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+220, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+227, loaded [template = constants.%LeftShiftAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+229, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+254, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+248, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+220, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+248, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+210, loaded [template = constants.%LeftShift.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+212, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+240, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+235, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+242, loaded [template = constants.%LeftShiftAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+244, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+269, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+263, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+235, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+263, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %LeftShiftAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 ff31888f1560..6e17afd092fa 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+300, loaded [template = constants.%Mod.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+302, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+327, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+322, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+329, loaded [template = constants.%ModAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+331, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+356, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+350, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+322, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+350, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+315, loaded [template = constants.%Mod.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+317, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+345, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+340, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+347, loaded [template = constants.%ModAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+349, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+374, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+368, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+340, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+368, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %ModAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 0dfdbdc0a7c1..ec1f7453460c 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+184, loaded [template = constants.%Mul.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+186, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+211, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+206, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+213, loaded [template = constants.%MulAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+215, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+240, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+234, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+206, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+234, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+193, loaded [template = constants.%Mul.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+195, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+223, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+218, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+225, loaded [template = constants.%MulAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+227, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+252, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+246, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+218, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+246, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %MulAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 b02834fd4e11..02b74f384dd3 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -58,11 +58,11 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+82, loaded [template = constants.%Negate.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+84, unloaded -// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/arithmetic, inst+102, loaded [template = constants.%.7] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+97, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+85, loaded [template = constants.%Negate.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+87, unloaded +// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/arithmetic, inst+108, loaded [template = constants.%.7] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+103, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -81,12 +81,15 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc23_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -101,12 +104,15 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %Op.decl: %Op.type.1 = fn_decl @Op.1 [template = constants.%Op.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_23: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %return.param: %C = param runtime_param1 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -142,8 +148,8 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %Op.ref: %.6 = name_ref Op, imports.%import_ref.3 [template = constants.%.7] // CHECK:STDOUT: %.loc24_10.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc24_10.2: = bound_method %a.ref, %.loc24_10.1 -// CHECK:STDOUT: %.loc23: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc24_10.2(%a.ref) to %.loc23 +// CHECK:STDOUT: %.loc23_17.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc24_10.2(%a.ref) to %.loc23_17.2 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index ba5074eb8f6a..436b7023149e 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -134,21 +134,21 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, inst+62, loaded [template = constants.%Ordered.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/comparison, inst+64, unloaded -// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/comparison, inst+89, loaded [template = constants.%.7] -// CHECK:STDOUT: %import_ref.4: %.8 = import_ref Core//prelude/operators/comparison, inst+114, loaded [template = constants.%.9] -// CHECK:STDOUT: %import_ref.5: %.10 = import_ref Core//prelude/operators/comparison, inst+139, loaded [template = constants.%.11] -// CHECK:STDOUT: %import_ref.6: %.12 = import_ref Core//prelude/operators/comparison, inst+164, loaded [template = constants.%.13] -// CHECK:STDOUT: %import_ref.7: %Less.type.2 = import_ref Core//prelude/operators/comparison, inst+84, loaded [template = constants.%Less.2] -// CHECK:STDOUT: %import_ref.8: %LessOrEquivalent.type.2 = import_ref Core//prelude/operators/comparison, inst+109, loaded [template = constants.%LessOrEquivalent.2] -// CHECK:STDOUT: %import_ref.9: %Greater.type.2 = import_ref Core//prelude/operators/comparison, inst+134, loaded [template = constants.%Greater.2] -// CHECK:STDOUT: %import_ref.10: %GreaterOrEquivalent.type.2 = import_ref Core//prelude/operators/comparison, inst+159, loaded [template = constants.%GreaterOrEquivalent.2] -// CHECK:STDOUT: %import_ref.11: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/comparison, inst+84, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/comparison, inst+109, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/comparison, inst+134, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/comparison, inst+159, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, inst+68, loaded [template = constants.%Ordered.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/comparison, inst+70, unloaded +// CHECK:STDOUT: %import_ref.3: %.6 = import_ref Core//prelude/operators/comparison, inst+98, loaded [template = constants.%.7] +// CHECK:STDOUT: %import_ref.4: %.8 = import_ref Core//prelude/operators/comparison, inst+126, loaded [template = constants.%.9] +// CHECK:STDOUT: %import_ref.5: %.10 = import_ref Core//prelude/operators/comparison, inst+154, loaded [template = constants.%.11] +// CHECK:STDOUT: %import_ref.6: %.12 = import_ref Core//prelude/operators/comparison, inst+182, loaded [template = constants.%.13] +// CHECK:STDOUT: %import_ref.7: %Less.type.2 = import_ref Core//prelude/operators/comparison, inst+93, loaded [template = constants.%Less.2] +// CHECK:STDOUT: %import_ref.8: %LessOrEquivalent.type.2 = import_ref Core//prelude/operators/comparison, inst+121, loaded [template = constants.%LessOrEquivalent.2] +// CHECK:STDOUT: %import_ref.9: %Greater.type.2 = import_ref Core//prelude/operators/comparison, inst+149, loaded [template = constants.%Greater.2] +// CHECK:STDOUT: %import_ref.10: %GreaterOrEquivalent.type.2 = import_ref Core//prelude/operators/comparison, inst+177, loaded [template = constants.%GreaterOrEquivalent.2] +// CHECK:STDOUT: %import_ref.11: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/comparison, inst+93, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/comparison, inst+121, unloaded +// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/comparison, inst+149, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/comparison, inst+177, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -172,68 +172,80 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc13_16: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc13_22: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc13_28.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc13_28.2: type = converted %bool.make_type, %.loc13_28.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc13_14: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc13_14 -// CHECK:STDOUT: %param.loc13_20: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc13_20 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestLessEqual.decl: %TestLessEqual.type = fn_decl @TestLessEqual [template = constants.%TestLessEqual] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc17_21: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc17_27: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_33.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc17_33.2: type = converted %bool.make_type, %.loc17_33.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc17_19: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc17_19 -// CHECK:STDOUT: %param.loc17_25: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc17_25 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestGreater.decl: %TestGreater.type = fn_decl @TestGreater [template = constants.%TestGreater] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc21_19: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc21_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc21_31.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc21_31.2: type = converted %bool.make_type, %.loc21_31.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc21_17: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc21_17 -// CHECK:STDOUT: %param.loc21_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc21_23 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestGreaterEqual.decl: %TestGreaterEqual.type = fn_decl @TestGreaterEqual [template = constants.%TestGreaterEqual] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc25_24: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc25_30: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc25_36.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc25_36.2: type = converted %bool.make_type, %.loc25_36.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc25_22: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc25_22 -// CHECK:STDOUT: %param.loc25_28: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc25_28 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,68 +265,80 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc7_17: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc7_27: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc7_33.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc7_33.2: type = converted %bool.make_type, %.loc7_33.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc7_15: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc7_15 -// CHECK:STDOUT: %param.loc7_25: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc7_25 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %LessOrEquivalent.decl: %LessOrEquivalent.type.1 = fn_decl @LessOrEquivalent.1 [template = constants.%LessOrEquivalent.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_29: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc8_39: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc8_45.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc8_45.2: type = converted %bool.make_type, %.loc8_45.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc8_27: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc8_27 -// CHECK:STDOUT: %param.loc8_37: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc8_37 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Greater.decl: %Greater.type.1 = fn_decl @Greater.1 [template = constants.%Greater.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc9_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc9_30: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc9_36.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc9_36.2: type = converted %bool.make_type, %.loc9_36.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc9_18: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc9_18 -// CHECK:STDOUT: %param.loc9_28: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc9_28 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %GreaterOrEquivalent.decl: %GreaterOrEquivalent.type.1 = fn_decl @GreaterOrEquivalent.1 [template = constants.%GreaterOrEquivalent.1] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc10_32: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc10_42: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc10_48.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc10_48.2: type = converted %bool.make_type, %.loc10_48.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc10_30: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc10_30 -// CHECK:STDOUT: %param.loc10_40: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc10_40 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc6: = interface_witness (%Less.decl, %LessOrEquivalent.decl, %Greater.decl, %GreaterOrEquivalent.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -502,21 +526,21 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/comparison, inst+62, loaded [template = constants.%Ordered.type] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/comparison, inst+64, unloaded -// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//prelude/operators/comparison, inst+89, loaded [template = constants.%.6] -// CHECK:STDOUT: %import_ref.5: %.7 = import_ref Core//prelude/operators/comparison, inst+114, loaded [template = constants.%.8] -// CHECK:STDOUT: %import_ref.6: %.9 = import_ref Core//prelude/operators/comparison, inst+139, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/comparison, inst+164, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+84, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/comparison, inst+109, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/comparison, inst+134, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/comparison, inst+159, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/comparison, inst+84, unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/comparison, inst+109, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/comparison, inst+134, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/comparison, inst+159, unloaded +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/comparison, inst+68, loaded [template = constants.%Ordered.type] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/comparison, inst+70, unloaded +// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//prelude/operators/comparison, inst+98, loaded [template = constants.%.6] +// CHECK:STDOUT: %import_ref.5: %.7 = import_ref Core//prelude/operators/comparison, inst+126, loaded [template = constants.%.8] +// CHECK:STDOUT: %import_ref.6: %.9 = import_ref Core//prelude/operators/comparison, inst+154, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/comparison, inst+182, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/comparison, inst+93, unloaded +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/comparison, inst+121, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/comparison, inst+149, unloaded +// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/comparison, inst+177, unloaded +// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/comparison, inst+93, unloaded +// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/comparison, inst+121, unloaded +// CHECK:STDOUT: %import_ref.14 = import_ref Core//prelude/operators/comparison, inst+149, unloaded +// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/comparison, inst+177, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -535,68 +559,80 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc6_16: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %D.ref.loc6_22: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc6_28.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc6_28.2: type = converted %bool.make_type, %.loc6_28.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc6_14: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc6_14 -// CHECK:STDOUT: %param.loc6_20: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc6_20 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestLessEqual.decl: %TestLessEqual.type = fn_decl @TestLessEqual [template = constants.%TestLessEqual] { // CHECK:STDOUT: %a.patt: %D = binding_pattern a // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc14_21: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %D.ref.loc14_27: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_33.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc14_33.2: type = converted %bool.make_type, %.loc14_33.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc14_19: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc14_19 -// CHECK:STDOUT: %param.loc14_25: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc14_25 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestGreater.decl: %TestGreater.type = fn_decl @TestGreater [template = constants.%TestGreater] { // CHECK:STDOUT: %a.patt: %D = binding_pattern a // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc22_19: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %D.ref.loc22_25: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc22_31.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc22_31.2: type = converted %bool.make_type, %.loc22_31.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc22_17: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc22_17 -// CHECK:STDOUT: %param.loc22_23: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc22_23 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestGreaterEqual.decl: %TestGreaterEqual.type = fn_decl @TestGreaterEqual [template = constants.%TestGreaterEqual] { // CHECK:STDOUT: %a.patt: %D = binding_pattern a // CHECK:STDOUT: %a.param_patt: %D = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %D = binding_pattern b // CHECK:STDOUT: %b.param_patt: %D = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc30_24: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %D.ref.loc30_30: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc30_36.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc30_36.2: type = converted %bool.make_type, %.loc30_36.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var -// CHECK:STDOUT: %param.loc30_22: %D = param runtime_param0 -// CHECK:STDOUT: %a: %D = bind_name a, %param.loc30_22 -// CHECK:STDOUT: %param.loc30_28: %D = param runtime_param1 -// CHECK:STDOUT: %b: %D = bind_name b, %param.loc30_28 +// CHECK:STDOUT: %a.param: %D = param runtime_param0 +// CHECK:STDOUT: %a: %D = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %D = param runtime_param1 +// CHECK:STDOUT: %b: %D = bind_name b, %b.param +// CHECK:STDOUT: %return.param: bool = param runtime_param2 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // 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 3f2f60b9243d..262452fc144c 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+256, loaded [template = constants.%RightShift.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+258, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+283, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+278, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+285, loaded [template = constants.%RightShiftAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+287, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+312, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+306, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+278, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+306, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, inst+271, loaded [template = constants.%RightShift.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/bitwise, inst+273, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/bitwise, inst+301, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/bitwise, inst+296, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, inst+303, loaded [template = constants.%RightShiftAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/bitwise, inst+305, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/bitwise, inst+330, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/bitwise, inst+324, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/bitwise, inst+296, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/bitwise, inst+324, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %RightShiftAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %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 222d82701cf8..5a5e26036b77 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -79,16 +79,16 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+104, loaded [template = constants.%Sub.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+106, unloaded -// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+131, loaded [template = constants.%.10] -// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+126, loaded [template = constants.%Op.2] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+133, loaded [template = constants.%SubAssign.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+135, unloaded -// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+160, loaded [template = constants.%.12] -// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+154, loaded [template = constants.%Op.4] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+126, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+154, unloaded +// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, inst+110, loaded [template = constants.%Sub.type] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/arithmetic, inst+112, unloaded +// CHECK:STDOUT: %import_ref.3: %.9 = import_ref Core//prelude/operators/arithmetic, inst+140, loaded [template = constants.%.10] +// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Core//prelude/operators/arithmetic, inst+135, loaded [template = constants.%Op.2] +// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, inst+142, loaded [template = constants.%SubAssign.type] +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+144, unloaded +// CHECK:STDOUT: %import_ref.7: %.11 = import_ref Core//prelude/operators/arithmetic, inst+169, loaded [template = constants.%.12] +// CHECK:STDOUT: %import_ref.8: %Op.type.4 = import_ref Core//prelude/operators/arithmetic, inst+163, loaded [template = constants.%Op.4] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/arithmetic, inst+135, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/arithmetic, inst+163, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,15 +115,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc26_14: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc26_26: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc26_12: %C = param runtime_param0 -// CHECK:STDOUT: %a: %C = bind_name a, %param.loc26_12 -// CHECK:STDOUT: %param.loc26_18: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc26_18 +// CHECK:STDOUT: %a.param: %C = param runtime_param0 +// CHECK:STDOUT: %a: %C = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { // CHECK:STDOUT: %a.patt: %.6 = binding_pattern a @@ -134,10 +137,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc30: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc30_16: %.6 = param runtime_param0 -// CHECK:STDOUT: %a: %.6 = bind_name a, %param.loc30_16 -// CHECK:STDOUT: %param.loc30_23: %C = param runtime_param1 -// CHECK:STDOUT: %b: %C = bind_name b, %param.loc30_23 +// CHECK:STDOUT: %a.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %a: %.6 = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %C = param runtime_param1 +// CHECK:STDOUT: %b: %C = bind_name b, %b.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -161,15 +164,18 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc18_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %C.ref.loc18_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var -// CHECK:STDOUT: %param.loc18_13: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param.loc18_13 -// CHECK:STDOUT: %param.loc18_23: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc18_23 +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param +// CHECK:STDOUT: %return.param: %C = param runtime_param2 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc17: = interface_witness (%Op.decl) [template = constants.%.4] // CHECK:STDOUT: @@ -189,10 +195,10 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23_21: type = ptr_type %C [template = constants.%.6] // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %param.loc23_18: %.6 = param runtime_param0 -// CHECK:STDOUT: %self: %.6 = bind_name self, %param.loc23_18 -// CHECK:STDOUT: %param.loc23_29: %C = param runtime_param1 -// CHECK:STDOUT: %other: %C = bind_name other, %param.loc23_29 +// CHECK:STDOUT: %self.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %self: %.6 = bind_name self, %self.param +// CHECK:STDOUT: %other.param: %C = param runtime_param1 +// CHECK:STDOUT: %other: %C = bind_name other, %other.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: = interface_witness (%Op.decl) [template = constants.%.8] // CHECK:STDOUT: @@ -231,7 +237,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Self: %SubAssign.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] // CHECK:STDOUT: %.2: type = ptr_type @Op.4.%Self (%Self.2) [symbolic = %.2 (constants.%.7)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr .inst+90: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); +// CHECK:STDOUT: fn[addr .inst+93: @Op.4.%.2 (%.7)](%other.param_patt: @Op.4.%Self (%Self.2)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C, %b.param_patt: %C) -> %return: %C { @@ -241,8 +247,8 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %Op.ref: %.9 = name_ref Op, imports.%import_ref.3 [template = constants.%.10] // CHECK:STDOUT: %.loc27_12.1: %Op.type.2 = interface_witness_access constants.%.4, element0 [template = constants.%Op.1] // CHECK:STDOUT: %.loc27_12.2: = bound_method %a.ref, %.loc27_12.1 -// CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} -// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26 +// CHECK:STDOUT: %.loc26_23.2: ref %C = splice_block %return {} +// CHECK:STDOUT: %Op.call: init %C = call %.loc27_12.2(%a.ref, %b.ref) to %.loc26_23.2 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/fail_not_found.carbon b/toolchain/check/testdata/package_expr/fail_not_found.carbon index 37a627face22..9327abda9089 100644 --- a/toolchain/check/testdata/package_expr/fail_not_found.carbon +++ b/toolchain/check/testdata/package_expr/fail_not_found.carbon @@ -37,7 +37,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index 7d72ec092c99..2c1b9908dddc 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -62,7 +62,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -121,7 +121,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon b/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon index ac9732f83d20..607e7897b381 100644 --- a/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon +++ b/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon @@ -87,7 +87,7 @@ import library "var"; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/packages/fail_import_type_error.carbon b/toolchain/check/testdata/packages/fail_import_type_error.carbon index 2bff2d402e9c..81de2c5c724a 100644 --- a/toolchain/check/testdata/packages/fail_import_type_error.carbon +++ b/toolchain/check/testdata/packages/fail_import_type_error.carbon @@ -108,7 +108,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon index 3e79c8036f91..f0c64338ae7a 100644 --- a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon +++ b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon @@ -43,7 +43,7 @@ var b: i32 = a; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,7 +89,7 @@ var b: i32 = a; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon b/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon index 180bc097138b..480e4ed8de3a 100644 --- a/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon @@ -261,8 +261,8 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_10.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc4_10.2: type = converted %.loc4_10.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %param: %.1 = param runtime_param0 -// CHECK:STDOUT: %x: %.1 = bind_name x, %param +// CHECK:STDOUT: %x.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon b/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon index 70f6c15c1123..d20ed5f66398 100644 --- a/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon +++ b/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon @@ -52,15 +52,15 @@ export C2(T:! type); // CHECK:STDOUT: %T.patt.loc4_10.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt.1)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_10.1, runtime_param [symbolic = %T.patt.loc4_10.2 (constants.%T.patt.1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc4_10.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_10.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc4_10.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_10.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C2.decl: %C2.type = class_decl @C2 [template = constants.%C2.1] { // CHECK:STDOUT: %T.patt.loc5_10.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_10.2 (constants.%T.patt.2)] // CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc5_10.1, runtime_param [symbolic = %T.patt.loc5_10.2 (constants.%T.patt.2)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T.loc5_10.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc5_10.2 (constants.%T)] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T.loc5_10.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc5_10.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -115,8 +115,8 @@ export C2(T:! type); // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C1: %C1.type = export C1, imports.%import_ref.1 [template = constants.%C1.1] -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %param [symbolic = constants.%T] +// CHECK:STDOUT: %T.param: type = param runtime_param +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: %C2: %C2.type = export C2, imports.%import_ref.2 [template = constants.%C2.1] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon index 7bf92b984d08..8901bbe02315 100644 --- a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon @@ -133,10 +133,14 @@ var n: {} = i32; // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .Int32 = %Int32.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} { +// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_16.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc4_16.2: type = converted %.loc4_16.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -162,7 +166,7 @@ var n: {} = i32; // CHECK:STDOUT: .Int32 = %import_ref // CHECK:STDOUT: import Core//prelude_fake_int // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude_fake_int, inst+5, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude_fake_int, inst+8, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -200,10 +204,14 @@ var n: {} = i32; // CHECK:STDOUT: .Int32 = %Int32.decl // CHECK:STDOUT: .n = %n // CHECK:STDOUT: } -// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} { +// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_16.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc8_16.2: type = converted %.loc8_16.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_9.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc10_9.2: type = converted %.loc10_9.1, constants.%.1 [template = constants.%.1] @@ -244,10 +252,14 @@ var n: {} = i32; // CHECK:STDOUT: %Core: = namespace [template] { // CHECK:STDOUT: .Int32 = %Int32.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} { +// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_21.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc7_21.2: type = converted %.loc7_21.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9_9.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc9_9.2: type = converted %.loc9_9.1, constants.%.1 [template = constants.%.1] @@ -295,10 +307,14 @@ var n: {} = i32; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Core { -// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} { +// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_18.1: %.1 = struct_literal () // CHECK:STDOUT: %.loc6_18.2: type = converted %.loc6_18.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7: = complete_type_witness %.1 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_deref.carbon b/toolchain/check/testdata/pointer/address_of_deref.carbon index 1c1a2a9623f5..6abe4c09b12d 100644 --- a/toolchain/check/testdata/pointer/address_of_deref.carbon +++ b/toolchain/check/testdata/pointer/address_of_deref.carbon @@ -37,7 +37,7 @@ fn F() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -46,11 +46,15 @@ fn F() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32.loc11, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_lvalue.carbon b/toolchain/check/testdata/pointer/address_of_lvalue.carbon index f28736c1b7d9..1e7aaeb0b4d0 100644 --- a/toolchain/check/testdata/pointer/address_of_lvalue.carbon +++ b/toolchain/check/testdata/pointer/address_of_lvalue.carbon @@ -53,7 +53,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/pointer/arrow.carbon b/toolchain/check/testdata/pointer/arrow.carbon index 8f9c24f2e820..e4c129ccd5e1 100644 --- a/toolchain/check/testdata/pointer/arrow.carbon +++ b/toolchain/check/testdata/pointer/arrow.carbon @@ -66,8 +66,8 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc16: type = ptr_type %C [template = constants.%.2] -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %ptr: %.2 = bind_name ptr, %param +// CHECK:STDOUT: %ptr.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %ptr: %.2 = bind_name ptr, %ptr.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -77,8 +77,8 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %param: %C = param runtime_param0 -// CHECK:STDOUT: %self: %C = bind_name self, %param +// CHECK:STDOUT: %self.param: %C = param runtime_param0 +// CHECK:STDOUT: %self: %C = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc13_15: type = ptr_type %C [template = constants.%.2] diff --git a/toolchain/check/testdata/pointer/basic.carbon b/toolchain/check/testdata/pointer/basic.carbon index 76bc12f5d255..282128087b02 100644 --- a/toolchain/check/testdata/pointer/basic.carbon +++ b/toolchain/check/testdata/pointer/basic.carbon @@ -39,7 +39,7 @@ fn F() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -48,11 +48,15 @@ fn F() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32.loc11, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_address_of_value.carbon b/toolchain/check/testdata/pointer/fail_address_of_value.carbon index fad1250c5f10..5f9c61a45775 100644 --- a/toolchain/check/testdata/pointer/fail_address_of_value.carbon +++ b/toolchain/check/testdata/pointer/fail_address_of_value.carbon @@ -155,7 +155,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -171,18 +171,26 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: .AddressOfParam = %AddressOfParam.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} { +// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_16.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_16.2: type = converted %int.make_type_32, %.loc13_16.1 [template = i32] // CHECK:STDOUT: %.loc13_19: type = struct_type {.a: i32} [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var +// CHECK:STDOUT: %return.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AddressOfLiteral.decl: %AddressOfLiteral.type = fn_decl @AddressOfLiteral [template = constants.%AddressOfLiteral] {} {} // CHECK:STDOUT: %AddressOfOperator.decl: %AddressOfOperator.type = fn_decl @AddressOfOperator [template = constants.%AddressOfOperator] {} {} @@ -196,8 +204,8 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %int.make_type_32.loc95: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc95_26.1: type = value_of_initializer %int.make_type_32.loc95 [template = i32] // CHECK:STDOUT: %.loc95_26.2: type = converted %int.make_type_32.loc95, %.loc95_26.1 [template = i32] -// CHECK:STDOUT: %param.loc95_24: i32 = param runtime_param0 -// CHECK:STDOUT: %param.loc95_19: i32 = bind_name param, %param.loc95_24 +// CHECK:STDOUT: %param.param: i32 = param runtime_param0 +// CHECK:STDOUT: %param: i32 = bind_name param, %param.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -294,7 +302,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %.loc99_22.3: type = ptr_type i32 [template = constants.%.4] // CHECK:STDOUT: %param_addr.var: ref %.4 = var param_addr // CHECK:STDOUT: %param_addr: ref %.4 = bind_name param_addr, %param_addr.var -// CHECK:STDOUT: %param.ref: i32 = name_ref param, %param.loc95_19 +// CHECK:STDOUT: %param.ref: i32 = name_ref param, %param // CHECK:STDOUT: %.loc99_26: %.4 = addr_of [template = ] // CHECK:STDOUT: assign %param_addr.var, %.loc99_26 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/pointer/fail_deref_error.carbon b/toolchain/check/testdata/pointer/fail_deref_error.carbon index 70c1787c8b55..f32a6413e9b6 100644 --- a/toolchain/check/testdata/pointer/fail_deref_error.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_error.carbon @@ -38,7 +38,7 @@ let n2: i32 = undeclared->foo; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon index 79a60da9c8a4..7d6d96a54428 100644 --- a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon @@ -65,7 +65,7 @@ fn Deref(n: i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -81,8 +81,8 @@ fn Deref(n: i32) { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_13.2: type = converted %int.make_type_32, %.loc11_13.1 [template = i32] -// CHECK:STDOUT: %param: i32 = param runtime_param0 -// CHECK:STDOUT: %n: i32 = bind_name n, %param +// CHECK:STDOUT: %n.param: i32 = param runtime_param0 +// CHECK:STDOUT: %n: i32 = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_deref_type.carbon b/toolchain/check/testdata/pointer/fail_deref_type.carbon index 44b4da2faec4..2b58b78a6e76 100644 --- a/toolchain/check/testdata/pointer/fail_deref_type.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_type.carbon @@ -41,7 +41,7 @@ var p2: i32->foo; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon index cdc0a314a6e2..5c8dfb721efc 100644 --- a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon @@ -60,12 +60,12 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.7) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.11)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.7) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.11)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,6 +77,8 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: %ConstMismatch.decl: %ConstMismatch.type = fn_decl @ConstMismatch [template = constants.%ConstMismatch] { // CHECK:STDOUT: %p.patt: %.3 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.3 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.5 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.5 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_28: %.1 = struct_literal () // CHECK:STDOUT: %.loc11_21.1: type = converted %.loc11_28, constants.%.1 [template = constants.%.1] @@ -86,9 +88,10 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: %.loc11_44.1: type = converted %.loc11_43, constants.%.1 [template = constants.%.1] // CHECK:STDOUT: %.loc11_44.2: type = ptr_type %.1 [template = constants.%.4] // CHECK:STDOUT: %.loc11_35: type = const_type %.4 [template = constants.%.5] -// CHECK:STDOUT: %return: ref %.5 = var -// CHECK:STDOUT: %param: %.3 = param runtime_param0 -// CHECK:STDOUT: %p: %.3 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %p: %.3 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.5 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.5 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/import.carbon b/toolchain/check/testdata/pointer/import.carbon index 608344b3c490..36d53180be6d 100644 --- a/toolchain/check/testdata/pointer/import.carbon +++ b/toolchain/check/testdata/pointer/import.carbon @@ -43,7 +43,7 @@ var a: i32* = a_ref; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -101,7 +101,7 @@ var a: i32* = a_ref; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.3: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/pointer/nested_const.carbon b/toolchain/check/testdata/pointer/nested_const.carbon index e3c8db7386ca..0e8e9b0ed6c7 100644 --- a/toolchain/check/testdata/pointer/nested_const.carbon +++ b/toolchain/check/testdata/pointer/nested_const.carbon @@ -40,7 +40,7 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -52,6 +52,8 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %p.patt: %.6 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.6 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_29: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_23.1: type = value_of_initializer %int.make_type_32.loc12_29 [template = i32] @@ -65,9 +67,10 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: %.loc12_41.1: type = value_of_initializer %int.make_type_32.loc12_47 [template = i32] // CHECK:STDOUT: %.loc12_41.2: type = converted %int.make_type_32.loc12_47, %.loc12_41.1 [template = i32] // CHECK:STDOUT: %.loc12_41.3: type = const_type i32 [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var -// CHECK:STDOUT: %param: %.6 = param runtime_param0 -// CHECK:STDOUT: %p: %.6 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.6 = param runtime_param0 +// CHECK:STDOUT: %p: %.6 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.2 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/types.carbon b/toolchain/check/testdata/pointer/types.carbon index 0a4aefa8dc1b..0a0aa0e8f68f 100644 --- a/toolchain/check/testdata/pointer/types.carbon +++ b/toolchain/check/testdata/pointer/types.carbon @@ -43,7 +43,7 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,6 +56,8 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %Ptr.decl: %Ptr.type = fn_decl @Ptr [template = constants.%Ptr] { // CHECK:STDOUT: %p.patt: %.2 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.2 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32.loc11_11 [template = i32] @@ -65,13 +67,16 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %.loc11_23.1: type = value_of_initializer %int.make_type_32.loc11_20 [template = i32] // CHECK:STDOUT: %.loc11_23.2: type = converted %int.make_type_32.loc11_20, %.loc11_23.1 [template = i32] // CHECK:STDOUT: %.loc11_23.3: type = ptr_type i32 [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var -// CHECK:STDOUT: %param: %.2 = param runtime_param0 -// CHECK:STDOUT: %p: %.2 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.2 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConstPtr.decl: %ConstPtr.type = fn_decl @ConstPtr [template = constants.%ConstPtr] { // CHECK:STDOUT: %p.patt: %.4 = binding_pattern p // CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc15_22: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc15_16.1: type = value_of_initializer %int.make_type_32.loc15_22 [template = i32] @@ -83,9 +88,10 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %.loc15_32.2: type = converted %int.make_type_32.loc15_38, %.loc15_32.1 [template = i32] // CHECK:STDOUT: %.loc15_32.3: type = const_type i32 [template = constants.%.3] // CHECK:STDOUT: %.loc15_42: type = ptr_type %.3 [template = constants.%.4] -// CHECK:STDOUT: %return: ref %.4 = var -// CHECK:STDOUT: %param: %.4 = param runtime_param0 -// CHECK:STDOUT: %p: %.4 = bind_name p, %param +// CHECK:STDOUT: %p.param: %.4 = param runtime_param0 +// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: %.4 = param runtime_param1 +// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/code_after_return.carbon b/toolchain/check/testdata/return/code_after_return.carbon index 4d2faa3a6450..21bcb30960e3 100644 --- a/toolchain/check/testdata/return/code_after_return.carbon +++ b/toolchain/check/testdata/return/code_after_return.carbon @@ -36,7 +36,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/return/code_after_return_value.carbon b/toolchain/check/testdata/return/code_after_return_value.carbon index 6a6467e1855a..792b2d9f6c88 100644 --- a/toolchain/check/testdata/return/code_after_return_value.carbon +++ b/toolchain/check/testdata/return/code_after_return_value.carbon @@ -50,8 +50,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,6 +63,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %bool.make_type [template = bool] @@ -70,9 +72,10 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_18.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_18.2: type = converted %int.make_type_32, %.loc11_18.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_call_in_type.carbon b/toolchain/check/testdata/return/fail_call_in_type.carbon index 9135087cf53e..2956c142a895 100644 --- a/toolchain/check/testdata/return/fail_call_in_type.carbon +++ b/toolchain/check/testdata/return/fail_call_in_type.carbon @@ -41,7 +41,7 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -51,15 +51,23 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: .Six = %Six.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %ReturnType.decl: %ReturnType.type = fn_decl @ReturnType [template = constants.%ReturnType] {} { -// CHECK:STDOUT: %return: ref type = var +// CHECK:STDOUT: %ReturnType.decl: %ReturnType.type = fn_decl @ReturnType [template = constants.%ReturnType] { +// CHECK:STDOUT: %return.patt: type = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { +// CHECK:STDOUT: %return.param: type = param runtime_param0 +// CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [template = constants.%Six] {} { +// CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [template = constants.%Six] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %ReturnType.ref: %ReturnType.type = name_ref ReturnType, file.%ReturnType.decl [template = constants.%ReturnType] // CHECK:STDOUT: %ReturnType.call: init type = call %ReturnType.ref() // CHECK:STDOUT: %.loc17_24.1: type = value_of_initializer %ReturnType.call // CHECK:STDOUT: %.loc17_24.2: type = converted %ReturnType.call, %.loc17_24.1 -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_error_in_type.carbon b/toolchain/check/testdata/return/fail_error_in_type.carbon index ed8db591f0dc..f2faf715cf85 100644 --- a/toolchain/check/testdata/return/fail_error_in_type.carbon +++ b/toolchain/check/testdata/return/fail_error_in_type.carbon @@ -40,9 +40,13 @@ fn Six() -> x; // CHECK:STDOUT: .Six = %Six.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [template = constants.%Six] {} { +// CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [template = constants.%Six] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %x.ref: = name_ref x, [template = ] -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_missing_return.carbon b/toolchain/check/testdata/return/fail_missing_return.carbon index 644d43cc121b..53327798af53 100644 --- a/toolchain/check/testdata/return/fail_missing_return.carbon +++ b/toolchain/check/testdata/return/fail_missing_return.carbon @@ -36,7 +36,7 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -45,11 +45,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon index 2d0c10112dbe..281e0e33b521 100644 --- a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon +++ b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon @@ -41,10 +41,14 @@ fn F() -> () { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_12.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc11_12.2: type = converted %.loc11_12.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon index 3af7e8eb8680..461700b8659d 100644 --- a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon @@ -37,7 +37,7 @@ fn Procedure() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -46,11 +46,15 @@ fn Procedure() -> i32 { // CHECK:STDOUT: .Procedure = %Procedure.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Procedure.decl: %Procedure.type = fn_decl @Procedure [template = constants.%Procedure] {} { +// CHECK:STDOUT: %Procedure.decl: %Procedure.type = fn_decl @Procedure [template = constants.%Procedure] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index d76421c74025..d1f08364f412 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -65,7 +65,7 @@ fn G() -> C { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -76,16 +76,24 @@ fn G() -> C { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32.loc11, %.loc11_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon index b869db39ac04..d6b079b60aa4 100644 --- a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon @@ -66,7 +66,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -76,17 +76,25 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: .DifferentScopes = %DifferentScopes.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %SameScope.decl: %SameScope.type = fn_decl @SameScope [template = constants.%SameScope] {} { +// CHECK:STDOUT: %SameScope.decl: %SameScope.type = fn_decl @SameScope [template = constants.%SameScope] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11, %.loc11_19.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %DifferentScopes.decl: %DifferentScopes.type = fn_decl @DifferentScopes [template = constants.%DifferentScopes] {} { +// CHECK:STDOUT: %DifferentScopes.decl: %DifferentScopes.type = fn_decl @DifferentScopes [template = constants.%DifferentScopes] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc26: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc26_25.1: type = value_of_initializer %int.make_type_32.loc26 [template = i32] // CHECK:STDOUT: %.loc26_25.2: type = converted %int.make_type_32.loc26, %.loc26_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_returned_var_type.carbon b/toolchain/check/testdata/return/fail_returned_var_type.carbon index 64f6f97d13ef..76c9e5fd0fa9 100644 --- a/toolchain/check/testdata/return/fail_returned_var_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_type.carbon @@ -46,8 +46,8 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -56,11 +56,15 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: .Mismatch = %Mismatch.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Mismatch.decl: %Mismatch.type = fn_decl @Mismatch [template = constants.%Mismatch] {} { +// CHECK:STDOUT: %Mismatch.decl: %Mismatch.type = fn_decl @Mismatch [template = constants.%Mismatch] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_18.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_18.2: type = converted %int.make_type_32, %.loc11_18.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_type_mismatch.carbon b/toolchain/check/testdata/return/fail_type_mismatch.carbon index 2462b3d40d40..4f868970357b 100644 --- a/toolchain/check/testdata/return/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/return/fail_type_mismatch.carbon @@ -59,13 +59,13 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -74,11 +74,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_value_missing.carbon b/toolchain/check/testdata/return/fail_value_missing.carbon index a27b8089bfd1..81ca819dbad0 100644 --- a/toolchain/check/testdata/return/fail_value_missing.carbon +++ b/toolchain/check/testdata/return/fail_value_missing.carbon @@ -40,7 +40,7 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -49,11 +49,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_var_in_type.carbon b/toolchain/check/testdata/return/fail_var_in_type.carbon index db19d34cadb2..fac049bf4aff 100644 --- a/toolchain/check/testdata/return/fail_var_in_type.carbon +++ b/toolchain/check/testdata/return/fail_var_in_type.carbon @@ -37,7 +37,7 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -49,10 +49,14 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %x.var: ref type = var x // CHECK:STDOUT: %x: ref type = bind_name x, %x.var -// CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [template = constants.%Six] {} { +// CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [template = constants.%Six] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %x.ref: ref type = name_ref x, file.%x // CHECK:STDOUT: %.loc15_13: type = bind_value %x.ref -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index d318526d3e34..2d29708ead69 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -56,7 +56,7 @@ fn G() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -68,15 +68,23 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc16: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc21: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_11.1: type = value_of_initializer %int.make_type_32.loc21 [template = i32] // CHECK:STDOUT: %.loc21_11.2: type = converted %int.make_type_32.loc21, %.loc21_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/returned_var_scope.carbon b/toolchain/check/testdata/return/returned_var_scope.carbon index 649269069622..933dad5b2443 100644 --- a/toolchain/check/testdata/return/returned_var_scope.carbon +++ b/toolchain/check/testdata/return/returned_var_scope.carbon @@ -57,8 +57,8 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -68,15 +68,21 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: .EnclosingButAfter = %EnclosingButAfter.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %UnrelatedScopes.decl: %UnrelatedScopes.type = fn_decl @UnrelatedScopes [template = constants.%UnrelatedScopes] {} { +// CHECK:STDOUT: %UnrelatedScopes.decl: %UnrelatedScopes.type = fn_decl @UnrelatedScopes [template = constants.%UnrelatedScopes] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_25.1: type = value_of_initializer %int.make_type_32.loc11 [template = i32] // CHECK:STDOUT: %.loc11_25.2: type = converted %int.make_type_32.loc11, %.loc11_25.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %EnclosingButAfter.decl: %EnclosingButAfter.type = fn_decl @EnclosingButAfter [template = constants.%EnclosingButAfter] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = param_pattern %b.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc21_25.1: type = value_of_initializer %bool.make_type [template = bool] @@ -84,9 +90,10 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %int.make_type_32.loc21: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc21_34.1: type = value_of_initializer %int.make_type_32.loc21 [template = i32] // CHECK:STDOUT: %.loc21_34.2: type = converted %int.make_type_32.loc21, %.loc21_34.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var -// CHECK:STDOUT: %param: bool = param runtime_param0 -// CHECK:STDOUT: %b: bool = bind_name b, %param +// CHECK:STDOUT: %b.param: bool = param runtime_param0 +// CHECK:STDOUT: %b: bool = bind_name b, %b.param +// CHECK:STDOUT: %return.param: i32 = param runtime_param1 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/struct.carbon b/toolchain/check/testdata/return/struct.carbon index 603a8649cb2c..562c69fef5f9 100644 --- a/toolchain/check/testdata/return/struct.carbon +++ b/toolchain/check/testdata/return/struct.carbon @@ -37,7 +37,7 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -46,12 +46,16 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32, %.loc11_19.1 [template = i32] // CHECK:STDOUT: %.loc11_22: type = struct_type {.a: i32} [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var +// CHECK:STDOUT: %return.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/tuple.carbon b/toolchain/check/testdata/return/tuple.carbon index 1b4a52a6864f..51bffcceb66c 100644 --- a/toolchain/check/testdata/return/tuple.carbon +++ b/toolchain/check/testdata/return/tuple.carbon @@ -41,7 +41,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -50,7 +50,10 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc12_15: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc12_20: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc12_23.1: %.2 = tuple_literal (%int.make_type_32.loc12_15, %int.make_type_32.loc12_20) @@ -59,7 +62,8 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %.loc12_23.4: type = value_of_initializer %int.make_type_32.loc12_20 [template = i32] // CHECK:STDOUT: %.loc12_23.5: type = converted %int.make_type_32.loc12_20, %.loc12_23.4 [template = i32] // CHECK:STDOUT: %.loc12_23.6: type = converted %.loc12_23.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/value.carbon b/toolchain/check/testdata/return/value.carbon index 7a8443480b20..748a1a8b22f4 100644 --- a/toolchain/check/testdata/return/value.carbon +++ b/toolchain/check/testdata/return/value.carbon @@ -35,7 +35,7 @@ fn Main() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -44,11 +44,15 @@ fn Main() -> i32 { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} { +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_14.2: type = converted %int.make_type_32, %.loc11_14.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/fail_assign_empty.carbon b/toolchain/check/testdata/struct/fail_assign_empty.carbon index 8099944038fa..1be2c004f4fb 100644 --- a/toolchain/check/testdata/struct/fail_assign_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_empty.carbon @@ -35,7 +35,7 @@ var x: {.a: i32} = {}; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_duplicate_name.carbon b/toolchain/check/testdata/struct/fail_duplicate_name.carbon index 14f6e92a79fa..76bacc8226df 100644 --- a/toolchain/check/testdata/struct/fail_duplicate_name.carbon +++ b/toolchain/check/testdata/struct/fail_duplicate_name.carbon @@ -81,7 +81,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,7 +94,10 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc18_16: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_16.1: type = value_of_initializer %int.make_type_32.loc18_16 [template = i32] // CHECK:STDOUT: %.loc18_16.2: type = converted %int.make_type_32.loc18_16, %.loc18_16.1 [template = i32] @@ -110,7 +113,8 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %int.make_type_32.loc18_56: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc18_56.1: type = value_of_initializer %int.make_type_32.loc18_56 [template = i32] // CHECK:STDOUT: %.loc18_56.2: type = converted %int.make_type_32.loc18_56, %.loc18_56.1 [template = i32] -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int.make_type_32.loc27_13: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc27_13.1: type = value_of_initializer %int.make_type_32.loc27_13 [template = i32] diff --git a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon index 2cd5a039a98e..93579b14c45b 100644 --- a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon @@ -42,7 +42,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon index 7dbc6defcd83..505b6d4de071 100644 --- a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon @@ -36,7 +36,7 @@ var x: {.a: i32} = {.b = 1.0}; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_member_access_type.carbon b/toolchain/check/testdata/struct/fail_member_access_type.carbon index 0ee3fa2240a7..9423fac819e0 100644 --- a/toolchain/check/testdata/struct/fail_member_access_type.carbon +++ b/toolchain/check/testdata/struct/fail_member_access_type.carbon @@ -41,8 +41,8 @@ var y: i32 = x.b; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_non_member_access.carbon b/toolchain/check/testdata/struct/fail_non_member_access.carbon index 4b083796feec..9de956b862e7 100644 --- a/toolchain/check/testdata/struct/fail_non_member_access.carbon +++ b/toolchain/check/testdata/struct/fail_non_member_access.carbon @@ -37,7 +37,7 @@ var y: i32 = x.b; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_too_few_values.carbon b/toolchain/check/testdata/struct/fail_too_few_values.carbon index 4c100edd6866..96aefc73a8f1 100644 --- a/toolchain/check/testdata/struct/fail_too_few_values.carbon +++ b/toolchain/check/testdata/struct/fail_too_few_values.carbon @@ -37,7 +37,7 @@ var x: {.a: i32, .b: i32} = {.a = 1}; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_type_assign.carbon b/toolchain/check/testdata/struct/fail_type_assign.carbon index 25aeca5c7385..8987efaa9322 100644 --- a/toolchain/check/testdata/struct/fail_type_assign.carbon +++ b/toolchain/check/testdata/struct/fail_type_assign.carbon @@ -55,13 +55,13 @@ var x: {.a: i32} = {.a: i32}; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/fail_value_as_type.carbon b/toolchain/check/testdata/struct/fail_value_as_type.carbon index 2521256dc51b..aa107863c87c 100644 --- a/toolchain/check/testdata/struct/fail_value_as_type.carbon +++ b/toolchain/check/testdata/struct/fail_value_as_type.carbon @@ -54,12 +54,12 @@ var x: {.a = 1}; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index 016e7a32fbeb..b3f432ca5994 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -99,7 +99,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -143,10 +143,13 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.loc8_27.1: type = value_of_initializer %int.make_type_32.loc8_27 [template = i32] // CHECK:STDOUT: %.loc8_27.2: type = converted %int.make_type_32.loc8_27, %.loc8_27.1 [template = i32] // CHECK:STDOUT: %.loc8_30: type = struct_type {.a: i32, .b: i32} [template = constants.%.11] -// CHECK:STDOUT: %param: %.11 = param runtime_param -// CHECK:STDOUT: %S.loc8_9.1: %.11 = bind_symbolic_name S, 0, %param [symbolic = %S.loc8_9.2 (constants.%S)] +// CHECK:STDOUT: %S.param: %.11 = param runtime_param +// CHECK:STDOUT: %S.loc8_9.1: %.11 = bind_symbolic_name S, 0, %S.param [symbolic = %S.loc8_9.2 (constants.%S)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc9_19: i32 = int_literal 1 [template = constants.%.14] // CHECK:STDOUT: %.loc9_27: i32 = int_literal 2 [template = constants.%.15] @@ -154,7 +157,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %struct: %.11 = struct_value (%.loc9_19, %.loc9_27) [template = constants.%struct.4] // CHECK:STDOUT: %.loc9_12: %.11 = converted %.loc9_28, %struct [template = constants.%struct.4] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct.4) [template = constants.%C.3] -// CHECK:STDOUT: %return: ref %C.3 = var +// CHECK:STDOUT: %return.param: %C.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -252,7 +256,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %import_ref.1: ref %.2 = import_ref Implicit//default, inst+17, loaded // CHECK:STDOUT: %import_ref.2: ref %.6 = import_ref Implicit//default, inst+57, loaded // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+102, loaded [template = constants.%C.1] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+126, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+129, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.5 // CHECK:STDOUT: import Core//prelude @@ -264,7 +268,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.6 = import_ref Implicit//default, inst+107, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -407,7 +411,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+17, unloaded // CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, inst+57, unloaded // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+102, loaded [template = constants.%C.1] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+126, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+129, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators @@ -523,7 +527,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+17, unloaded // CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, inst+57, unloaded // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+102, loaded [template = constants.%C.1] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+126, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+129, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .ImplicitAs = %import_ref.6 // CHECK:STDOUT: import Core//prelude @@ -536,12 +540,12 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.5 = import_ref Implicit//default, inst+107, unloaded -// CHECK:STDOUT: %import_ref.6: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.8: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.6: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.8: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/literal_member_access.carbon b/toolchain/check/testdata/struct/literal_member_access.carbon index 55c9a44329c4..411c5f3cb098 100644 --- a/toolchain/check/testdata/struct/literal_member_access.carbon +++ b/toolchain/check/testdata/struct/literal_member_access.carbon @@ -45,7 +45,7 @@ fn F() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -55,7 +55,10 @@ fn F() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: %.2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.2 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_16: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_16.1: type = value_of_initializer %int.make_type_32.loc11_16 [template = i32] // CHECK:STDOUT: %.loc11_16.2: type = converted %int.make_type_32.loc11_16, %.loc11_16.1 [template = i32] @@ -66,13 +69,18 @@ fn F() -> i32 { // CHECK:STDOUT: %.loc11_34.1: type = value_of_initializer %int.make_type_32.loc11_34 [template = i32] // CHECK:STDOUT: %.loc11_34.2: type = converted %int.make_type_32.loc11_34, %.loc11_34.1 [template = i32] // CHECK:STDOUT: %.loc11_37: type = struct_type {.x: i32, .y: i32, .z: i32} [template = constants.%.2] -// CHECK:STDOUT: %return: ref %.2 = var +// CHECK:STDOUT: %return.param: %.2 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_11.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_11.2: type = converted %int.make_type_32, %.loc13_11.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/member_access.carbon b/toolchain/check/testdata/struct/member_access.carbon index 395d2270afcb..f7c8e5f758f1 100644 --- a/toolchain/check/testdata/struct/member_access.carbon +++ b/toolchain/check/testdata/struct/member_access.carbon @@ -41,8 +41,8 @@ var z: i32 = y; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] -// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index 81778de9ce84..1e3b072ba810 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -44,7 +44,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -54,7 +54,10 @@ fn G() { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_22: init type = call constants.%Int32() [template = i32] @@ -66,7 +69,8 @@ fn G() { // CHECK:STDOUT: %.loc11_25.6: type = value_of_initializer %int.make_type_32.loc11_22 [template = i32] // CHECK:STDOUT: %.loc11_25.7: type = converted %int.make_type_32.loc11_22, %.loc11_25.6 [template = i32] // CHECK:STDOUT: %.loc11_25.8: type = converted %.loc11_25.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/one_entry.carbon b/toolchain/check/testdata/struct/one_entry.carbon index c44927801c70..a5e23c303c39 100644 --- a/toolchain/check/testdata/struct/one_entry.carbon +++ b/toolchain/check/testdata/struct/one_entry.carbon @@ -34,7 +34,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/reorder_fields.carbon b/toolchain/check/testdata/struct/reorder_fields.carbon index 9108037cae98..53cd4b69d09b 100644 --- a/toolchain/check/testdata/struct/reorder_fields.carbon +++ b/toolchain/check/testdata/struct/reorder_fields.carbon @@ -51,8 +51,8 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,20 +63,31 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %MakeI32.decl: %MakeI32.type = fn_decl @MakeI32 [template = constants.%MakeI32] {} { +// CHECK:STDOUT: %MakeI32.decl: %MakeI32.type = fn_decl @MakeI32 [template = constants.%MakeI32] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_17.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_17.2: type = converted %int.make_type_32, %.loc11_17.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %MakeF64.decl: %MakeF64.type = fn_decl @MakeF64 [template = constants.%MakeF64] {} { +// CHECK:STDOUT: %MakeF64.decl: %MakeF64.type = fn_decl @MakeF64 [template = constants.%MakeF64] { +// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_17.1: i32 = int_literal 64 [template = constants.%.2] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc12_17.1) [template = f64] // CHECK:STDOUT: %.loc12_17.2: type = value_of_initializer %float.make_type [template = f64] // CHECK:STDOUT: %.loc12_17.3: type = converted %float.make_type, %.loc12_17.2 [template = f64] -// CHECK:STDOUT: %return: ref f64 = var +// CHECK:STDOUT: %return.param: f64 = param runtime_param0 +// CHECK:STDOUT: %return: ref f64 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc14: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc14_16.1: type = value_of_initializer %int.make_type_32.loc14 [template = i32] // CHECK:STDOUT: %.loc14_16.2: type = converted %int.make_type_32.loc14, %.loc14_16.1 [template = i32] @@ -85,7 +96,8 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %.loc14_25.2: type = value_of_initializer %float.make_type.loc14 [template = f64] // CHECK:STDOUT: %.loc14_25.3: type = converted %float.make_type.loc14, %.loc14_25.2 [template = f64] // CHECK:STDOUT: %.loc14_28: type = struct_type {.a: i32, .b: f64} [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/tuple_as_element.carbon b/toolchain/check/testdata/struct/tuple_as_element.carbon index cc47731d5ff3..ac1564a214aa 100644 --- a/toolchain/check/testdata/struct/tuple_as_element.carbon +++ b/toolchain/check/testdata/struct/tuple_as_element.carbon @@ -39,7 +39,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/struct/two_entries.carbon b/toolchain/check/testdata/struct/two_entries.carbon index 9a2768b03d65..9911606b9213 100644 --- a/toolchain/check/testdata/struct/two_entries.carbon +++ b/toolchain/check/testdata/struct/two_entries.carbon @@ -39,7 +39,7 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/element_access.carbon b/toolchain/check/testdata/tuple/access/element_access.carbon index c4c955fa6769..ba72b3ecf721 100644 --- a/toolchain/check/testdata/tuple/access/element_access.carbon +++ b/toolchain/check/testdata/tuple/access/element_access.carbon @@ -37,7 +37,7 @@ var c: i32 = b.0; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_access_error.carbon b/toolchain/check/testdata/tuple/access/fail_access_error.carbon index bad66f3bdc81..31c269d37a17 100644 --- a/toolchain/check/testdata/tuple/access/fail_access_error.carbon +++ b/toolchain/check/testdata/tuple/access/fail_access_error.carbon @@ -40,7 +40,7 @@ var b: i32 = a.(oops); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_large_index.carbon b/toolchain/check/testdata/tuple/access/fail_large_index.carbon index 93cd23f0c421..b73ec4426ba3 100644 --- a/toolchain/check/testdata/tuple/access/fail_large_index.carbon +++ b/toolchain/check/testdata/tuple/access/fail_large_index.carbon @@ -46,7 +46,7 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon b/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon index 9c32a4d57851..13e82b689893 100644 --- a/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon @@ -48,12 +48,12 @@ var b: i32 = a.(-10); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/arithmetic, inst+82, loaded [template = constants.%Negate.type] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/arithmetic, inst+84, unloaded -// CHECK:STDOUT: %import_ref.4: %.8 = import_ref Core//prelude/operators/arithmetic, inst+102, loaded [template = constants.%.9] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+97, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: type = import_ref Core//prelude/operators/arithmetic, inst+85, loaded [template = constants.%Negate.type] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/arithmetic, inst+87, unloaded +// CHECK:STDOUT: %import_ref.4: %.8 = import_ref Core//prelude/operators/arithmetic, inst+108, loaded [template = constants.%.9] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/arithmetic, inst+103, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon b/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon index 26ad9454c8cb..eae5d7e81471 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon @@ -42,7 +42,7 @@ var c: i32 = a.(b); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon b/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon index 7167bb8e4423..ca2c55cdb487 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon @@ -62,13 +62,13 @@ var b: i32 = a.(2.6); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.12)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.12)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon b/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon index b9a3de8764c3..19c09868e7ff 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon @@ -52,7 +52,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon b/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon index 5b828be0cd9b..48666228353b 100644 --- a/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon +++ b/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon @@ -41,7 +41,7 @@ var b: i32 = a.2; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon b/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon index 1bbe0b2d2a6d..a2b673f013a6 100644 --- a/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon +++ b/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon @@ -43,7 +43,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/index_not_literal.carbon b/toolchain/check/testdata/tuple/access/index_not_literal.carbon index 24259c65b473..562413656b06 100644 --- a/toolchain/check/testdata/tuple/access/index_not_literal.carbon +++ b/toolchain/check/testdata/tuple/access/index_not_literal.carbon @@ -40,7 +40,7 @@ var b: i32 = a.({.index = 1}.index); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/access/return_value_access.carbon b/toolchain/check/testdata/tuple/access/return_value_access.carbon index 3724c439f3dc..0587154428c9 100644 --- a/toolchain/check/testdata/tuple/access/return_value_access.carbon +++ b/toolchain/check/testdata/tuple/access/return_value_access.carbon @@ -42,7 +42,7 @@ fn Run() -> i32 { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -52,19 +52,27 @@ fn Run() -> i32 { // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc11_16.1: %.2 = tuple_literal (%int.make_type_32) // CHECK:STDOUT: %.loc11_16.2: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc11_16.3: type = converted %int.make_type_32, %.loc11_16.2 [template = i32] // CHECK:STDOUT: %.loc11_16.4: type = converted %.loc11_16.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} { +// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] { +// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %.loc13_13.1: type = value_of_initializer %int.make_type_32 [template = i32] // CHECK:STDOUT: %.loc13_13.2: type = converted %int.make_type_32, %.loc13_13.1 [template = i32] -// CHECK:STDOUT: %return: ref i32 = var +// CHECK:STDOUT: %return.param: i32 = param runtime_param0 +// CHECK:STDOUT: %return: ref i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/fail_assign_nested.carbon b/toolchain/check/testdata/tuple/fail_assign_nested.carbon index d7a4d3763920..c984faa42d4a 100644 --- a/toolchain/check/testdata/tuple/fail_assign_nested.carbon +++ b/toolchain/check/testdata/tuple/fail_assign_nested.carbon @@ -48,7 +48,7 @@ var x: ((i32, i32), (i32, i32)) = ((1, 2, 3), (4, 5, 6)); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon b/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon index ea6eed089ff0..fb4c032db7fc 100644 --- a/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon +++ b/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon @@ -60,13 +60,13 @@ var x: (i32, i32) = (2, 65.89); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.12)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.8) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.12)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon b/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon index 6eb71f3708dc..71c0bbb06a3a 100644 --- a/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon @@ -45,7 +45,7 @@ var p: Incomplete* = &t[1]; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/fail_too_few_element.carbon b/toolchain/check/testdata/tuple/fail_too_few_element.carbon index 3452f73b8ab2..072a33a6de7e 100644 --- a/toolchain/check/testdata/tuple/fail_too_few_element.carbon +++ b/toolchain/check/testdata/tuple/fail_too_few_element.carbon @@ -38,7 +38,7 @@ var x: (i32, i32) = (2, ); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/fail_type_assign.carbon b/toolchain/check/testdata/tuple/fail_type_assign.carbon index e01d183b5c7a..1216273f5ed3 100644 --- a/toolchain/check/testdata/tuple/fail_type_assign.carbon +++ b/toolchain/check/testdata/tuple/fail_type_assign.carbon @@ -56,13 +56,13 @@ var x: (i32, ) = (i32, ); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/fail_value_as_type.carbon b/toolchain/check/testdata/tuple/fail_value_as_type.carbon index 0fdfea3d1775..2bd151f53a10 100644 --- a/toolchain/check/testdata/tuple/fail_value_as_type.carbon +++ b/toolchain/check/testdata/tuple/fail_value_as_type.carbon @@ -53,12 +53,12 @@ var x: (1, ); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index 2e1ed742e52f..32b909846b41 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -104,7 +104,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -157,10 +157,13 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc7_22.4: type = value_of_initializer %int.make_type_32.loc7_19 [template = i32] // CHECK:STDOUT: %.loc7_22.5: type = converted %int.make_type_32.loc7_19, %.loc7_22.4 [template = i32] // CHECK:STDOUT: %.loc7_22.6: type = converted %.loc7_22.1, constants.%.9 [template = constants.%.9] -// CHECK:STDOUT: %param: %.9 = param runtime_param -// CHECK:STDOUT: %X.loc7_9.1: %.9 = bind_symbolic_name X, 0, %param [symbolic = %X.loc7_9.2 (constants.%X)] +// CHECK:STDOUT: %X.param: %.9 = param runtime_param +// CHECK:STDOUT: %X.loc7_9.1: %.9 = bind_symbolic_name X, 0, %X.param [symbolic = %X.loc7_9.2 (constants.%X)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1] // CHECK:STDOUT: %.loc9_14: i32 = int_literal 1 [template = constants.%.15] // CHECK:STDOUT: %.loc9_17: i32 = int_literal 2 [template = constants.%.16] @@ -168,7 +171,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %tuple: %.9 = tuple_value (%.loc9_14, %.loc9_17) [template = constants.%tuple.5] // CHECK:STDOUT: %.loc9_12: %.9 = converted %.loc9_18, %tuple [template = constants.%tuple.5] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.5) [template = constants.%C.3] -// CHECK:STDOUT: %return: ref %C.3 = var +// CHECK:STDOUT: %return.param: %C.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,7 +279,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %import_ref.1: ref %.3 = import_ref Implicit//default, inst+17, loaded // CHECK:STDOUT: %import_ref.2: ref %.9 = import_ref Implicit//default, inst+57, loaded // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+106, loaded [template = constants.%C.1] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+125, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+128, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .Int32 = %import_ref.5 // CHECK:STDOUT: import Core//prelude @@ -287,7 +291,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: %import_ref.6 = import_ref Implicit//default, inst+111, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -447,7 +451,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+17, unloaded // CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, inst+57, unloaded // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+106, loaded [template = constants.%C.1] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+125, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+128, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/operators @@ -564,7 +568,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+17, unloaded // CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, inst+57, unloaded // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+106, loaded [template = constants.%C.1] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+125, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+128, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: .ImplicitAs = %import_ref.6 // CHECK:STDOUT: import Core//prelude @@ -577,12 +581,12 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.5 = import_ref Implicit//default, inst+111, unloaded -// CHECK:STDOUT: %import_ref.6: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.8: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.6: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.8: @ImplicitAs.%.1 (%.11) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.15)] +// CHECK:STDOUT: %import_ref.9 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/nested_tuple.carbon b/toolchain/check/testdata/tuple/nested_tuple.carbon index 3557dff8deaf..3388635d6e3b 100644 --- a/toolchain/check/testdata/tuple/nested_tuple.carbon +++ b/toolchain/check/testdata/tuple/nested_tuple.carbon @@ -42,7 +42,7 @@ var x: ((i32, i32), i32) = ((12, 76), 6); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon b/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon index c73ebd9a9400..a4007ee10123 100644 --- a/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon +++ b/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon @@ -57,7 +57,7 @@ fn H() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -68,7 +68,10 @@ fn H() { // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %.3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.3 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_17: init type = call constants.%Int32() [template = i32] // CHECK:STDOUT: %int.make_type_32.loc11_22: init type = call constants.%Int32() [template = i32] @@ -80,7 +83,8 @@ fn H() { // CHECK:STDOUT: %.loc11_25.6: type = value_of_initializer %int.make_type_32.loc11_22 [template = i32] // CHECK:STDOUT: %.loc11_25.7: type = converted %int.make_type_32.loc11_22, %.loc11_25.6 [template = i32] // CHECK:STDOUT: %.loc11_25.8: type = converted %.loc11_25.1, constants.%.3 [template = constants.%.3] -// CHECK:STDOUT: %return: ref %.3 = var +// CHECK:STDOUT: %return.param: %.3 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} {} diff --git a/toolchain/check/testdata/tuple/one_element.carbon b/toolchain/check/testdata/tuple/one_element.carbon index 92d6efe12c5b..52a63f4eb89b 100644 --- a/toolchain/check/testdata/tuple/one_element.carbon +++ b/toolchain/check/testdata/tuple/one_element.carbon @@ -35,7 +35,7 @@ var y: (i32,) = x; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/tuple/two_elements.carbon b/toolchain/check/testdata/tuple/two_elements.carbon index 27a175884815..1c42fa66fc4d 100644 --- a/toolchain/check/testdata/tuple/two_elements.carbon +++ b/toolchain/check/testdata/tuple/two_elements.carbon @@ -40,7 +40,7 @@ var y: (i32, i32) = x; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/var/fail_not_copyable.carbon b/toolchain/check/testdata/var/fail_not_copyable.carbon index 69c48f3ea986..0cbe611fbdba 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -67,8 +67,8 @@ fn F(x: X) { // CHECK:STDOUT: %x.param_patt: %X = param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref.loc14: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %param: %X = param runtime_param0 -// CHECK:STDOUT: %x: %X = bind_name x, %param +// CHECK:STDOUT: %x.param: %X = param runtime_param0 +// CHECK:STDOUT: %x: %X = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_storage_is_literal.carbon b/toolchain/check/testdata/var/fail_storage_is_literal.carbon index 106cbdc6358d..370cecee6a29 100644 --- a/toolchain/check/testdata/var/fail_storage_is_literal.carbon +++ b/toolchain/check/testdata/var/fail_storage_is_literal.carbon @@ -56,12 +56,12 @@ fn Main() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/var/fail_todo_control_flow_init.carbon b/toolchain/check/testdata/var/fail_todo_control_flow_init.carbon index 1ce42ca344c3..b65ed2d73e6d 100644 --- a/toolchain/check/testdata/var/fail_todo_control_flow_init.carbon +++ b/toolchain/check/testdata/var/fail_todo_control_flow_init.carbon @@ -78,7 +78,7 @@ var y2: bool = false or true; // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/where_expr/constraints.carbon b/toolchain/check/testdata/where_expr/constraints.carbon index 0a073d0a6097..353d8da30dbc 100644 --- a/toolchain/check/testdata/where_expr/constraints.carbon +++ b/toolchain/check/testdata/where_expr/constraints.carbon @@ -222,8 +222,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc11_21: type = where_expr %.Self [template = constants.%I.type] { // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc11_37 // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %U.loc11_15.1: %I.type = bind_symbolic_name U, 0, %param [symbolic = %U.loc11_15.2 (constants.%U)] +// CHECK:STDOUT: %U.param: %I.type = param runtime_param +// CHECK:STDOUT: %U.loc11_15.1: %I.type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc11_15.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %Impls.decl: %Impls.type = fn_decl @Impls [template = constants.%Impls] { // CHECK:STDOUT: %V.patt.loc13_10.1: %J.type = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc13_10.2 (constants.%V.patt)] @@ -238,8 +238,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc13_16: type = where_expr %.Self [template = constants.%J.type] { // CHECK:STDOUT: requirement_impls %.loc13_22.2, %I.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %J.type = param runtime_param -// CHECK:STDOUT: %V.loc13_10.1: %J.type = bind_symbolic_name V, 0, %param [symbolic = %V.loc13_10.2 (constants.%V)] +// CHECK:STDOUT: %V.param: %J.type = param runtime_param +// CHECK:STDOUT: %V.loc13_10.1: %J.type = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc13_10.2 (constants.%V)] // CHECK:STDOUT: } // CHECK:STDOUT: %And.decl: %And.type = fn_decl @And [template = constants.%And] { // CHECK:STDOUT: %W.patt.loc15_8.1: %I.type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc15_8.2 (constants.%W.patt)] @@ -258,8 +258,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: requirement_impls %.loc15_20.2, %J.ref // CHECK:STDOUT: requirement_equivalent %Member.ref, %.loc15_50 // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %W.loc15_8.1: %I.type = bind_symbolic_name W, 0, %param [symbolic = %W.loc15_8.2 (constants.%W)] +// CHECK:STDOUT: %W.param: %I.type = param runtime_param +// CHECK:STDOUT: %W.loc15_8.1: %I.type = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc15_8.2 (constants.%W)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -368,12 +368,12 @@ fn NotEmptyStruct() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -402,8 +402,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc15_16: type = where_expr %.Self [template = constants.%N.type] { // CHECK:STDOUT: requirement_rewrite %P.ref, // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %N.type = param runtime_param -// CHECK:STDOUT: %T.loc15_10.1: %N.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc15_10.2 (constants.%T)] +// CHECK:STDOUT: %T.param: %N.type = param runtime_param +// CHECK:STDOUT: %T.loc15_10.1: %N.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_10.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -540,12 +540,12 @@ fn NotEmptyStruct() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -576,8 +576,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc18_30: type = where_expr %.Self [template = constants.%K.type] { // CHECK:STDOUT: requirement_impls , %M.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %K.type = param runtime_param -// CHECK:STDOUT: %W.loc18_24.1: %K.type = bind_symbolic_name W, 0, %param [symbolic = %W.loc18_24.2 (constants.%W)] +// CHECK:STDOUT: %W.param: %K.type = param runtime_param +// CHECK:STDOUT: %W.loc18_24.1: %K.type = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc18_24.2 (constants.%W)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -739,12 +739,12 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %import_ref.9 = import_ref Main//state_constraints, inst+11, unloaded // CHECK:STDOUT: %import_ref.10 = import_ref Main//state_constraints, inst+17, unloaded // CHECK:STDOUT: %import_ref.11 = import_ref Main//state_constraints, inst+11, unloaded -// CHECK:STDOUT: %import_ref.12: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.14: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] -// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.16 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.12: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.13 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.14: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] +// CHECK:STDOUT: %import_ref.15 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.16 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.17 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -775,8 +775,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc16_30: type = where_expr %.Self [template = constants.%I.type] { // CHECK:STDOUT: requirement_rewrite %Member.ref, // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %X.loc16_24.1: %I.type = bind_symbolic_name X, 0, %param [symbolic = %X.loc16_24.2 (constants.%X)] +// CHECK:STDOUT: %X.param: %I.type = param runtime_param +// CHECK:STDOUT: %X.loc16_24.1: %I.type = bind_symbolic_name X, 0, %X.param [symbolic = %X.loc16_24.2 (constants.%X)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -903,12 +903,12 @@ fn NotEmptyStruct() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -930,8 +930,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc11_26: type = where_expr %.Self [template = type] { // CHECK:STDOUT: requirement_impls , type // CHECK:STDOUT: } -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc11_17.1: type = bind_symbolic_name U, 0, %param [symbolic = %U.loc11_17.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc11_17.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc11_17.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1050,12 +1050,12 @@ fn NotEmptyStruct() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1078,8 +1078,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc11_26: type = where_expr %.Self [template = type] { // CHECK:STDOUT: requirement_impls %.Self.ref, // CHECK:STDOUT: } -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc11_17.1: type = bind_symbolic_name U, 0, %param [symbolic = %U.loc11_17.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc11_17.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc11_17.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1182,7 +1182,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1203,8 +1203,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc8_33: type = where_expr %.Self [template = type] { // CHECK:STDOUT: requirement_impls %.Self.ref, // CHECK:STDOUT: } -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %U.loc8_24.1: type = bind_symbolic_name U, 0, %param [symbolic = %U.loc8_24.2 (constants.%U)] +// CHECK:STDOUT: %U.param: type = param runtime_param +// CHECK:STDOUT: %U.loc8_24.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc8_24.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1282,12 +1282,12 @@ fn NotEmptyStruct() { // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.6 = import_ref Main//state_constraints, inst+5, unloaded -// CHECK:STDOUT: %import_ref.7: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.9: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] -// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.7: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.9: @ImplicitAs.%.1 (%.5) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.9)] +// CHECK:STDOUT: %import_ref.10 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.11 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.12 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1322,8 +1322,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %.loc26_22: type = where_expr %.Self [template = constants.%J.type] { // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc26_38 // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %J.type = param runtime_param -// CHECK:STDOUT: %Y.loc26_16.1: %J.type = bind_symbolic_name Y, 0, %param [symbolic = %Y.loc26_16.2 (constants.%Y)] +// CHECK:STDOUT: %Y.param: %J.type = param runtime_param +// CHECK:STDOUT: %Y.loc26_16.1: %J.type = bind_symbolic_name Y, 0, %Y.param [symbolic = %Y.loc26_16.2 (constants.%Y)] // CHECK:STDOUT: } // CHECK:STDOUT: %NotEmptyStruct.decl: %NotEmptyStruct.type = fn_decl @NotEmptyStruct [template = constants.%NotEmptyStruct] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/where_expr/designator.carbon b/toolchain/check/testdata/where_expr/designator.carbon index f4285e541e9f..1e8cbf46fff2 100644 --- a/toolchain/check/testdata/where_expr/designator.carbon +++ b/toolchain/check/testdata/where_expr/designator.carbon @@ -144,8 +144,8 @@ class D { // CHECK:STDOUT: %.loc8_21: type = where_expr %.Self [template = constants.%I.type] { // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc8_37 // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %T.loc8_15.1: %I.type = bind_symbolic_name T, 0, %param [symbolic = %T.loc8_15.2 (constants.%T)] +// CHECK:STDOUT: %T.param: %I.type = param runtime_param +// CHECK:STDOUT: %T.loc8_15.1: %I.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %PeriodMember.decl: %PeriodMember.type = fn_decl @PeriodMember [template = constants.%PeriodMember] { // CHECK:STDOUT: %U.patt.loc10_17.1: %I.type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc10_17.2 (constants.%U.patt)] @@ -159,8 +159,8 @@ class D { // CHECK:STDOUT: %.loc10_23: type = where_expr %.Self [template = constants.%I.type] { // CHECK:STDOUT: requirement_equivalent %Member.ref, %.loc10_41 // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %I.type = param runtime_param -// CHECK:STDOUT: %U.loc10_17.1: %I.type = bind_symbolic_name U, 0, %param [symbolic = %U.loc10_17.2 (constants.%U)] +// CHECK:STDOUT: %U.param: %I.type = param runtime_param +// CHECK:STDOUT: %U.loc10_17.1: %I.type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc10_17.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %TypeSelfImpls.decl: %TypeSelfImpls.type = fn_decl @TypeSelfImpls [template = constants.%TypeSelfImpls] { // CHECK:STDOUT: %V.patt.loc12_18.1: type = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc12_18.2 (constants.%V.patt)] @@ -172,8 +172,8 @@ class D { // CHECK:STDOUT: %.loc12: type = where_expr %.Self [template = type] { // CHECK:STDOUT: requirement_impls %.Self.ref, %I.ref // CHECK:STDOUT: } -// CHECK:STDOUT: %param: type = param runtime_param -// CHECK:STDOUT: %V.loc12_18.1: type = bind_symbolic_name V, 0, %param [symbolic = %V.loc12_18.2 (constants.%V)] +// CHECK:STDOUT: %V.param: type = param runtime_param +// CHECK:STDOUT: %V.loc12_18.1: type = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc12_18.2 (constants.%V)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -273,8 +273,8 @@ class D { // CHECK:STDOUT: %.loc12_25: type = where_expr %.Self [template = constants.%J.type] { // CHECK:STDOUT: requirement_rewrite %Mismatch.ref, // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %J.type = param runtime_param -// CHECK:STDOUT: %W.loc12_19.1: %J.type = bind_symbolic_name W, 0, %param [symbolic = %W.loc12_19.2 (constants.%W)] +// CHECK:STDOUT: %W.param: %J.type = param runtime_param +// CHECK:STDOUT: %W.loc12_19.1: %J.type = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc12_19.2 (constants.%W)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -328,10 +328,14 @@ class D { // CHECK:STDOUT: .Foo = %Foo.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} { +// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_14.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc4_14.2: type = converted %.loc4_14.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -372,10 +376,14 @@ class D { // CHECK:STDOUT: .Bar = %Bar.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] {} { +// CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] { +// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_14.1: %.1 = tuple_literal () // CHECK:STDOUT: %.loc4_14.2: type = converted %.loc4_14.1, constants.%.1 [template = constants.%.1] -// CHECK:STDOUT: %return: ref %.1 = var +// CHECK:STDOUT: %return.param: %.1 = param runtime_param0 +// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -420,9 +428,13 @@ class D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: %C = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %return: ref %C = var +// CHECK:STDOUT: %return.param: %C = param runtime_param0 +// CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: @@ -471,9 +483,13 @@ class D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %.Self.ref: = name_ref .Self, [template = ] -// CHECK:STDOUT: %return: ref = var +// CHECK:STDOUT: %return.param: = param runtime_param0 +// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9: = complete_type_witness %.2 [template = constants.%.3] // CHECK:STDOUT: diff --git a/toolchain/check/testdata/where_expr/fail_not_facet.carbon b/toolchain/check/testdata/where_expr/fail_not_facet.carbon index b253238cdaa8..5805130310a9 100644 --- a/toolchain/check/testdata/where_expr/fail_not_facet.carbon +++ b/toolchain/check/testdata/where_expr/fail_not_facet.carbon @@ -45,8 +45,8 @@ fn F(T:! i32 where .Self == bool); // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] -// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref.2: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -68,8 +68,8 @@ fn F(T:! i32 where .Self == bool); // CHECK:STDOUT: %.loc7_14: type = where_expr %.Self [template = ] { // CHECK:STDOUT: requirement_equivalent %.Self.ref, %bool.make_type // CHECK:STDOUT: } -// CHECK:STDOUT: %param: = param runtime_param -// CHECK:STDOUT: %T.loc7_6.1: = bind_symbolic_name T, 0, %param [symbolic = %T.loc7_6.2 (constants.%T)] +// CHECK:STDOUT: %T.param: = param runtime_param +// CHECK:STDOUT: %T.loc7_6.1: = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/where_expr/non_generic.carbon b/toolchain/check/testdata/where_expr/non_generic.carbon index 3c8f49bbc7ab..3cae9e0d22a8 100644 --- a/toolchain/check/testdata/where_expr/non_generic.carbon +++ b/toolchain/check/testdata/where_expr/non_generic.carbon @@ -40,7 +40,7 @@ fn NotGenericF(U: I where .T == i32) {} // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32] +// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,8 +63,8 @@ fn NotGenericF(U: I where .T == i32) {} // CHECK:STDOUT: %.loc14: type = where_expr %.Self [template = constants.%I.type] { // CHECK:STDOUT: requirement_equivalent %T.ref, %int.make_type_32 // CHECK:STDOUT: } -// CHECK:STDOUT: %param: %I.type = param runtime_param0 -// CHECK:STDOUT: %U: %I.type = bind_name U, %param +// CHECK:STDOUT: %U.param: %I.type = param runtime_param0 +// CHECK:STDOUT: %U: %I.type = bind_name U, %U.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/while/break_continue.carbon b/toolchain/check/testdata/while/break_continue.carbon index 2a58a9bab12d..b4a975a2e4e5 100644 --- a/toolchain/check/testdata/while/break_continue.carbon +++ b/toolchain/check/testdata/while/break_continue.carbon @@ -68,7 +68,7 @@ fn While() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,53 +85,85 @@ fn While() { // CHECK:STDOUT: .While = %While.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} { +// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc11_11.2: type = converted %bool.make_type, %.loc11_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {} { +// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc12_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc12_11.2: type = converted %bool.make_type, %.loc12_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} { +// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc13_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc13_11.2: type = converted %bool.make_type, %.loc13_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} { +// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc14_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc14_11.2: type = converted %bool.make_type, %.loc14_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} { +// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc15_11.2: type = converted %bool.make_type, %.loc15_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} { +// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc16_11.2: type = converted %bool.make_type, %.loc16_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} { +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc17_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc17_11.2: type = converted %bool.make_type, %.loc17_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} { +// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc18_11.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc18_11.2: type = converted %bool.make_type, %.loc18_11.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %While.decl: %While.type = fn_decl @While [template = constants.%While] {} {} // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/while/fail_bad_condition.carbon b/toolchain/check/testdata/while/fail_bad_condition.carbon index f2512dcaee80..133f3f1d11e8 100644 --- a/toolchain/check/testdata/while/fail_bad_condition.carbon +++ b/toolchain/check/testdata/while/fail_bad_condition.carbon @@ -57,12 +57,12 @@ fn While() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs] -// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+52, unloaded -// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] -// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded +// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs] +// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded +// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)] +// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded +// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/while/unreachable_end.carbon b/toolchain/check/testdata/while/unreachable_end.carbon index bd8634ff4ebc..0d6f0c353392 100644 --- a/toolchain/check/testdata/while/unreachable_end.carbon +++ b/toolchain/check/testdata/while/unreachable_end.carbon @@ -53,7 +53,7 @@ fn While() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -66,11 +66,15 @@ fn While() { // CHECK:STDOUT: .While = %While.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cond.decl: %Cond.type = fn_decl @Cond [template = constants.%Cond] {} { +// CHECK:STDOUT: %Cond.decl: %Cond.type = fn_decl @Cond [template = constants.%Cond] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc11_14.2: type = converted %bool.make_type, %.loc11_14.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} diff --git a/toolchain/check/testdata/while/while.carbon b/toolchain/check/testdata/while/while.carbon index 2da49748f24f..49757b1d8b71 100644 --- a/toolchain/check/testdata/while/while.carbon +++ b/toolchain/check/testdata/while/while.carbon @@ -52,7 +52,7 @@ fn While() { // CHECK:STDOUT: import Core//prelude/operators/comparison // CHECK:STDOUT: import Core//prelude/types/bool // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+2, loaded [template = constants.%Bool] +// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -65,11 +65,15 @@ fn While() { // CHECK:STDOUT: .While = %While.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Cond.decl: %Cond.type = fn_decl @Cond [template = constants.%Cond] {} { +// CHECK:STDOUT: %Cond.decl: %Cond.type = fn_decl @Cond [template = constants.%Cond] { +// CHECK:STDOUT: %return.patt: bool = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: bool = param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: } { // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc11_14.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc11_14.2: type = converted %bool.make_type, %.loc11_14.1 [template = bool] -// CHECK:STDOUT: %return: ref bool = var +// CHECK:STDOUT: %return.param: bool = param runtime_param0 +// CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} diff --git a/toolchain/lower/file_context.cpp b/toolchain/lower/file_context.cpp index a823ae1a6264..53e46ed9db57 100644 --- a/toolchain/lower/file_context.cpp +++ b/toolchain/lower/file_context.cpp @@ -228,7 +228,7 @@ auto FileContext::BuildFunctionDecl(SemIR::FunctionId function_id, param_inst_ids.reserve(max_llvm_params); if (return_info.has_return_slot()) { param_types.push_back(return_type->getPointerTo()); - param_inst_ids.push_back(function.return_storage_id); + param_inst_ids.push_back(function.return_slot_id); } for (auto param_pattern_id : llvm::concat( implicit_param_patterns, param_patterns)) { @@ -280,7 +280,7 @@ auto FileContext::BuildFunctionDecl(SemIR::FunctionId function_id, for (auto [inst_id, arg] : llvm::zip_equal(param_inst_ids, llvm_function->args())) { auto name_id = SemIR::NameId::Invalid; - if (inst_id == function.return_storage_id) { + if (inst_id == function.return_slot_id) { name_id = SemIR::NameId::ReturnSlot; arg.addAttr( llvm::Attribute::getWithStructRetType(llvm_context(), return_type)); @@ -326,7 +326,7 @@ auto FileContext::BuildFunctionDefinition(SemIR::FunctionId function_id) int param_index = 0; if (SemIR::ReturnTypeInfo::ForFunction(sem_ir(), function, specific_id) .has_return_slot()) { - function_lowering.SetLocal(function.return_storage_id, + function_lowering.SetLocal(function.return_slot_id, llvm_function->getArg(param_index)); ++param_index; } diff --git a/toolchain/lower/handle.cpp b/toolchain/lower/handle.cpp index 4f6e8b8c7d6b..5a29997668d4 100644 --- a/toolchain/lower/handle.cpp +++ b/toolchain/lower/handle.cpp @@ -182,6 +182,11 @@ auto HandleInst(FunctionContext& /*context*/, SemIR::InstId /*inst_id*/, CARBON_FATAL("Parameters should be lowered by `BuildFunctionDefinition`"); } +auto HandleInst(FunctionContext& /*context*/, SemIR::InstId /*inst_id*/, + SemIR::ReturnSlot /*inst*/) -> void { + CARBON_FATAL("Return slots should be lowered by `BuildFunctionDefinition`"); +} + auto HandleInst(FunctionContext& context, SemIR::InstId /*inst_id*/, SemIR::Return /*inst*/) -> void { context.builder().CreateRetVoid(); diff --git a/toolchain/sem_ir/file.cpp b/toolchain/sem_ir/file.cpp index 8fa82491be3f..ba24d38e2bac 100644 --- a/toolchain/sem_ir/file.cpp +++ b/toolchain/sem_ir/file.cpp @@ -199,6 +199,7 @@ auto GetExprCategory(const File& file, InstId inst_id) -> ExprCategory { case RequirementImpls::Kind: case RequirementRewrite::Kind: case Return::Kind: + case ReturnSlotPattern::Kind: case ReturnExpr::Kind: case StructTypeField::Kind: return ExprCategory::NotExpr; @@ -344,6 +345,7 @@ auto GetExprCategory(const File& file, InstId inst_id) -> ExprCategory { case Deref::Kind: case VarStorage::Kind: + case ReturnSlot::Kind: return ExprCategory::DurableRef; case Temporary::Kind: diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index 97b15508a5f3..600a1d8ad97a 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -287,15 +287,15 @@ class FormatterImpl { FormatParamList(fn.implicit_param_patterns_id, /*is_implicit=*/true); FormatParamList(fn.param_patterns_id, /*is_implicit=*/false); - if (fn.return_storage_id.is_valid()) { + if (fn.return_slot_id.is_valid()) { out_ << " -> "; auto return_info = ReturnTypeInfo::ForFunction(sem_ir_, fn); if (!fn.body_block_ids.empty() && return_info.is_valid() && return_info.has_return_slot()) { - FormatName(fn.return_storage_id); + FormatName(fn.return_slot_id); out_ << ": "; } - FormatType(sem_ir_.insts().Get(fn.return_storage_id).type_id()); + FormatType(sem_ir_.insts().Get(fn.return_slot_id).type_id()); } if (fn.builtin_function_kind != BuiltinFunctionKind::None) { @@ -780,6 +780,12 @@ class FormatterImpl { FormatReturnSlot(inst.dest_id); } + auto FormatInstRHS(Param inst) -> void { + FormatArgs(inst.runtime_index); + // Omit pretty_name because it's an implementation detail of + // pretty-printing. + } + auto FormatInstRHS(ReturnExpr ret) -> void { FormatArgs(ret.expr_id); if (ret.dest_id.is_valid()) { @@ -787,6 +793,16 @@ class FormatterImpl { } } + auto FormatInstRHS(ReturnSlot inst) -> void { + // Omit inst.type_inst_id because it's not semantically significant. + FormatArgs(inst.storage_id); + } + + auto FormatInstRHS(ReturnSlotPattern /*inst*/) -> void { + // No-op because type_id is the only semantically significant field, + // and it's handled separately. + } + auto FormatInstRHS(StructInit init) -> void { FormatArgs(init.elements_id); FormatReturnSlot(init.dest_id); diff --git a/toolchain/sem_ir/function.cpp b/toolchain/sem_ir/function.cpp index 21df709915ea..339441a78c3c 100644 --- a/toolchain/sem_ir/function.cpp +++ b/toolchain/sem_ir/function.cpp @@ -95,6 +95,9 @@ auto Function::GetNameFromPatternId(const File& sem_ir, InstId pattern_id) inst_id = param_pattern_inst.subpattern_id; inst = sem_ir.insts().Get(inst_id); + if (inst.Is()) { + return SemIR::NameId::ReturnSlot; + } auto binding_pattern = inst.As(); return sem_ir.entity_names().Get(binding_pattern.entity_name_id).name_id; } @@ -115,11 +118,11 @@ auto Function::GetParamFromParamRefId(const File& sem_ir, InstId param_ref_id) auto Function::GetDeclaredReturnType(const File& file, SpecificId specific_id) const -> TypeId { - if (!return_storage_id.is_valid()) { + if (!return_slot_id.is_valid()) { return TypeId::Invalid; } return GetTypeInSpecific(file, specific_id, - file.insts().Get(return_storage_id).type_id()); + file.insts().Get(return_slot_id).type_id()); } } // namespace Carbon::SemIR diff --git a/toolchain/sem_ir/function.h b/toolchain/sem_ir/function.h index 6d0e8bb7bfb8..273f1abc6fc2 100644 --- a/toolchain/sem_ir/function.h +++ b/toolchain/sem_ir/function.h @@ -24,7 +24,7 @@ struct FunctionFields { // type is the return type of the function. This may or may not be used by the // function, depending on whether the return type needs a return slot, but is // always present if the function has a declared return type. - InstId return_storage_id; + InstId return_slot_id; // Which, if any, virtual modifier (virtual, abstract, or impl) is applied to // this function. @@ -53,8 +53,8 @@ struct Function : public EntityWithParamsBase, auto Print(llvm::raw_ostream& out) const -> void { out << "{"; PrintBaseFields(out); - if (return_storage_id.is_valid()) { - out << ", return_storage: " << return_storage_id; + if (return_slot_id.is_valid()) { + out << ", return_slot: " << return_slot_id; } if (!body_block_ids.empty()) { out << llvm::formatv( diff --git a/toolchain/sem_ir/inst_kind.def b/toolchain/sem_ir/inst_kind.def index 40613bf6f782..2be800e70b9a 100644 --- a/toolchain/sem_ir/inst_kind.def +++ b/toolchain/sem_ir/inst_kind.def @@ -78,8 +78,10 @@ CARBON_SEM_IR_INST_KIND(PointerType) CARBON_SEM_IR_INST_KIND(RequirementRewrite) CARBON_SEM_IR_INST_KIND(RequirementEquivalent) CARBON_SEM_IR_INST_KIND(RequirementImpls) -CARBON_SEM_IR_INST_KIND(ReturnExpr) CARBON_SEM_IR_INST_KIND(Return) +CARBON_SEM_IR_INST_KIND(ReturnExpr) +CARBON_SEM_IR_INST_KIND(ReturnSlot) +CARBON_SEM_IR_INST_KIND(ReturnSlotPattern) CARBON_SEM_IR_INST_KIND(SpecificConstant) CARBON_SEM_IR_INST_KIND(SpecificFunction) CARBON_SEM_IR_INST_KIND(SpliceBlock) diff --git a/toolchain/sem_ir/inst_namer.cpp b/toolchain/sem_ir/inst_namer.cpp index 242eaf5be760..4206b4f17b7f 100644 --- a/toolchain/sem_ir/inst_namer.cpp +++ b/toolchain/sem_ir/inst_namer.cpp @@ -48,11 +48,11 @@ InstNamer::InstNamer(const Lex::TokenizedBuffer& tokenized_buffer, *this, fn_loc, sem_ir.names().GetIRBaseName(fn.name_id).str()); CollectNamesInBlock(fn_scope, fn.implicit_param_patterns_id); CollectNamesInBlock(fn_scope, fn.param_patterns_id); - if (fn.return_storage_id.is_valid()) { - insts_[fn.return_storage_id.index] = { + if (fn.return_slot_id.is_valid()) { + insts_[fn.return_slot_id.index] = { fn_scope, GetScopeInfo(fn_scope).insts.AllocateName( - *this, sem_ir.insts().GetLocId(fn.return_storage_id), "return")}; + *this, sem_ir.insts().GetLocId(fn.return_slot_id), "return")}; } if (!fn.body_block_ids.empty()) { AddBlockLabel(fn_scope, fn.body_block_ids.front(), "entry", fn_loc); @@ -530,9 +530,8 @@ auto InstNamer::CollectNamesInBlock(ScopeId scope_id, add_inst_name_id(sem_ir_.name_scopes().Get(inst.name_scope_id).name_id); continue; } - case InstKind::Param: { - // TODO: Find a way to use the name of the enclosing bind inst here. - add_inst_name("param"); + case CARBON_KIND(Param inst): { + add_inst_name_id(inst.pretty_name_id, ".param"); continue; } case InstKind::ParamPattern: { @@ -541,6 +540,10 @@ auto InstNamer::CollectNamesInBlock(ScopeId scope_id, ".param_patt"); break; } + case InstKind::ReturnSlotPattern: { + add_inst_name_id(NameId::ReturnSlot, ".patt"); + break; + } case CARBON_KIND(SpliceBlock inst): { CollectNamesInBlock(scope_id, inst.block_id); break; diff --git a/toolchain/sem_ir/stringify_type.cpp b/toolchain/sem_ir/stringify_type.cpp index 4180226a6e13..4d582affbd17 100644 --- a/toolchain/sem_ir/stringify_type.cpp +++ b/toolchain/sem_ir/stringify_type.cpp @@ -306,6 +306,8 @@ auto StringifyTypeExpr(const SemIR::File& outer_sem_ir, InstId outer_inst_id) case RequirementRewrite::Kind: case Return::Kind: case ReturnExpr::Kind: + case ReturnSlot::Kind: + case ReturnSlotPattern::Kind: case SpecificFunction::Kind: case SpliceBlock::Kind: case StringLiteral::Kind: diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index d94df0583ec9..0df27569fb93 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -833,6 +833,10 @@ struct Param { TypeId type_id; RuntimeParamIndex runtime_index; + + // A name to associate with this Param in pretty-printed IR. This is not + // necessarily unique, or even valid, and has no semantic significance. + NameId pretty_name_id; }; // A pattern that represents a parameter. It matches the same values as @@ -881,6 +885,42 @@ struct ReturnExpr { InstId dest_id; }; +// The return slot of a function declaration, as exposed in the function body. +// This acts as an output parameter, analogous to `BindName` for input +// parameters. +struct ReturnSlot { + static constexpr auto Kind = + InstKind::ReturnSlot.Define({.ir_name = "return_slot"}); + + // The type of the value that will be stored in this slot (i.e. the return + // type of the function). + TypeId type_id; + + // The function return type as originally written by the user. For diagnostics + // only; this has no semantic significance. + InstId type_inst_id; + + // The storage that will be initialized by the function. + InstId storage_id; +}; + +// The return slot of a function declaration, as exposed to the function's +// callers. This acts as an output parameter, analogous to `BindingPattern` +// for input parameters. +struct ReturnSlotPattern { + static constexpr auto Kind = + InstKind::ReturnSlotPattern.Define( + {.ir_name = "return_slot_pattern", .is_lowered = false}); + + // The type of the value that will be stored in this slot (i.e. the return + // type of the function). + TypeId type_id; + + // The function return type as originally written by the user. For diagnostics + // only; this has no semantic significance. + InstId type_inst_id; +}; + // An `expr == expr` clause in a `where` expression or `require` declaration. struct RequirementEquivalent { static constexpr auto Kind =