Separate inst kind for out params (#4442)

This commit is contained in:
Geoff Romer
2024-10-24 15:22:32 +00:00
committed by GitHub
parent 06f4eec91e
commit b67d03126e
345 changed files with 4128 additions and 4019 deletions
+1 -1
View File
@@ -364,7 +364,7 @@ auto DeductionContext::Deduce() -> bool {
continue;
}
case CARBON_KIND(SemIR::ParamPattern pattern): {
case CARBON_KIND(SemIR::ValueParamPattern pattern): {
Add(pattern.subpattern_id, arg_id, needs_substitution);
continue;
}
+6 -2
View File
@@ -1421,7 +1421,9 @@ static auto TryEvalInstInContext(EvalContext& eval_context,
case CARBON_KIND(SemIR::NameRef typed_inst): {
return eval_context.GetConstantValue(typed_inst.value_id);
}
case CARBON_KIND(SemIR::ParamPattern param_pattern): {
case CARBON_KIND(SemIR::ValueParamPattern param_pattern): {
// TODO: treat this as a non-expression (here and in GetExprCategory)
// once generic deduction doesn't need patterns to have constant values.
return eval_context.GetConstantValue(param_pattern.subpattern_id);
}
case CARBON_KIND(SemIR::Converted typed_inst): {
@@ -1489,7 +1491,8 @@ static auto TryEvalInstInContext(EvalContext& eval_context,
case SemIR::BranchIf::Kind:
case SemIR::BranchWithArg::Kind:
case SemIR::ImportDecl::Kind:
case SemIR::Param::Kind:
case SemIR::OutParam::Kind:
case SemIR::OutParamPattern::Kind:
case SemIR::RequirementEquivalent::Kind:
case SemIR::RequirementImpls::Kind:
case SemIR::RequirementRewrite::Kind:
@@ -1498,6 +1501,7 @@ static auto TryEvalInstInContext(EvalContext& eval_context,
case SemIR::ReturnSlotPattern::Kind:
case SemIR::StructLiteral::Kind:
case SemIR::TupleLiteral::Kind:
case SemIR::ValueParam::Kind:
case SemIR::VarStorage::Kind:
break;
+1 -1
View File
@@ -230,7 +230,7 @@ static auto HandleAnyBindingPattern(Context& context, Parse::NodeId node_id,
.entity_name_id = entity_name_id,
.bind_name_id = bind_id});
}
param_pattern_id = context.AddPatternInst<SemIR::ParamPattern>(
param_pattern_id = context.AddPatternInst<SemIR::ValueParamPattern>(
node_id,
{
.type_id = context.insts().Get(pattern_inst_id).type_id(),
+1 -3
View File
@@ -46,9 +46,7 @@ auto HandleParseNode(Context& context, Parse::ReturnTypeId node_id) -> bool {
auto type_id = ExprAsType(context, type_node_id, type_inst_id).type_id;
auto return_slot_id = context.AddPatternInst<SemIR::ReturnSlotPattern>(
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<SemIR::ParamPattern>(
auto param_pattern_id = context.AddPatternInst<SemIR::OutParamPattern>(
node_id, {.type_id = type_id,
.subpattern_id = return_slot_id,
.runtime_index = SemIR::RuntimeParamIndex::Unknown});
+5 -5
View File
@@ -707,7 +707,7 @@ class ImportRefResolver {
GetLocalConstantId(pattern_inst.type_id());
}
pattern_id = import_ir_.insts()
.GetAs<SemIR::ParamPattern>(pattern_id)
.GetAs<SemIR::ValueParamPattern>(pattern_id)
.subpattern_id;
pattern_inst = import_ir_.insts().Get(pattern_id);
// If the parameter is a symbolic binding, build the
@@ -751,7 +751,7 @@ class ImportRefResolver {
auto bind_inst = inst.As<SemIR::AnyBindName>();
param_id = bind_inst.value_id;
inst = import_ir_.insts().Get(param_id);
auto param_inst = inst.As<SemIR::Param>();
auto param_inst = inst.As<SemIR::ValueParam>();
// Rebuild the param instruction.
auto entity_name =
@@ -760,7 +760,7 @@ class ImportRefResolver {
auto type_id = context_.GetTypeIdForTypeConstant(
GetLocalConstantIdChecked(param_inst.type_id));
auto new_param_id = context_.AddInstInNoBlock<SemIR::Param>(
auto new_param_id = context_.AddInstInNoBlock<SemIR::ValueParam>(
AddImportIRInst(param_id),
{.type_id = type_id,
.runtime_index = param_inst.runtime_index,
@@ -826,7 +826,7 @@ class ImportRefResolver {
}
auto param_pattern =
import_ir_.insts().GetAs<SemIR::ParamPattern>(param_pattern_id);
import_ir_.insts().GetAs<SemIR::ValueParamPattern>(param_pattern_id);
auto binding_id = param_pattern.subpattern_id;
auto binding =
@@ -870,7 +870,7 @@ class ImportRefResolver {
}
}
new_param_id = context_.AddInstInNoBlock(
context_.MakeImportedLocAndInst<SemIR::ParamPattern>(
context_.MakeImportedLocAndInst<SemIR::ValueParamPattern>(
AddImportIRInst(param_pattern_id),
{.type_id = type_id,
.subpattern_id = new_param_id,
+2 -2
View File
@@ -244,9 +244,9 @@ static auto CheckRedeclParam(Context& context, bool is_implicit_param,
}
new_param_pattern = context.insts().Get(
new_param_pattern.As<SemIR::ParamPattern>().subpattern_id);
new_param_pattern.As<SemIR::ValueParamPattern>().subpattern_id);
prev_param_pattern = context.insts().Get(
prev_param_pattern.As<SemIR::ParamPattern>().subpattern_id);
prev_param_pattern.As<SemIR::ValueParamPattern>().subpattern_id);
if (new_param_pattern.kind() != prev_param_pattern.kind()) {
emit_diagnostic();
return false;
+40 -4
View File
@@ -19,7 +19,8 @@ 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)
template <typename ParamPattern>
auto GetPrettyName(Context& context, ParamPattern param_pattern)
-> SemIR::NameId {
if (context.insts().Is<SemIR::ReturnSlotPattern>(
param_pattern.subpattern_id)) {
@@ -220,7 +221,7 @@ auto EmitPatternMatch(Context& context, MatchContext& match,
{.pattern_id = addr_pattern.inner_id, .scrutinee_id = new_scrutinee});
break;
}
case CARBON_KIND(SemIR::ParamPattern param_pattern): {
case CARBON_KIND(SemIR::ValueParamPattern param_pattern): {
switch (match.kind()) {
case MatchKind::Caller: {
CARBON_CHECK(entry.scrutinee_id.is_valid());
@@ -243,12 +244,47 @@ auto EmitPatternMatch(Context& context, MatchContext& match,
}
match.AddWork(
{.pattern_id = param_pattern.subpattern_id,
.scrutinee_id = context.AddInst<SemIR::Param>(
.scrutinee_id = context.AddInst<SemIR::ValueParam>(
pattern.loc_id,
{.type_id = param_pattern.type_id,
.runtime_index = param_pattern.runtime_index,
.pretty_name_id = GetPrettyName(context, param_pattern)})});
} break;
break;
}
}
break;
}
case CARBON_KIND(SemIR::OutParamPattern param_pattern): {
switch (match.kind()) {
case MatchKind::Caller: {
CARBON_CHECK(entry.scrutinee_id.is_valid());
CARBON_CHECK(context.insts().Get(entry.scrutinee_id).type_id() ==
SemIR::GetTypeInSpecific(context.sem_ir(),
match.callee_specific_id(),
param_pattern.type_id));
match.Finish(entry.scrutinee_id);
// Do not traverse farther, because the caller side of the pattern
// ends here.
break;
}
case MatchKind::Callee: {
// TODO: consider ways to address near-duplication with the
// ValueParamPattern case.
if (param_pattern.runtime_index ==
SemIR::RuntimeParamIndex::Unknown) {
param_pattern.runtime_index = match.NextRuntimeIndex();
context.ReplaceInstBeforeConstantUse(entry.pattern_id,
param_pattern);
}
match.AddWork(
{.pattern_id = param_pattern.subpattern_id,
.scrutinee_id = context.AddInst<SemIR::OutParam>(
pattern.loc_id,
{.type_id = param_pattern.type_id,
.runtime_index = param_pattern.runtime_index,
.pretty_name_id = GetPrettyName(context, param_pattern)})});
break;
}
}
break;
}
@@ -43,11 +43,11 @@ fn F() -> {} {
// CHECK:STDOUT: %NS: <namespace> = namespace [template] {}
// 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: %return.param_patt: %.1 = out_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.param: %.1 = param runtime_param0
// CHECK:STDOUT: %return.param: ref %.1 = out_param runtime_param0
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -31,7 +31,7 @@ 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: %T.param: type = param runtime_param<invalid>
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T]
// CHECK:STDOUT: %A: <error> = bind_alias A, <error> [template = <error>]
// CHECK:STDOUT: }
@@ -51,11 +51,11 @@ fn F() -> NS.a {
// 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: %return.patt: %C = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %NS.ref: <namespace> = name_ref NS, file.%NS [template = file.%NS]
// CHECK:STDOUT: %a.ref: type = name_ref a, file.%a [template = constants.%C]
// CHECK:STDOUT: %return.param: %C = param runtime_param0
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param0
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -29,11 +29,11 @@ fn F() -> () {
// CHECK:STDOUT: }
// 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: %return.param_patt: %.1 = out_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.param: %.1 = param runtime_param0
// CHECK:STDOUT: %return.param: ref %.1 = out_param runtime_param0
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -59,7 +59,7 @@ fn G() {
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: %.3 = out_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]
@@ -72,7 +72,7 @@ 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.param: %.3 = param runtime_param0
// CHECK:STDOUT: %return.param: ref %.3 = out_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] {} {}
+2 -2
View File
@@ -57,14 +57,14 @@ fn Run() {
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: %.3 = out_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.param: %.3 = param runtime_param0
// CHECK:STDOUT: %return.param: ref %.3 = out_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] {} {}
+6 -6
View File
@@ -56,11 +56,11 @@ let b: [i32; 3]* = &a;
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [template = constants.%Add] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -71,11 +71,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+4 -4
View File
@@ -51,9 +51,9 @@ var a: [i32; Negate(1)];
// CHECK:STDOUT: %Core.import = import Core
// 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: %n.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -61,9 +61,9 @@ 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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+8 -8
View File
@@ -60,11 +60,11 @@ fn G() -> i32 {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %arr.patt: %.3 = binding_pattern arr
// CHECK:STDOUT: %arr.param_patt: %.3 = param_pattern %arr.patt, runtime_param0
// CHECK:STDOUT: %arr.param_patt: %.3 = value_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: %i.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -77,21 +77,21 @@ 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: %arr.param: %.3 = param runtime_param0
// CHECK:STDOUT: %arr.param: %.3 = value_param runtime_param0
// CHECK:STDOUT: %arr: %.3 = bind_name arr, %arr.param
// CHECK:STDOUT: %i.param: i32 = param runtime_param1
// CHECK:STDOUT: %i.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %i: i32 = bind_name i, %i.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %return.patt: i32 = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -48,9 +48,9 @@ fn G(T:! type) {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
// 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<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
// 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: }
+2 -2
View File
@@ -178,10 +178,10 @@ var b: B = {.x = 1} as B;
// CHECK:STDOUT: %.loc6_8: %.2 = field_decl y, element1 [template]
// 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: %return.param_patt: %A = out_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.param: %A = param runtime_param0
// CHECK:STDOUT: %return.param: ref %A = out_param runtime_param0
// CHECK:STDOUT: %return: ref %A = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc11: <witness> = complete_type_witness %.3 [template = constants.%.4]
+2 -2
View File
@@ -46,12 +46,12 @@ fn Main() -> i32 {
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+6 -6
View File
@@ -73,27 +73,27 @@ fn Initializing() {
// CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {}
// CHECK:STDOUT: %Value.decl: %Value.type = fn_decl @Value [template = constants.%Value] {
// CHECK:STDOUT: %n.patt: %X = binding_pattern n
// CHECK:STDOUT: %n.param_patt: %X = param_pattern %n.patt, runtime_param0
// CHECK:STDOUT: %n.param_patt: %X = value_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: %n.param: %X = param runtime_param0
// CHECK:STDOUT: %n.param: %X = value_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
// CHECK:STDOUT: %p.param_patt: %.5 = param_pattern %p.patt, runtime_param0
// CHECK:STDOUT: %p.param_patt: %.5 = value_param_pattern %p.patt, runtime_param0
// 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: %p.param: %.5 = param runtime_param0
// CHECK:STDOUT: %p.param: %.5 = value_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: %return.patt: %X = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %X = out_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.param: %X = param runtime_param0
// CHECK:STDOUT: %return.param: ref %X = out_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] {} {}
+2 -2
View File
@@ -54,10 +54,10 @@ fn Var() {
// 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: %return.patt: %X = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %X = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %X = out_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.param: %X = param runtime_param0
// CHECK:STDOUT: %return.param: ref %X = out_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] {} {}
+8 -8
View File
@@ -141,17 +141,17 @@ let n: i32 = ((4 as i32) as X) as i32;
// CHECK:STDOUT: impl @impl.1: %.loc15_6.2 as %As.type {
// 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: %self.param_patt: i32 = value_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: %return.param_patt: %X = out_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: %self.param: i32 = param runtime_param0
// CHECK:STDOUT: %self.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %self: i32 = bind_name self, %self.param
// CHECK:STDOUT: %return.param: %X = param runtime_param1
// CHECK:STDOUT: %return.param: ref %X = out_param runtime_param1
// CHECK:STDOUT: %return: ref %X = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc15_24: <witness> = interface_witness (%Convert.decl) [template = constants.%.9]
@@ -164,17 +164,17 @@ let n: i32 = ((4 as i32) as X) as i32;
// CHECK:STDOUT: impl @impl.2: %X.ref as %As.type {
// 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: %self.param_patt: %X = value_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: %return.param_patt: i32 = out_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: %self.param: %X = param runtime_param0
// CHECK:STDOUT: %self.param: %X = value_param runtime_param0
// CHECK:STDOUT: %self: %X = bind_name self, %self.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc19_24: <witness> = interface_witness (%Convert.decl) [template = constants.%.13]
+2 -2
View File
@@ -47,9 +47,9 @@ fn Run() -> String {}
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: String = out_param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %return.param: String = param runtime_param0
// CHECK:STDOUT: %return.param: ref String = out_param runtime_param0
// CHECK:STDOUT: %return: ref String = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -46,12 +46,12 @@ fn Run(n: i32) {}
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
// CHECK:STDOUT: %n.param_patt: i32 = value_param_pattern %n.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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -51,7 +51,7 @@ fn Foo(n: ()) -> ((), ()) {
// 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+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+6': {kind: ValueParamPattern, arg0: inst+5, arg1: runtime_param0, type: type(inst+1)}
// CHECK:STDOUT: 'inst+7': {kind: TupleLiteral, arg0: empty, type: type(inst+1)}
// CHECK:STDOUT: 'inst+8': {kind: TupleLiteral, arg0: empty, type: type(inst+1)}
// CHECK:STDOUT: 'inst+9': {kind: TupleType, arg0: type_block1, type: typeTypeType}
@@ -60,9 +60,9 @@ fn Foo(n: ()) -> ((), ()) {
// 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: 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+15': {kind: OutParamPattern, arg0: inst+14, arg1: runtime_param1, type: type(inst+9)}
// CHECK:STDOUT: 'inst+16': {kind: ValueParam, arg0: runtime_param0, arg1: name1, type: type(inst+1)}
// CHECK:STDOUT: 'inst+17': {kind: OutParam, 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<invalid>, type: typeTypeType}
@@ -180,9 +180,9 @@ fn Foo(n: ()) -> ((), ()) {
// CHECK:STDOUT: }
// 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: %n.param_patt: %.1 = value_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: %return.param_patt: %.2 = out_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]
@@ -192,9 +192,9 @@ 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: %n.param: %.1 = param runtime_param0
// CHECK:STDOUT: %n.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.2 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.2 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -44,47 +44,47 @@ fn C(r#if: ()) -> () {
// CHECK:STDOUT: }
// 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: %n.param_patt: %.1 = value_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: %return.param_patt: %.1 = out_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: %n.param: %.1 = param runtime_param0
// CHECK:STDOUT: %n.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.1 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.1 = out_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: %n.param_patt: %.1 = value_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: %return.param_patt: %.1 = out_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: %n.param: %.1 = param runtime_param0
// CHECK:STDOUT: %n.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.1 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.1 = out_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: %if.param_patt: %.1 = value_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: %return.param_patt: %.1 = out_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: %if.param: %.1 = param runtime_param0
// CHECK:STDOUT: %if.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %if: %.1 = bind_name r#if, %if.param
// CHECK:STDOUT: %return.param: %.1 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.1 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+6 -6
View File
@@ -62,11 +62,11 @@ fn Foo[T:! type](n: T) -> (T, ()) {
// CHECK:STDOUT: 'inst+2': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<invalid>, 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<invalid>, type: typeTypeType}
// CHECK:STDOUT: 'inst+5': {kind: ValueParamPattern, arg0: inst+3, arg1: runtime_param<invalid>, 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+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+9': {kind: ValueParamPattern, arg0: inst+8, arg1: runtime_param0, type: type(symbolicConstant3)}
// CHECK:STDOUT: 'inst+10': {kind: NameRef, arg0: name1, arg1: inst+1, type: typeTypeType}
// CHECK:STDOUT: 'inst+11': {kind: TupleType, arg0: type_block0, type: typeTypeType}
// CHECK:STDOUT: 'inst+12': {kind: TupleLiteral, arg0: empty, type: type(inst+11)}
@@ -76,10 +76,10 @@ fn Foo[T:! type](n: T) -> (T, ()) {
// 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: 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<invalid>, 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+19': {kind: OutParamPattern, arg0: inst+18, arg1: runtime_param1, type: type(symbolicConstant5)}
// CHECK:STDOUT: 'inst+20': {kind: ValueParam, arg0: runtime_param<invalid>, arg1: name1, type: typeTypeType}
// CHECK:STDOUT: 'inst+21': {kind: ValueParam, arg0: runtime_param0, arg1: name2, type: type(symbolicConstant3)}
// CHECK:STDOUT: 'inst+22': {kind: OutParam, arg0: runtime_param1, arg1: nameReturnSlot, type: type(symbolicConstant5)}
// CHECK:STDOUT: 'inst+23': {kind: ReturnSlot, arg0: inst+14, arg1: inst+22, type: type(symbolicConstant5)}
// CHECK:STDOUT: 'inst+24': {kind: FunctionDecl, arg0: function0, arg1: block10, type: type(inst+28)}
// CHECK:STDOUT: 'inst+25': {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<invalid>, type: typeTypeType}
@@ -34,9 +34,9 @@ fn Foo(n: ()) -> ((), ()) {
// CHECK:STDOUT: }
// 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: %n.param_patt: %.1 = value_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: %return.param_patt: %.2 = out_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]
@@ -46,9 +46,9 @@ 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: %n.param: %.1 = param runtime_param0
// CHECK:STDOUT: %n.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %n: %.1 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.2 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.2 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.2 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -44,12 +44,12 @@ fn Run() -> i32 { return 0; }
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -51,9 +51,9 @@ var i: BigInt();
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: type = out_param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %return.param: type = param runtime_param0
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param0
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -51,9 +51,9 @@ var b: Bool() = false;
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: type = out_param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %return.param: type = param runtime_param0
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param0
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+54 -54
View File
@@ -91,11 +91,11 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [template = constants.%Add] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -109,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -136,11 +136,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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]
@@ -232,9 +232,9 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -244,20 +244,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -275,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -303,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -330,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -351,20 +351,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -382,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -410,11 +410,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+54 -54
View File
@@ -99,11 +99,11 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -117,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -144,11 +144,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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]
@@ -262,9 +262,9 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -274,20 +274,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -305,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -333,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -360,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -381,20 +381,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -412,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -440,11 +440,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+22 -22
View File
@@ -88,11 +88,11 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Eq.decl: %Eq.type = fn_decl @Eq [template = constants.%Eq] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -105,35 +105,35 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -146,11 +146,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -263,11 +263,11 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %WrongResult.decl: %WrongResult.type = fn_decl @WrongResult [template = constants.%WrongResult] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -281,11 +281,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_param runtime_param2
// CHECK:STDOUT: %return: ref f64 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -88,11 +88,11 @@ fn RuntimeCall(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Greater.decl: %Greater.type = fn_decl @Greater [template = constants.%Greater] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -105,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -126,33 +126,33 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -165,11 +165,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -88,11 +88,11 @@ fn RuntimeCall(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %GreaterEq.decl: %GreaterEq.type = fn_decl @GreaterEq [template = constants.%GreaterEq] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -105,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -126,33 +126,33 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -165,11 +165,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -88,11 +88,11 @@ fn RuntimeCall(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Less.decl: %Less.type = fn_decl @Less [template = constants.%Less] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -105,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -126,33 +126,33 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -165,11 +165,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -88,11 +88,11 @@ fn RuntimeCall(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %LessEq.decl: %LessEq.type = fn_decl @LessEq [template = constants.%LessEq] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -105,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -126,33 +126,33 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -165,11 +165,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+8 -8
View File
@@ -77,16 +77,16 @@ var dyn: Float(dyn_size);
// CHECK:STDOUT: %Core.import = import Core
// 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: %size.param_patt: i32 = value_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: %return.param_patt: type = out_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: %size.param: i32 = param runtime_param0
// CHECK:STDOUT: %size.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %size: i32 = bind_name size, %size.param
// CHECK:STDOUT: %return.param: type = param runtime_param1
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param1
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -143,16 +143,16 @@ var dyn: Float(dyn_size);
// CHECK:STDOUT: %f: ref f64 = bind_name f, %f.var
// 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: %dyn_size.param_patt: i32 = value_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: %return.param_patt: type = out_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: %dyn_size.param: i32 = param runtime_param0
// CHECK:STDOUT: %dyn_size.param: i32 = value_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.param: ref type = out_param runtime_param1
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+54 -54
View File
@@ -91,11 +91,11 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mul.decl: %Mul.type = fn_decl @Mul [template = constants.%Mul] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -109,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -136,11 +136,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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]
@@ -232,9 +232,9 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -244,20 +244,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -275,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -303,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -330,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -351,20 +351,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -382,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -410,11 +410,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+44 -44
View File
@@ -111,9 +111,9 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -123,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -148,11 +148,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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]
@@ -242,22 +242,22 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: f64 = out_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.param: f64 = param runtime_param0
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -271,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -291,16 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: bool = param runtime_param1
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -310,16 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -329,20 +329,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -360,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -388,11 +388,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+22 -22
View File
@@ -88,11 +88,11 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Neq.decl: %Neq.type = fn_decl @Neq [template = constants.%Neq] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -105,35 +105,35 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -146,11 +146,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -263,11 +263,11 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %WrongResult.decl: %WrongResult.type = fn_decl @WrongResult [template = constants.%WrongResult] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -281,11 +281,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_param runtime_param2
// CHECK:STDOUT: %return: ref f64 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+54 -54
View File
@@ -91,11 +91,11 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Sub.decl: %Sub.type = fn_decl @Sub [template = constants.%Sub] {
// CHECK:STDOUT: %a.patt: f64 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -109,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -136,11 +136,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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]
@@ -232,9 +232,9 @@ fn RuntimeCallBadReturnType(a: f64, b: f64) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -244,20 +244,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -275,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -303,20 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -330,18 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param2
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -351,20 +351,20 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param1
// CHECK:STDOUT: %return.param: ref f64 = out_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
// CHECK:STDOUT: %a.param_patt: f64 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %c.param_patt: f64 = value_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: %return.param_patt: f64 = out_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]
@@ -382,22 +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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: f64 = param runtime_param2
// CHECK:STDOUT: %c.param: f64 = value_param runtime_param2
// CHECK:STDOUT: %c: f64 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: f64 = param runtime_param3
// CHECK:STDOUT: %return.param: ref f64 = out_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: %a.param_patt: f64 = value_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: %b.param_patt: f64 = value_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: %return.param_patt: bool = out_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]
@@ -410,11 +410,11 @@ 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: %a.param: f64 = param runtime_param0
// CHECK:STDOUT: %a.param: f64 = value_param runtime_param0
// CHECK:STDOUT: %a: f64 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: f64 = param runtime_param1
// CHECK:STDOUT: %b.param: f64 = value_param runtime_param1
// CHECK:STDOUT: %b: f64 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+12 -12
View File
@@ -62,11 +62,11 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -77,11 +77,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -102,11 +102,11 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -117,11 +117,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+14 -14
View File
@@ -67,9 +67,9 @@ fn RuntimeCall(a: i32) -> i32 {
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -77,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -99,11 +99,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -128,9 +128,9 @@ fn RuntimeCall(a: i32) -> i32 {
// CHECK:STDOUT: %.loc6_27: type = ptr_type %.6 [template = constants.%.7]
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -138,9 +138,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+22 -22
View File
@@ -87,11 +87,11 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Eq.decl: %Eq.type = fn_decl @Eq [template = constants.%Eq] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -102,35 +102,35 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -141,11 +141,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -257,11 +257,11 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %WrongResult.decl: %WrongResult.type = fn_decl @WrongResult [template = constants.%WrongResult] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -272,11 +272,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -87,11 +87,11 @@ fn RuntimeCall(a: i32, b: i32) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Greater.decl: %Greater.type = fn_decl @Greater [template = constants.%Greater] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -102,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -121,33 +121,33 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -158,11 +158,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -87,11 +87,11 @@ fn RuntimeCall(a: i32, b: i32) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %GreaterEq.decl: %GreaterEq.type = fn_decl @GreaterEq [template = constants.%GreaterEq] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -102,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -121,33 +121,33 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -158,11 +158,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+22 -22
View File
@@ -106,11 +106,11 @@ let negative: i32 = LeftShift(1, Negate(1));
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %LeftShift.decl: %LeftShift.type = fn_decl @LeftShift [template = constants.%LeftShift] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -121,11 +121,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -146,11 +146,11 @@ let negative: i32 = LeftShift(1, Negate(1));
// CHECK:STDOUT: %.loc5_21: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -161,11 +161,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -245,11 +245,11 @@ let negative: i32 = LeftShift(1, Negate(1));
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %LeftShift.decl: %LeftShift.type = fn_decl @LeftShift [template = constants.%LeftShift] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -260,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -279,9 +279,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+20 -20
View File
@@ -87,11 +87,11 @@ fn RuntimeCall(a: i32, b: i32) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Less.decl: %Less.type = fn_decl @Less [template = constants.%Less] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -102,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -121,33 +121,33 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -158,11 +158,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+20 -20
View File
@@ -87,11 +87,11 @@ fn RuntimeCall(a: i32, b: i32) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %LessEq.decl: %LessEq.type = fn_decl @LessEq [template = constants.%LessEq] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -102,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -121,33 +121,33 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -158,11 +158,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -51,9 +51,9 @@ var i: Int() = 0;
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: type = out_param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %return.param: type = param runtime_param0
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param0
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+22 -22
View File
@@ -102,16 +102,16 @@ var m: Int(1000000000);
// CHECK:STDOUT: %Core.import = import Core
// 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: %n.param_patt: i32 = value_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: %return.param_patt: type = out_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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: type = param runtime_param1
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param1
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -171,9 +171,9 @@ var m: Int(1000000000);
// CHECK:STDOUT: %default.import = import <invalid>
// 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: %n.param_patt: %.3 = value_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: %return.param_patt: %.3 = out_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]
@@ -185,16 +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: %n.param: %.3 = param runtime_param0
// CHECK:STDOUT: %n.param: %.3 = value_param runtime_param0
// CHECK:STDOUT: %n: %.3 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.3 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.3 = out_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: %n.param_patt: %.5 = value_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: %return.param_patt: %.5 = out_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]
@@ -206,18 +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: %n.param: %.5 = param runtime_param0
// CHECK:STDOUT: %n.param: %.5 = value_param runtime_param0
// CHECK:STDOUT: %n: %.5 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.5 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.5 = out_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<invalid> [symbolic = %N.patt.loc14_13.2 (constants.%N.patt)]
// CHECK:STDOUT: %N.param_patt: i32 = value_param_pattern %N.patt.loc14_13.1, runtime_param<invalid> [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: %x.param_patt: @Symbolic.%.loc14_28 (%.6) = value_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: %return.param_patt: @Symbolic.%.loc14_28 (%.6) = out_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]
@@ -232,11 +232,11 @@ 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: %N.param: i32 = param runtime_param<invalid>
// CHECK:STDOUT: %N.param: i32 = value_param runtime_param<invalid>
// 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.param: @Symbolic.%.loc14_28 (%.6) = value_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.param: ref @Symbolic.%.loc14_28 (%.6) = out_param runtime_param1
// CHECK:STDOUT: %return: ref @Symbolic.%.loc14_28 (%.6) = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -360,9 +360,9 @@ var m: Int(1000000000);
// CHECK:STDOUT: %default.import = import <invalid>
// 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: %n.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -370,9 +370,9 @@ 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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -102,16 +102,16 @@ var m: UInt(1000000000);
// CHECK:STDOUT: %Core.import = import Core
// 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: %n.param_patt: i32 = value_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: %return.param_patt: type = out_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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: type = param runtime_param1
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param1
// CHECK:STDOUT: %return: ref type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -171,9 +171,9 @@ var m: UInt(1000000000);
// CHECK:STDOUT: %default.import = import <invalid>
// 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: %n.param_patt: %.3 = value_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: %return.param_patt: %.3 = out_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]
@@ -185,16 +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: %n.param: %.3 = param runtime_param0
// CHECK:STDOUT: %n.param: %.3 = value_param runtime_param0
// CHECK:STDOUT: %n: %.3 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.3 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.3 = out_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: %n.param_patt: %.5 = value_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: %return.param_patt: %.5 = out_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]
@@ -206,18 +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: %n.param: %.5 = param runtime_param0
// CHECK:STDOUT: %n.param: %.5 = value_param runtime_param0
// CHECK:STDOUT: %n: %.5 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: %.5 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.5 = out_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<invalid> [symbolic = %N.patt.loc14_13.2 (constants.%N.patt)]
// CHECK:STDOUT: %N.param_patt: i32 = value_param_pattern %N.patt.loc14_13.1, runtime_param<invalid> [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: %x.param_patt: @Symbolic.%.loc14_29 (%.6) = value_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: %return.param_patt: @Symbolic.%.loc14_29 (%.6) = out_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]
@@ -232,11 +232,11 @@ 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: %N.param: i32 = param runtime_param<invalid>
// CHECK:STDOUT: %N.param: i32 = value_param runtime_param<invalid>
// 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.param: @Symbolic.%.loc14_29 (%.6) = value_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.param: ref @Symbolic.%.loc14_29 (%.6) = out_param runtime_param1
// CHECK:STDOUT: %return: ref @Symbolic.%.loc14_29 (%.6) = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -360,9 +360,9 @@ var m: UInt(1000000000);
// CHECK:STDOUT: %default.import = import <invalid>
// 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: %n.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -370,9 +370,9 @@ 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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+16 -16
View File
@@ -78,11 +78,11 @@ fn RuntimeCall(a: i32, b: i32) -> bool {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Neq.decl: %Neq.type = fn_decl @Neq [template = constants.%Neq] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -93,35 +93,35 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %true_.patt: %True = binding_pattern true_
// CHECK:STDOUT: %true_.param_patt: %True = param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %true_.param_patt: %True = value_param_pattern %true_.patt, runtime_param0
// CHECK:STDOUT: %false_.patt: %False = binding_pattern false_
// CHECK:STDOUT: %false_.param_patt: %False = param_pattern %false_.patt, runtime_param1
// CHECK:STDOUT: %false_.param_patt: %False = value_param_pattern %false_.patt, runtime_param1
// 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: %true_.param: %True = param runtime_param0
// CHECK:STDOUT: %true_.param: %True = value_param runtime_param0
// CHECK:STDOUT: %true_: %True = bind_name true_, %true_.param
// CHECK:STDOUT: %false_.param: %False = param runtime_param1
// CHECK:STDOUT: %false_.param: %False = value_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -132,11 +132,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+12 -12
View File
@@ -62,11 +62,11 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Or.decl: %Or.type = fn_decl @Or [template = constants.%Or] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -77,11 +77,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -102,11 +102,11 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
// CHECK:STDOUT: %.loc5_21: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -117,11 +117,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+32 -32
View File
@@ -107,11 +107,11 @@ let negative: i32 = RightShift(1, Negate(1));
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %RightShift.decl: %RightShift.type = fn_decl @RightShift [template = constants.%RightShift] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -122,11 +122,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -147,11 +147,11 @@ let negative: i32 = RightShift(1, Negate(1));
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -162,11 +162,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -245,11 +245,11 @@ let negative: i32 = RightShift(1, Negate(1));
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %RightShift.decl: %RightShift.type = fn_decl @RightShift [template = constants.%RightShift] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -260,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -279,9 +279,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -397,11 +397,11 @@ let negative: i32 = RightShift(1, Negate(1));
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %RightShift.decl: %RightShift.type = fn_decl @RightShift [template = constants.%RightShift] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -412,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -431,9 +431,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+60 -60
View File
@@ -132,11 +132,11 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [template = constants.%Add] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -147,11 +147,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -172,11 +172,11 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -187,11 +187,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -281,9 +281,9 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -291,20 +291,20 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %c.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -318,22 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: i32 = param runtime_param2
// CHECK:STDOUT: %c.param: i32 = value_param runtime_param2
// CHECK:STDOUT: %c: i32 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param3
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -344,20 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -368,11 +368,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -408,9 +408,9 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %bad_call: ref <error> = bind_name bad_call, %bad_call.var
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -418,20 +418,20 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %c.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -445,22 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: i32 = param runtime_param2
// CHECK:STDOUT: %c.param: i32 = value_param runtime_param2
// CHECK:STDOUT: %c: i32 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param3
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -471,11 +471,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -564,11 +564,11 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [template = constants.%Add] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -579,11 +579,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+34 -34
View File
@@ -100,11 +100,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -115,11 +115,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -140,11 +140,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -155,11 +155,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -234,11 +234,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -249,20 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -273,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -292,9 +292,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -409,11 +409,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -424,11 +424,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+34 -34
View File
@@ -103,11 +103,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mod.decl: %Mod.type = fn_decl @Mod [template = constants.%Mod] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -118,11 +118,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -143,11 +143,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -158,11 +158,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -238,11 +238,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mod.decl: %Mod.type = fn_decl @Mod [template = constants.%Mod] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -253,20 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -277,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -296,9 +296,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -413,11 +413,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mod.decl: %Mod.type = fn_decl @Mod [template = constants.%Mod] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -428,11 +428,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+18 -18
View File
@@ -74,11 +74,11 @@ let b: i32 = Mul(0x8000, 0x10000);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mul.decl: %Mul.type = fn_decl @Mul [template = constants.%Mul] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -89,11 +89,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -114,11 +114,11 @@ let b: i32 = Mul(0x8000, 0x10000);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -129,11 +129,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -201,11 +201,11 @@ let b: i32 = Mul(0x8000, 0x10000);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mul.decl: %Mul.type = fn_decl @Mul [template = constants.%Mul] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -216,11 +216,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+54 -54
View File
@@ -161,9 +161,9 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -171,9 +171,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -200,11 +200,11 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %.loc7_8.2: type = converted %int.make_type_32.loc7, %.loc7_8.1 [template = 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -215,11 +215,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -313,21 +313,21 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -338,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -357,16 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: bool = param runtime_param1
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -374,9 +374,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -408,9 +408,9 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %bad_call: ref <error> = bind_name bad_call, %bad_call.var
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -418,20 +418,20 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %c.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -445,22 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: i32 = param runtime_param2
// CHECK:STDOUT: %c.param: i32 = value_param runtime_param2
// CHECK:STDOUT: %c: i32 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param3
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -471,11 +471,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -558,9 +558,9 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -568,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -590,11 +590,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+18 -18
View File
@@ -75,11 +75,11 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2);
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -90,11 +90,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -115,11 +115,11 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -130,11 +130,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -204,11 +204,11 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2);
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -219,11 +219,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+60 -60
View File
@@ -129,11 +129,11 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [template = constants.%Add] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -144,11 +144,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -169,11 +169,11 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -184,11 +184,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -278,9 +278,9 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -288,20 +288,20 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %c.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -315,22 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: i32 = param runtime_param2
// CHECK:STDOUT: %c.param: i32 = value_param runtime_param2
// CHECK:STDOUT: %c: i32 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param3
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -341,20 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -365,11 +365,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -405,9 +405,9 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %bad_call: ref <error> = bind_name bad_call, %bad_call.var
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -415,20 +415,20 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %c.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -442,22 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: i32 = param runtime_param2
// CHECK:STDOUT: %c.param: i32 = value_param runtime_param2
// CHECK:STDOUT: %c: i32 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param3
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -468,11 +468,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -561,11 +561,11 @@ let b: i32 = Add(0x7FFFFFFF, 1);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [template = constants.%Add] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -576,11 +576,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+34 -34
View File
@@ -96,11 +96,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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 +111,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -136,11 +136,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -151,11 +151,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -231,11 +231,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -246,20 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -270,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -289,9 +289,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -406,11 +406,11 @@ let b: i32 = Div(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Div.decl: %Div.type = fn_decl @Div [template = constants.%Div] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -421,11 +421,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+34 -34
View File
@@ -98,11 +98,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mod.decl: %Mod.type = fn_decl @Mod [template = constants.%Mod] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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 +113,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -138,11 +138,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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 +153,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -233,11 +233,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mod.decl: %Mod.type = fn_decl @Mod [template = constants.%Mod] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -248,20 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -272,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -291,9 +291,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -408,11 +408,11 @@ let b: i32 = Mod(0, 0);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mod.decl: %Mod.type = fn_decl @Mod [template = constants.%Mod] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -423,11 +423,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+18 -18
View File
@@ -71,11 +71,11 @@ let b: i32 = Mul(0x8000, 0x10000);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mul.decl: %Mul.type = fn_decl @Mul [template = constants.%Mul] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -86,11 +86,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -111,11 +111,11 @@ let b: i32 = Mul(0x8000, 0x10000);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -126,11 +126,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -198,11 +198,11 @@ let b: i32 = Mul(0x8000, 0x10000);
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Mul.decl: %Mul.type = fn_decl @Mul [template = constants.%Mul] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -213,11 +213,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+54 -54
View File
@@ -157,9 +157,9 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -167,9 +167,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -196,11 +196,11 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %.loc7_8.2: type = converted %int.make_type_32.loc7, %.loc7_8.1 [template = 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -211,11 +211,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -309,21 +309,21 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %Core.import = import Core
// 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: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -334,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -353,16 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: bool = param runtime_param1
// CHECK:STDOUT: %return.param: ref bool = out_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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -370,9 +370,9 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -404,9 +404,9 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %bad_call: ref <error> = bind_name bad_call, %bad_call.var
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -414,20 +414,20 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %c.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -441,22 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: i32 = param runtime_param2
// CHECK:STDOUT: %c.param: i32 = value_param runtime_param2
// CHECK:STDOUT: %c: i32 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param3
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: bool = out_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]
@@ -467,11 +467,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: bool = param runtime_param2
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -554,9 +554,9 @@ let b: i32 = Negate(Sub(Negate(0x7FFFFFFF), 1));
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -564,18 +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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -586,11 +586,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+18 -18
View File
@@ -72,11 +72,11 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2);
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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 +87,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -112,11 +112,11 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2);
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -127,11 +127,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -201,11 +201,11 @@ let c: i32 = Sub(Sub(0, 0x7FFFFFFF), 2);
// CHECK:STDOUT: %Core.import = import Core
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -216,11 +216,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+12 -12
View File
@@ -62,11 +62,11 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Xor.decl: %Xor.type = fn_decl @Xor [template = constants.%Xor] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -77,11 +77,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_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]
@@ -102,11 +102,11 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
// CHECK:STDOUT: %.loc5_20: type = ptr_type %.5 [template = constants.%.6]
// 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: %a.param_patt: i32 = value_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: %b.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -117,11 +117,11 @@ 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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
// CHECK:STDOUT: %b.param: i32 = value_param runtime_param1
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+2 -2
View File
@@ -58,12 +58,12 @@ fn Main() {
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Print.decl: %Print.type.1 = fn_decl @Print.1 [template = constants.%Print.1] {
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: i32 = value_param_pattern %a.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: %a.param: i32 = param runtime_param0
// CHECK:STDOUT: %a.param: i32 = value_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] {} {}
+14 -14
View File
@@ -205,20 +205,20 @@ class A {
// 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: %return.patt: i32 = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_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: %return.patt: %Circle = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Circle = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Circle = out_param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [template = constants.%Circle]
// CHECK:STDOUT: %return.param: %Circle = param runtime_param0
// CHECK:STDOUT: %return.param: ref %Circle = out_param runtime_param0
// CHECK:STDOUT: %return: ref %Circle = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc15: <witness> = complete_type_witness %.4 [template = constants.%.5]
@@ -394,42 +394,42 @@ class A {
// CHECK:STDOUT: %.loc5_21: %.2 = field_decl radius, element0 [template]
// 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: %self.param_patt: %Circle = value_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: %return.param_patt: i32 = out_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: %self.param: %Circle = param runtime_param0
// CHECK:STDOUT: %self.param: %Circle = value_param runtime_param0
// CHECK:STDOUT: %self: %Circle = bind_name self, %self.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %return.patt: i32 = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_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: %self.param_patt: %Circle = value_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: %return.param_patt: i32 = out_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: %self.param: %Circle = param runtime_param0
// CHECK:STDOUT: %self.param: %Circle = value_param runtime_param0
// CHECK:STDOUT: %self: %Circle = bind_name self, %self.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc18: <witness> = complete_type_witness %.3 [template = constants.%.4]
+2 -2
View File
@@ -173,10 +173,10 @@ fn F(a: AdaptNotExtend) {
// CHECK:STDOUT: %AdaptNotExtend.decl: type = class_decl @AdaptNotExtend [template = constants.%AdaptNotExtend] {} {}
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
// CHECK:STDOUT: %a.patt: %AdaptNotExtend = binding_pattern a
// CHECK:STDOUT: %a.param_patt: %AdaptNotExtend = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: %AdaptNotExtend = value_param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %AdaptNotExtend.ref: type = name_ref AdaptNotExtend, file.%AdaptNotExtend.decl [template = constants.%AdaptNotExtend]
// CHECK:STDOUT: %a.param: %AdaptNotExtend = param runtime_param0
// CHECK:STDOUT: %a.param: %AdaptNotExtend = value_param runtime_param0
// CHECK:STDOUT: %a: %AdaptNotExtend = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+6 -6
View File
@@ -87,17 +87,17 @@ fn Access(d: Derived) -> (i32, i32) {
// 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: %return.patt: %Derived = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Derived = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Derived = out_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.param: %Derived = param runtime_param0
// CHECK:STDOUT: %return.param: ref %Derived = out_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: %d.param_patt: %Derived = value_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: %return.param_patt: %.17 = out_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]
@@ -108,9 +108,9 @@ 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: %d.param: %Derived = param runtime_param0
// CHECK:STDOUT: %d.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param
// CHECK:STDOUT: %return.param: %.17 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.17 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.17 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+4 -4
View File
@@ -77,9 +77,9 @@ fn Access(p: Derived*) -> i32* {
// CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {}
// 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: %p.param_patt: %.10 = value_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: %return.param_patt: %.11 = out_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]
@@ -87,9 +87,9 @@ 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: %p.param: %.10 = param runtime_param0
// CHECK:STDOUT: %p.param: %.10 = value_param runtime_param0
// CHECK:STDOUT: %p: %.10 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.11 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.11 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.11 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+6 -6
View File
@@ -78,22 +78,22 @@ fn Call(p: Derived*) {
// CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %self.patt: %.3 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.3 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.3 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc17_11: auto = addr_pattern %self.param_patt
// 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: %self.param.loc17: %.3 = param runtime_param0
// CHECK:STDOUT: %self.param.loc17: %.3 = value_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] {
// CHECK:STDOUT: %p.patt: %.11 = binding_pattern p
// CHECK:STDOUT: %p.param_patt: %.11 = param_pattern %p.patt, runtime_param0
// CHECK:STDOUT: %p.param_patt: %.11 = value_param_pattern %p.patt, runtime_param0
// 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: %p.param: %.11 = param runtime_param0
// CHECK:STDOUT: %p.param: %.11 = value_param runtime_param0
// CHECK:STDOUT: %p: %.11 = bind_name p, %p.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -105,12 +105,12 @@ fn Call(p: Derived*) {
// CHECK:STDOUT: %.loc12_8: %.2 = field_decl a, element0 [template]
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %self.patt: %.3 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.3 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.3 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc17_11: auto = addr_pattern %self.param_patt
// 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: %self.param.loc14: %.3 = param runtime_param0
// CHECK:STDOUT: %self.param.loc14: %.3 = value_param runtime_param0
// CHECK:STDOUT: %self.loc14: %.3 = bind_name self, %self.param.loc14
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc15: <witness> = complete_type_witness %.4 [template = constants.%.5]
+28 -28
View File
@@ -104,64 +104,64 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 {
// CHECK:STDOUT: %Derived.decl.loc18: type = class_decl @Derived [template = constants.%Derived] {} {}
// 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: %a.param_patt: %Derived = value_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: %return.param_patt: i32 = out_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: %a.param: %Derived = param runtime_param0
// CHECK:STDOUT: %a.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %a: %Derived = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %p.param_patt: %.10 = value_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: %return.param_patt: i32 = out_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: %p.param: %.10 = param runtime_param0
// CHECK:STDOUT: %p.param: %.10 = value_param runtime_param0
// CHECK:STDOUT: %p: %.10 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %a.param_patt: %Derived = value_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: %return.param_patt: i32 = out_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: %a.param: %Derived = param runtime_param0
// CHECK:STDOUT: %a.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %a: %Derived = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %p.param_patt: %.10 = value_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: %return.param_patt: i32 = out_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: %p.param: %.10 = param runtime_param0
// CHECK:STDOUT: %p.param: %.10 = value_param runtime_param0
// CHECK:STDOUT: %p: %.10 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -171,18 +171,18 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 {
// CHECK:STDOUT: %.loc19: %.5 = base_decl %Base, element0 [template]
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
// CHECK:STDOUT: %self.patt: %Derived = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %Derived = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %Derived = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [template = constants.%Derived]
// CHECK:STDOUT: %self.param: %Derived = param runtime_param0
// CHECK:STDOUT: %self.param: %Derived = value_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: %self.param_patt: %Derived = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [template = constants.%Derived]
// CHECK:STDOUT: %self.param: %Derived = param runtime_param0
// CHECK:STDOUT: %self.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %self: %Derived = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc23: <witness> = complete_type_witness %.6 [template = constants.%.7]
@@ -198,32 +198,32 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 {
// CHECK:STDOUT: class @Base {
// 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: %self.param_patt: %Base = value_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: %return.param_patt: i32 = out_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: %self.param: %Base = param runtime_param0
// CHECK:STDOUT: %self.param: %Base = value_param runtime_param0
// CHECK:STDOUT: %self: %Base = bind_name self, %self.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %self.param_patt: %Derived = value_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: %return.param_patt: i32 = out_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: %self.param: %Derived = param runtime_param0
// CHECK:STDOUT: %self.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %self: %Derived = bind_name self, %self.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc16: <witness> = complete_type_witness %.2 [template = constants.%.3]
+14 -14
View File
@@ -98,13 +98,13 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {}
// CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] {
// CHECK:STDOUT: %a.patt: %.1 = binding_pattern a
// CHECK:STDOUT: %a.param_patt: %.1 = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: %.1 = value_param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %b.patt: %.7 = binding_pattern b
// CHECK:STDOUT: %b.param_patt: %.7 = param_pattern %b.patt, runtime_param1
// CHECK:STDOUT: %b.param_patt: %.7 = value_param_pattern %b.patt, runtime_param1
// CHECK:STDOUT: %c.patt: %.13 = binding_pattern c
// CHECK:STDOUT: %c.param_patt: %.13 = param_pattern %c.patt, runtime_param2
// CHECK:STDOUT: %c.param_patt: %.13 = value_param_pattern %c.patt, runtime_param2
// CHECK:STDOUT: %d.patt: %.17 = binding_pattern d
// CHECK:STDOUT: %d.param_patt: %.17 = param_pattern %d.patt, runtime_param3
// CHECK:STDOUT: %d.param_patt: %.17 = value_param_pattern %d.patt, runtime_param3
// CHECK:STDOUT: } {
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
// CHECK:STDOUT: %.loc29_13: type = ptr_type %A [template = constants.%.1]
@@ -114,13 +114,13 @@ 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: %a.param: %.1 = param runtime_param0
// CHECK:STDOUT: %a.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %a: %.1 = bind_name a, %a.param
// CHECK:STDOUT: %b.param: %.7 = param runtime_param1
// CHECK:STDOUT: %b.param: %.7 = value_param runtime_param1
// CHECK:STDOUT: %b: %.7 = bind_name b, %b.param
// CHECK:STDOUT: %c.param: %.13 = param runtime_param2
// CHECK:STDOUT: %c.param: %.13 = value_param runtime_param2
// CHECK:STDOUT: %c: %.13 = bind_name c, %c.param
// CHECK:STDOUT: %d.param: %.17 = param runtime_param3
// CHECK:STDOUT: %d.param: %.17 = value_param runtime_param3
// CHECK:STDOUT: %d: %.17 = bind_name d, %d.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -128,12 +128,12 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
// CHECK:STDOUT: class @A {
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
// CHECK:STDOUT: %self.patt: %.1 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.1 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.1 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt
// 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: %self.param: %.1 = param runtime_param0
// CHECK:STDOUT: %self.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.3 [template = constants.%.4]
@@ -148,12 +148,12 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
// CHECK:STDOUT: %.loc16: %.6 = base_decl %A, element0 [template]
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
// CHECK:STDOUT: %self.patt: %.7 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.7 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.7 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc17_8: auto = addr_pattern %self.param_patt
// 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: %self.param: %.7 = param runtime_param0
// CHECK:STDOUT: %self.param: %.7 = value_param runtime_param0
// CHECK:STDOUT: %self: %.7 = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc18: <witness> = complete_type_witness %.8 [template = constants.%.9]
@@ -170,12 +170,12 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
// CHECK:STDOUT: %.loc21: %.12 = base_decl %B, element0 [template]
// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] {
// CHECK:STDOUT: %self.patt: %.13 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.13 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.13 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc22_8: auto = addr_pattern %self.param_patt
// 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: %self.param: %.13 = param runtime_param0
// CHECK:STDOUT: %self.param: %.13 = value_param runtime_param0
// CHECK:STDOUT: %self: %.13 = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc23: <witness> = complete_type_witness %.14 [template = constants.%.15]
+14 -14
View File
@@ -71,9 +71,9 @@ fn Run() -> i32 {
// 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: %n.patt: i32 = binding_pattern n
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
// CHECK:STDOUT: %n.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -81,19 +81,19 @@ 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: %n.param.loc21: i32 = param runtime_param0
// CHECK:STDOUT: %n.param.loc21: i32 = value_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.param.loc21: ref i32 = out_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: %return.patt: i32 = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -101,9 +101,9 @@ fn Run() -> i32 {
// CHECK:STDOUT: class @Class {
// 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: %n.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -111,16 +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: %n.param: i32 = param runtime_param0
// CHECK:STDOUT: %n.param: i32 = value_param runtime_param0
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %n.param_patt: i32 = value_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: %return.param_patt: i32 = out_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]
@@ -128,9 +128,9 @@ 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: %n.param.loc16: i32 = param runtime_param0
// CHECK:STDOUT: %n.param.loc16: i32 = value_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: %return.param.loc16: ref i32 = out_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]
@@ -56,17 +56,17 @@ class C {
// CHECK:STDOUT: 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: %c.param_patt: %C = value_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: %return.param_patt: i32 = out_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: %c.param: %C = param runtime_param0
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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]
+16 -16
View File
@@ -98,39 +98,39 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
// CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {}
// 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: %d.param_patt: %Derived = value_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: %return.param_patt: i32 = out_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: %d.param: %Derived = param runtime_param0
// CHECK:STDOUT: %d.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %d.param_patt: %Derived = value_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: %return.param_patt: i32 = out_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: %d.param: %Derived = param runtime_param0
// CHECK:STDOUT: %d.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %p.param_patt: %.13 = value_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: %return.param_patt: %.14 = out_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]
@@ -138,16 +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: %p.param: %.13 = param runtime_param0
// CHECK:STDOUT: %p.param: %.13 = value_param runtime_param0
// CHECK:STDOUT: %p: %.13 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.14 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.14 = out_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: %p.param_patt: %.13 = value_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: %return.param_patt: %.14 = out_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]
@@ -155,9 +155,9 @@ 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: %p.param: %.13 = param runtime_param0
// CHECK:STDOUT: %p.param: %.13 = value_param runtime_param0
// CHECK:STDOUT: %p: %.13 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.14 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.14 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.14 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+18 -18
View File
@@ -124,70 +124,70 @@ fn ConvertInit() {
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
// 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: %p.param_patt: %.17 = value_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: %return.param_patt: %.18 = out_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: %p.param: %.17 = param runtime_param0
// CHECK:STDOUT: %p.param: %.17 = value_param runtime_param0
// CHECK:STDOUT: %p: %.17 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.18 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.18 = out_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: %p.param_patt: %.18 = value_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: %return.param_patt: %.22 = out_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: %p.param: %.18 = param runtime_param0
// CHECK:STDOUT: %p.param: %.18 = value_param runtime_param0
// CHECK:STDOUT: %p: %.18 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.22 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.22 = out_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: %p.param_patt: %.17 = value_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: %return.param_patt: %.22 = out_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: %p.param: %.17 = param runtime_param0
// CHECK:STDOUT: %p.param: %.17 = value_param runtime_param0
// CHECK:STDOUT: %p: %.17 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.22 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.22 = out_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: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
// CHECK:STDOUT: %c.param: %C = param runtime_param0
// CHECK:STDOUT: %c.param: %C = value_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: %c.param_patt: %.17 = value_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: %return.param_patt: %.22 = out_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: %c.param: %.17 = param runtime_param0
// CHECK:STDOUT: %c.param: %.17 = value_param runtime_param0
// CHECK:STDOUT: %c: %.17 = bind_name c, %c.param
// CHECK:STDOUT: %return.param: %.22 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.22 = out_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] {} {}
+14 -14
View File
@@ -148,18 +148,18 @@ class StructAdapter {
// CHECK:STDOUT: %SomeClassAdapter.decl.loc15: type = class_decl @SomeClassAdapter [template = constants.%SomeClassAdapter] {} {}
// CHECK:STDOUT: %TestStaticMemberFunction.decl: %TestStaticMemberFunction.type = fn_decl @TestStaticMemberFunction [template = constants.%TestStaticMemberFunction] {
// CHECK:STDOUT: %a.patt: %SomeClassAdapter = binding_pattern a
// CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = value_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: %a.param: %SomeClassAdapter = param runtime_param0
// CHECK:STDOUT: %a.param: %SomeClassAdapter = value_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: %a.param_patt: %SomeClassAdapter = value_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: %a.param: %SomeClassAdapter = param runtime_param0
// CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param runtime_param0
// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -186,10 +186,10 @@ class StructAdapter {
// CHECK:STDOUT: %StaticMemberFunction.decl: %StaticMemberFunction.type = fn_decl @StaticMemberFunction [template = constants.%StaticMemberFunction] {} {}
// CHECK:STDOUT: %AdapterMethod.decl: %AdapterMethod.type = fn_decl @AdapterMethod [template = constants.%AdapterMethod] {
// CHECK:STDOUT: %self.patt: %SomeClassAdapter = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %SomeClassAdapter = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %SomeClassAdapter = value_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: %self.param: %SomeClassAdapter = param runtime_param0
// CHECK:STDOUT: %self.param: %SomeClassAdapter = value_param runtime_param0
// CHECK:STDOUT: %self: %SomeClassAdapter = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.3 [template = constants.%.4]
@@ -290,10 +290,10 @@ class StructAdapter {
// CHECK:STDOUT: %SomeClassAdapter.decl: type = class_decl @SomeClassAdapter [template = constants.%SomeClassAdapter] {} {}
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
// CHECK:STDOUT: %a.patt: %SomeClassAdapter = binding_pattern a
// CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = value_param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl [template = constants.%SomeClassAdapter]
// CHECK:STDOUT: %a.param: %SomeClassAdapter = param runtime_param0
// CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param runtime_param0
// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -321,10 +321,10 @@ class StructAdapter {
// CHECK:STDOUT: class @SomeClass {
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
// CHECK:STDOUT: %self.patt: %SomeClass = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %SomeClass = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %SomeClass = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SomeClass [template = constants.%SomeClass]
// CHECK:STDOUT: %self.param: %SomeClass = param runtime_param0
// CHECK:STDOUT: %self.param: %SomeClass = value_param runtime_param0
// CHECK:STDOUT: %self: %SomeClass = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc6: <witness> = complete_type_witness %.2 [template = constants.%.3]
@@ -469,17 +469,17 @@ class StructAdapter {
// CHECK:STDOUT: %SomeClassAdapter.decl: type = class_decl @SomeClassAdapter [template = constants.%SomeClassAdapter] {} {}
// 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: %a.param_patt: %SomeClassAdapter = value_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: %return.param_patt: i32 = out_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: %a.param: %SomeClassAdapter = param runtime_param0
// CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param runtime_param0
// CHECK:STDOUT: %a: %SomeClassAdapter = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+18 -18
View File
@@ -326,10 +326,10 @@ fn CallReturnAbstract() {
// CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [template = constants.%Abstract] {} {}
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %a.patt: %Abstract = binding_pattern a
// CHECK:STDOUT: %a.param_patt: %Abstract = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: %Abstract = value_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: %a.param: %Abstract = param runtime_param0
// CHECK:STDOUT: %a.param: %Abstract = value_param runtime_param0
// CHECK:STDOUT: %a: %Abstract = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -438,18 +438,18 @@ fn CallReturnAbstract() {
// CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [template = constants.%Abstract] {} {}
// CHECK:STDOUT: %Param.decl: %Param.type = fn_decl @Param [template = constants.%Param] {
// CHECK:STDOUT: %a.patt: %Abstract = binding_pattern a
// CHECK:STDOUT: %a.param_patt: %Abstract = param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: %a.param_patt: %Abstract = value_param_pattern %a.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract]
// CHECK:STDOUT: %a.param: %Abstract = param runtime_param0
// CHECK:STDOUT: %a.param: %Abstract = value_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: %p.param_patt: %Abstract = value_param_pattern %p.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract]
// CHECK:STDOUT: %p.param: %Abstract = param runtime_param0
// CHECK:STDOUT: %p.param: %Abstract = value_param runtime_param0
// CHECK:STDOUT: %p: %Abstract = bind_name p, %p.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -524,10 +524,10 @@ fn CallReturnAbstract() {
// 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: %return.patt: %Derived = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Derived = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Derived = out_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.param: %Derived = param runtime_param0
// CHECK:STDOUT: %return.param: ref %Derived = out_param runtime_param0
// CHECK:STDOUT: %return: ref %Derived = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -612,15 +612,15 @@ fn CallReturnAbstract() {
// CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {}
// 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: %a.param_patt: %Abstract = value_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: %return.param_patt: %Abstract = out_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: %a.param: %Abstract = param runtime_param0
// CHECK:STDOUT: %a.param: %Abstract = value_param runtime_param0
// CHECK:STDOUT: %a: %Abstract = bind_name a, %a.param
// CHECK:STDOUT: %return.param: %Abstract = param runtime_param1
// CHECK:STDOUT: %return.param: ref %Abstract = out_param runtime_param1
// CHECK:STDOUT: %return: ref %Abstract = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -706,17 +706,17 @@ fn CallReturnAbstract() {
// CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {}
// 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: %d.param_patt: %Derived = value_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: %return.param_patt: i32 = out_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: %d.param: %Derived = param runtime_param0
// CHECK:STDOUT: %d.param: %Derived = value_param runtime_param0
// CHECK:STDOUT: %d: %Derived = bind_name d, %d.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -848,10 +848,10 @@ fn CallReturnAbstract() {
// 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: %return.patt: %Abstract = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Abstract = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Abstract = out_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.param: %Abstract = param runtime_param0
// CHECK:STDOUT: %return.param: ref %Abstract = out_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] {} {}
+4 -4
View File
@@ -159,10 +159,10 @@ class C {
// CHECK:STDOUT: %Bad.decl: type = class_decl @Bad [template = constants.%Bad] {} {}
// CHECK:STDOUT: %Use.decl: %Use.type = fn_decl @Use [template = constants.%Use] {
// CHECK:STDOUT: %b.patt: %Bad = binding_pattern b
// CHECK:STDOUT: %b.param_patt: %Bad = param_pattern %b.patt, runtime_param0
// CHECK:STDOUT: %b.param_patt: %Bad = value_param_pattern %b.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Bad.ref: type = name_ref Bad, file.%Bad.decl [template = constants.%Bad]
// CHECK:STDOUT: %b.param: %Bad = param runtime_param0
// CHECK:STDOUT: %b.param: %Bad = value_param runtime_param0
// CHECK:STDOUT: %b: %Bad = bind_name b, %b.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -306,10 +306,10 @@ class C {
// CHECK:STDOUT: %Bad.decl: type = class_decl @Bad [template = constants.%Bad] {} {}
// CHECK:STDOUT: %Use.decl: %Use.type = fn_decl @Use [template = constants.%Use] {
// CHECK:STDOUT: %b.patt: %Bad = binding_pattern b
// CHECK:STDOUT: %b.param_patt: %Bad = param_pattern %b.patt, runtime_param0
// CHECK:STDOUT: %b.param_patt: %Bad = value_param_pattern %b.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Bad.ref: type = name_ref Bad, file.%Bad.decl [template = constants.%Bad]
// CHECK:STDOUT: %b.param: %Bad = param runtime_param0
// CHECK:STDOUT: %b.param: %Bad = value_param runtime_param0
// CHECK:STDOUT: %b: %Bad = bind_name b, %b.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+4 -4
View File
@@ -62,20 +62,20 @@ class Class {
// CHECK:STDOUT: class @Class {
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %a.patt.loc16_13.2: %.1 = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc16_13.1 (constants.%a.patt)]
// CHECK:STDOUT: %a.param_patt: %.1 = param_pattern %a.patt.loc16_13.2, runtime_param<invalid> [symbolic = %a.patt.loc16_13.1 (constants.%a.patt)]
// CHECK:STDOUT: %a.param_patt: %.1 = value_param_pattern %a.patt.loc16_13.2, runtime_param<invalid> [symbolic = %a.patt.loc16_13.1 (constants.%a.patt)]
// 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: %a.param: %.1 = param runtime_param<invalid>
// CHECK:STDOUT: %a.param: %.1 = value_param runtime_param<invalid>
// 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
// CHECK:STDOUT: %b.param_patt: %.1 = param_pattern %b.patt, runtime_param0
// CHECK:STDOUT: %b.param_patt: %.1 = value_param_pattern %b.patt, runtime_param0
// 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: %b.param: %.1 = param runtime_param0
// CHECK:STDOUT: %b.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %b: %.1 = bind_name b, %b.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc22: <witness> = complete_type_witness %.3 [template = constants.%.4]
+8 -8
View File
@@ -74,16 +74,16 @@ fn F(c: Class, p: Class*) {
// 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: %c.patt: %Class = binding_pattern c
// CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0
// CHECK:STDOUT: %c.param_patt: %Class = value_param_pattern %c.patt, runtime_param0
// CHECK:STDOUT: %p.patt: %.1 = binding_pattern p
// CHECK:STDOUT: %p.param_patt: %.1 = param_pattern %p.patt, runtime_param1
// CHECK:STDOUT: %p.param_patt: %.1 = value_param_pattern %p.patt, runtime_param1
// CHECK:STDOUT: } {
// 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: %c.param: %Class = param runtime_param0
// CHECK:STDOUT: %c.param: %Class = value_param runtime_param0
// CHECK:STDOUT: %c: %Class = bind_name c, %c.param
// CHECK:STDOUT: %p.param: %.1 = param runtime_param1
// CHECK:STDOUT: %p.param: %.1 = value_param runtime_param1
// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -91,20 +91,20 @@ fn F(c: Class, p: Class*) {
// CHECK:STDOUT: class @Class {
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
// CHECK:STDOUT: %self.patt: %.1 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.1 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.1 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt
// 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: %self.param: %.1 = param runtime_param0
// CHECK:STDOUT: %self.param: %.1 = value_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: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class]
// CHECK:STDOUT: %self.param: %Class = param runtime_param0
// CHECK:STDOUT: %self.param: %Class = value_param runtime_param0
// CHECK:STDOUT: %self: %Class = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc18: <witness> = complete_type_witness %.3 [template = constants.%.4]
+52 -52
View File
@@ -215,18 +215,18 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromError.decl: type = class_decl @DeriveFromError [template = constants.%DeriveFromError] {} {}
// 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: %p.param_patt: %.1 = value_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: %return.param_patt: i32 = out_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: %p.param: %.1 = param runtime_param0
// CHECK:STDOUT: %p.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -314,18 +314,18 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromNonType.decl: type = class_decl @DeriveFromNonType [template = constants.%DeriveFromNonType] {} {}
// 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: %p.param_patt: %.8 = value_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: %return.param_patt: i32 = out_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: %p.param: %.8 = param runtime_param0
// CHECK:STDOUT: %p.param: %.8 = value_param runtime_param0
// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -482,9 +482,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromi32.decl: type = class_decl @DeriveFromi32 [template = constants.%DeriveFromi32] {} {}
// 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: %p.param_patt: %.2 = value_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: %return.param_patt: %.3 = out_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]
@@ -492,25 +492,25 @@ 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: %p.param: %.2 = param runtime_param0
// CHECK:STDOUT: %p.param: %.2 = value_param runtime_param0
// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.3 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.3 = out_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: %p.param_patt: %.2 = value_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: %return.param_patt: i32 = out_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: %p.param: %.2 = param runtime_param0
// CHECK:STDOUT: %p.param: %.2 = value_param runtime_param0
// CHECK:STDOUT: %p: %.2 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -684,9 +684,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromTuple.decl: type = class_decl @DeriveFromTuple [template = constants.%DeriveFromTuple] {} {}
// 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: %p.param_patt: %.8 = value_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: %return.param_patt: %.9 = out_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]
@@ -694,25 +694,25 @@ 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: %p.param: %.8 = param runtime_param0
// CHECK:STDOUT: %p.param: %.8 = value_param runtime_param0
// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.9 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.9 = out_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: %p.param_patt: %.8 = value_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: %return.param_patt: i32 = out_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: %p.param: %.8 = param runtime_param0
// CHECK:STDOUT: %p.param: %.8 = value_param runtime_param0
// CHECK:STDOUT: %p: %.8 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -885,9 +885,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromStruct.decl: type = class_decl @DeriveFromStruct [template = constants.%DeriveFromStruct] {} {}
// 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: %p.param_patt: %.4 = value_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: %return.param_patt: %.3 = out_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]
@@ -899,25 +899,25 @@ 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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_param runtime_param0
// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.3 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.3 = out_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: %p.param_patt: %.4 = value_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: %return.param_patt: i32 = out_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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_param runtime_param0
// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -1089,33 +1089,33 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromIncomplete.decl: type = class_decl @DeriveFromIncomplete [template = constants.%DeriveFromIncomplete] {} {}
// 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: %p.param_patt: %.1 = value_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: %return.param_patt: %.2 = out_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: %p.param: %.1 = param runtime_param0
// CHECK:STDOUT: %p.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.2 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.2 = out_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: %p.param_patt: %.1 = value_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: %return.param_patt: i32 = out_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: %p.param: %.1 = param runtime_param0
// CHECK:STDOUT: %p.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %p: %.1 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -1271,49 +1271,49 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
// CHECK:STDOUT: %DeriveFromFinal.decl: type = class_decl @DeriveFromFinal [template = constants.%DeriveFromFinal] {} {}
// 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: %p.param_patt: %.9 = value_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: %return.param_patt: %.10 = out_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: %p.param: %.9 = param runtime_param0
// CHECK:STDOUT: %p.param: %.9 = value_param runtime_param0
// CHECK:STDOUT: %p: %.9 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.10 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.10 = out_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: %p.param_patt: %.9 = value_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: %return.param_patt: i32 = out_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: %p.param: %.9 = param runtime_param0
// CHECK:STDOUT: %p.param: %.9 = value_param runtime_param0
// CHECK:STDOUT: %p: %.9 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %p.param_patt: %.9 = value_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: %return.param_patt: i32 = out_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: %p.param: %.9 = param runtime_param0
// CHECK:STDOUT: %p.param: %.9 = value_param runtime_param0
// CHECK:STDOUT: %p: %.9 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -97,17 +97,17 @@ fn AccessBInA(a: A) -> i32 {
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
// 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: %a.param_patt: %A = value_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: %return.param_patt: i32 = out_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: %a.param: %A = param runtime_param0
// CHECK:STDOUT: %a.param: %A = value_param runtime_param0
// CHECK:STDOUT: %a: %A = bind_name a, %a.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param1
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -53,10 +53,10 @@ fn Make() -> C {
// 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: %return.patt: %C = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %C = out_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.param: %C = param runtime_param0
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param0
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+8 -8
View File
@@ -132,33 +132,33 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; }
// CHECK:STDOUT: %B2.decl: type = class_decl @B2 [template = constants.%B2] {} {}
// 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: %p.param_patt: %.11 = value_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: %return.param_patt: %.12 = out_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: %p.param: %.11 = param runtime_param0
// CHECK:STDOUT: %p.param: %.11 = value_param runtime_param0
// CHECK:STDOUT: %p: %.11 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.12 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.12 = out_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: %p.param_patt: %.21 = value_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: %return.param_patt: %.22 = out_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: %p.param: %.21 = param runtime_param0
// CHECK:STDOUT: %p.param: %.21 = value_param runtime_param0
// CHECK:STDOUT: %p: %.21 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %.22 = param runtime_param1
// CHECK:STDOUT: %return.param: ref %.22 = out_param runtime_param1
// CHECK:STDOUT: %return: ref %.22 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
+11 -11
View File
@@ -76,27 +76,27 @@ fn Class(N:! i32).F[self: Self](n: T) {}
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [template = constants.%Class.1] {
// 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<invalid> [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)]
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_13.1, runtime_param<invalid> [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
// 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: <error> = binding_pattern self
// CHECK:STDOUT: %self.param_patt: <error> = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: <error> = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %n.patt: <error> = binding_pattern n
// CHECK:STDOUT: %n.param_patt: <error> = param_pattern %n.patt, runtime_param1
// CHECK:STDOUT: %n.param_patt: <error> = value_param_pattern %n.patt, runtime_param1
// CHECK:STDOUT: } {
// 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: %N.param: i32 = param runtime_param<invalid>
// CHECK:STDOUT: %N.param: i32 = value_param runtime_param<invalid>
// 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: <error> = name_ref Self, <error> [template = <error>]
// CHECK:STDOUT: %T.ref: <error> = name_ref T, <error> [template = <error>]
// CHECK:STDOUT: %self.param: <error> = param runtime_param0
// CHECK:STDOUT: %self.param: <error> = value_param runtime_param0
// CHECK:STDOUT: %self: <error> = bind_name self, %self.param
// CHECK:STDOUT: %n.param: <error> = param runtime_param1
// CHECK:STDOUT: %n.param: <error> = value_param runtime_param1
// CHECK:STDOUT: %n: <error> = bind_name n, %n.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -118,16 +118,16 @@ fn Class(N:! i32).F[self: Self](n: T) {}
// CHECK:STDOUT: %.loc12_8.1: @Class.%.loc12_8.2 (%.2) = field_decl a, element0 [template]
// CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] {
// CHECK:STDOUT: %self.patt: @F.%Class (%Class.2) = binding_pattern self
// CHECK:STDOUT: %self.param_patt: @F.%Class (%Class.2) = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: @F.%Class (%Class.2) = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %n.patt: @F.%T (%T) = binding_pattern n
// CHECK:STDOUT: %n.param_patt: @F.%T (%T) = param_pattern %n.patt, runtime_param1
// CHECK:STDOUT: %n.param_patt: @F.%T (%T) = value_param_pattern %n.patt, runtime_param1
// CHECK:STDOUT: } {
// 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: %self.param: @F.%Class (%Class.2) = param runtime_param0
// CHECK:STDOUT: %self.param: @F.%Class (%Class.2) = value_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.param: @F.%T (%T) = value_param runtime_param1
// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc14_1.1: <witness> = complete_type_witness %.3 [symbolic = %.loc14_1.3 (constants.%.4)]
+22 -22
View File
@@ -227,90 +227,90 @@ class C {
// CHECK:STDOUT: %global_var: ref <error> = bind_name global_var, %global_var.var
// 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: %return.param_patt: %Class = out_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.param: %Class = param runtime_param0
// CHECK:STDOUT: %return.param: ref %Class = out_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: %p.param_patt: %.4 = value_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: %return.param_patt: i32 = out_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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_param runtime_param0
// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %p.param_patt: %.4 = value_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: %return.param_patt: i32 = out_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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_param runtime_param0
// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
// CHECK:STDOUT: %return.param: ref i32 = out_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: %p.param_patt: %.4 = value_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: %return.param_patt: %Class = out_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_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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_param runtime_param0
// CHECK:STDOUT: %p: %.4 = bind_name p, %p.param
// CHECK:STDOUT: %return.param: %Class = param runtime_param1
// CHECK:STDOUT: %return.param: ref %Class = out_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
// CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0
// CHECK:STDOUT: %p.param_patt: %.4 = value_param_pattern %p.patt, runtime_param0
// 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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_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: %c.param_patt: %Class = value_param_pattern %c.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class]
// CHECK:STDOUT: %c.param: %Class = param runtime_param0
// CHECK:STDOUT: %c.param: %Class = value_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: %return.patt: %Class = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Class = out_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.param: %Class = param runtime_param0
// CHECK:STDOUT: %return.param: ref %Class = out_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
// CHECK:STDOUT: %p.param_patt: %.4 = param_pattern %p.patt, runtime_param0
// CHECK:STDOUT: %p.param_patt: %.4 = value_param_pattern %p.patt, runtime_param0
// 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: %p.param: %.4 = param runtime_param0
// CHECK:STDOUT: %p.param: %.4 = value_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] {} {}
+2 -2
View File
@@ -73,11 +73,11 @@ fn F() {
// 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: %p.patt: %.5 = binding_pattern p
// CHECK:STDOUT: %p.param_patt: %.5 = param_pattern %p.patt, runtime_param0
// CHECK:STDOUT: %p.param_patt: %.5 = value_param_pattern %p.patt, runtime_param0
// 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: %p.param: %.5 = param runtime_param0
// CHECK:STDOUT: %p.param: %.5 = value_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] {} {}
@@ -84,16 +84,16 @@ fn F(s: {.a: A}, b: B) {
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
// CHECK:STDOUT: %s.patt: %.7 = binding_pattern s
// CHECK:STDOUT: %s.param_patt: %.7 = param_pattern %s.patt, runtime_param0
// CHECK:STDOUT: %s.param_patt: %.7 = value_param_pattern %s.patt, runtime_param0
// CHECK:STDOUT: %b.patt: %B = binding_pattern b
// CHECK:STDOUT: %b.param_patt: %B = param_pattern %b.patt, runtime_param1
// CHECK:STDOUT: %b.param_patt: %B = value_param_pattern %b.patt, runtime_param1
// CHECK:STDOUT: } {
// 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: %s.param: %.7 = param runtime_param0
// CHECK:STDOUT: %s.param: %.7 = value_param runtime_param0
// CHECK:STDOUT: %s: %.7 = bind_name s, %s.param
// CHECK:STDOUT: %b.param: %B = param runtime_param1
// CHECK:STDOUT: %b.param: %B = value_param runtime_param1
// CHECK:STDOUT: %b: %B = bind_name b, %b.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -101,12 +101,12 @@ fn F(s: {.a: A}, b: B) {
// CHECK:STDOUT: class @A {
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
// CHECK:STDOUT: %self.patt: %.1 = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %.1 = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %.1 = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt
// 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: %self.param: %.1 = param runtime_param0
// CHECK:STDOUT: %self.param: %.1 = value_param runtime_param0
// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.3 [template = constants.%.4]
+2 -2
View File
@@ -69,12 +69,12 @@ fn T.F() {}
// CHECK:STDOUT: class @Class {
// 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: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.2 [template = constants.%.3]
+4 -4
View File
@@ -89,10 +89,10 @@ fn F(c: Class) {
// CHECK:STDOUT: %A: %WithSelf.type = bind_alias A, @Class.%WithSelf.decl [template = constants.%WithSelf]
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
// CHECK:STDOUT: %c.patt: %Class = binding_pattern c
// CHECK:STDOUT: %c.param_patt: %Class = param_pattern %c.patt, runtime_param0
// CHECK:STDOUT: %c.param_patt: %Class = value_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: %c.param: %Class = param runtime_param0
// CHECK:STDOUT: %c.param: %Class = value_param runtime_param0
// CHECK:STDOUT: %c: %Class = bind_name c, %c.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -101,10 +101,10 @@ fn F(c: Class) {
// CHECK:STDOUT: %NoSelf.decl: %NoSelf.type = fn_decl @NoSelf [template = constants.%NoSelf] {} {}
// CHECK:STDOUT: %WithSelf.decl: %WithSelf.type = fn_decl @WithSelf [template = constants.%WithSelf] {
// CHECK:STDOUT: %self.patt: %Class = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class]
// CHECK:STDOUT: %self.param: %Class = param runtime_param0
// CHECK:STDOUT: %self.param: %Class = value_param runtime_param0
// CHECK:STDOUT: %self: %Class = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc14: <witness> = complete_type_witness %.2 [template = constants.%.3]
+10 -10
View File
@@ -105,18 +105,18 @@ base class BaseClass {
// CHECK:STDOUT: class @FinalClass {
// CHECK:STDOUT: %Abstract.decl: %Abstract.type.1 = fn_decl @Abstract.1 [template = constants.%Abstract.1] {
// CHECK:STDOUT: %self.patt: %FinalClass = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %FinalClass = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %FinalClass = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FinalClass [template = constants.%FinalClass]
// CHECK:STDOUT: %self.param: %FinalClass = param runtime_param0
// CHECK:STDOUT: %self.param: %FinalClass = value_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: %self.param_patt: %FinalClass = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FinalClass [template = constants.%FinalClass]
// CHECK:STDOUT: %self.param: %FinalClass = param runtime_param0
// CHECK:STDOUT: %self.param: %FinalClass = value_param runtime_param0
// CHECK:STDOUT: %self: %FinalClass = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc30: <witness> = complete_type_witness %.2 [template = constants.%.3]
@@ -130,18 +130,18 @@ base class BaseClass {
// CHECK:STDOUT: class @AbstractClass {
// CHECK:STDOUT: %Default.decl: %Default.type = fn_decl @Default [template = constants.%Default] {
// CHECK:STDOUT: %self.patt: %AbstractClass = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %AbstractClass = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %AbstractClass = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractClass [template = constants.%AbstractClass]
// CHECK:STDOUT: %self.param: %AbstractClass = param runtime_param0
// CHECK:STDOUT: %self.param: %AbstractClass = value_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: %self.param_patt: %AbstractClass = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractClass [template = constants.%AbstractClass]
// CHECK:STDOUT: %self.param: %AbstractClass = param runtime_param0
// CHECK:STDOUT: %self.param: %AbstractClass = value_param runtime_param0
// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc45: <witness> = complete_type_witness %.2 [template = constants.%.3]
@@ -155,10 +155,10 @@ base class BaseClass {
// CHECK:STDOUT: class @BaseClass {
// CHECK:STDOUT: %Abstract.decl: %Abstract.type.2 = fn_decl @Abstract.2 [template = constants.%Abstract.2] {
// CHECK:STDOUT: %self.patt: %BaseClass = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %BaseClass = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %BaseClass = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%BaseClass [template = constants.%BaseClass]
// CHECK:STDOUT: %self.param: %BaseClass = param runtime_param0
// CHECK:STDOUT: %self.param: %BaseClass = value_param runtime_param0
// CHECK:STDOUT: %self: %BaseClass = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc56: <witness> = complete_type_witness %.2 [template = constants.%.3]
+4 -4
View File
@@ -62,12 +62,12 @@ fn G() -> i32 {
// 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: %return.patt: i32 = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -75,12 +75,12 @@ fn G() -> i32 {
// CHECK:STDOUT: class @Class {
// 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: %return.param_patt: i32 = out_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.param: i32 = param runtime_param0
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param0
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc15: <witness> = complete_type_witness %.2 [template = constants.%.3]
+12 -12
View File
@@ -122,27 +122,27 @@ fn CallWrongSelf(ws: WrongSelf) {
// CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {}
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
// CHECK:STDOUT: %self.patt: %Class = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [template = constants.%Class]
// CHECK:STDOUT: %self.param.loc25: %Class = param runtime_param0
// CHECK:STDOUT: %self.param.loc25: %Class = value_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: %return.patt: %Class = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Class = out_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.param.loc28: %Class = param runtime_param0
// CHECK:STDOUT: %return.param.loc28: ref %Class = out_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] {
// CHECK:STDOUT: %ws.patt: %WrongSelf = binding_pattern ws
// CHECK:STDOUT: %ws.param_patt: %WrongSelf = param_pattern %ws.patt, runtime_param0
// CHECK:STDOUT: %ws.param_patt: %WrongSelf = value_param_pattern %ws.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %WrongSelf.ref: type = name_ref WrongSelf, file.%WrongSelf.decl [template = constants.%WrongSelf]
// CHECK:STDOUT: %ws.param: %WrongSelf = param runtime_param0
// CHECK:STDOUT: %ws.param: %WrongSelf = value_param runtime_param0
// CHECK:STDOUT: %ws: %WrongSelf = bind_name ws, %ws.param
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -170,18 +170,18 @@ fn CallWrongSelf(ws: WrongSelf) {
// CHECK:STDOUT: class @Class {
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
// CHECK:STDOUT: %self.patt: %Class = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [template = constants.%Class]
// CHECK:STDOUT: %self.param.loc16: %Class = param runtime_param0
// CHECK:STDOUT: %self.param.loc16: %Class = value_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: %return.patt: %Class = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %Class = param_pattern %return.patt, runtime_param0
// CHECK:STDOUT: %return.param_patt: %Class = out_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.param.loc18: %Class = param runtime_param0
// CHECK:STDOUT: %return.param.loc18: ref %Class = out_param runtime_param0
// CHECK:STDOUT: %.loc18: ref %Class = return_slot %return.param.loc18
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc19: <witness> = complete_type_witness %.2 [template = constants.%.3]
@@ -195,10 +195,10 @@ fn CallWrongSelf(ws: WrongSelf) {
// CHECK:STDOUT: class @WrongSelf {
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
// CHECK:STDOUT: %self.patt: %Class = binding_pattern self
// CHECK:STDOUT: %self.param_patt: %Class = param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0
// CHECK:STDOUT: } {
// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class]
// CHECK:STDOUT: %self.param: %Class = param runtime_param0
// CHECK:STDOUT: %self.param: %Class = value_param runtime_param0
// CHECK:STDOUT: %self: %Class = bind_name self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc43: <witness> = complete_type_witness %.2 [template = constants.%.3]

Some files were not shown because too many files have changed in this diff Show More