mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 18:31:08 +01:00
Model the return slot as an output parameter (#4432)
Also fix `Param` insts to have meaningful names in pretty-printing, to help clarify relationship with return slot.
This commit is contained in:
+89
-57
@@ -165,7 +165,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -179,30 +179,40 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param<invalid> [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_39.1: type = ptr_type %T [symbolic = %.loc4_39.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] {} {
|
||||
// CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] {
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_37.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_37.2: type = converted %int.make_type_32.loc6, %.loc6_37.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_37.3: type = ptr_type i32 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg.decl: %CallExplicitGenericParamWithGenericArg.type = fn_decl @CallExplicitGenericParamWithGenericArg [template = constants.%CallExplicitGenericParamWithGenericArg] {
|
||||
// CHECK:STDOUT: %T.patt.loc10_43.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_43.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10_43.1, runtime_param<invalid> [symbolic = %T.patt.loc10_43.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc10: type = name_ref T, %T.loc10_43.1 [symbolic = %T.loc10_43.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc10_62.1: type = struct_type {.a: %T} [symbolic = %.loc10_62.2 (constants.%.6)]
|
||||
// CHECK:STDOUT: %.loc10_63.1: type = ptr_type %.6 [symbolic = %.loc10_63.2 (constants.%.7)]
|
||||
// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = var <return slot>
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc10_43.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_43.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -350,26 +360,29 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param<invalid> [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_39.1: type = ptr_type %T [symbolic = %.loc4_39.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParamConst.decl: %CallExplicitGenericParamConst.type = fn_decl @CallExplicitGenericParamConst [template = constants.%CallExplicitGenericParamConst] {
|
||||
// CHECK:STDOUT: %T.patt.loc6_34.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_34.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_34.1, runtime_param<invalid> [symbolic = %T.patt.loc6_34.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_34.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc6_34.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_34.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_34.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParamNonConst.decl: %CallExplicitGenericParamNonConst.type = fn_decl @CallExplicitGenericParamNonConst [template = constants.%CallExplicitGenericParamNonConst] {
|
||||
// CHECK:STDOUT: %T.patt: type = binding_pattern T
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param0
|
||||
// CHECK:STDOUT: %T: type = bind_name T, %param
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param0
|
||||
// CHECK:STDOUT: %T: type = bind_name T, %T.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -492,20 +505,27 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_27.1, runtime_param<invalid> [symbolic = %T.patt.loc6_27.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc6_40: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc6_46: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc6_47.1: type = ptr_type %T [symbolic = %.loc6_47.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc6_28: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %param.loc6_28 [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc6_38: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %param.loc6_38
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] {} {
|
||||
// CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] {
|
||||
// CHECK:STDOUT: %return.patt: %.6 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.6 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %A.ref.loc10: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %.loc10: type = ptr_type %A [template = constants.%.6]
|
||||
// CHECK:STDOUT: %return: ref %.6 = var <return slot>
|
||||
// CHECK:STDOUT: %.loc10_37: type = ptr_type %A [template = constants.%.6]
|
||||
// CHECK:STDOUT: %return.param: %.6 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.6 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -608,7 +628,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -623,19 +643,24 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param<invalid> [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitGenericParam.%.loc4_45.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitGenericParam.%.loc4_45.2 (%.1) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_45.1: type = ptr_type %T [symbolic = %.loc4_45.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%.loc4_45.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_26: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param.loc4_26 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_36: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %param.loc4_36
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @ImplicitGenericParam.%.loc4_45.2 (%.1) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%.loc4_45.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImplicitGenericParam.decl: %CallImplicitGenericParam.type = fn_decl @CallImplicitGenericParam [template = constants.%CallImplicitGenericParam] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_32.1: type = value_of_initializer %int.make_type_32.loc6_32 [template = i32]
|
||||
@@ -644,9 +669,10 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %.loc6_43.1: type = value_of_initializer %int.make_type_32.loc6_40 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_43.2: type = converted %int.make_type_32.loc6_40, %.loc6_43.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_43.3: type = ptr_type i32 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n: i32 = bind_name n, %param
|
||||
// CHECK:STDOUT: %n.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -742,7 +768,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -764,10 +790,10 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_35.3: type = converted %int.make_type_32, %.loc4_35.2 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_35.4: type = converted %.loc4_35.1, constants.%.3 [symbolic = %.loc4_35.5 (constants.%.3)]
|
||||
// CHECK:STDOUT: %param.loc4_16: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param.loc4_16 [symbolic = %T.loc4_15.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_26: @TupleParam.%.loc4_35.5 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @TupleParam.%.loc4_35.5 (%.3) = bind_name x, %param.loc4_26
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @TupleParam.%.loc4_35.5 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @TupleParam.%.loc4_35.5 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallTupleParam.decl: %CallTupleParam.type = fn_decl @CallTupleParam [template = constants.%CallTupleParam] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -845,7 +871,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -866,10 +892,10 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %.loc4_41.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_41.2: type = converted %int.make_type_32, %.loc4_41.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_44.1: type = struct_type {.a: %T, .b: i32} [symbolic = %.loc4_44.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %param.loc4_17 [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_27: @StructParam.%.loc4_44.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @StructParam.%.loc4_44.2 (%.2) = bind_name x, %param.loc4_27
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @StructParam.%.loc4_44.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @StructParam.%.loc4_44.2 (%.2) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallStructParam.decl: %CallStructParam.type = fn_decl @CallStructParam [template = constants.%CallStructParam] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -946,16 +972,19 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc6_35.1, runtime_param<invalid> [symbolic = %U.patt.loc6_35.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_25.1 [symbolic = %T.loc6_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc6_35.1 [symbolic = %U.loc6_35.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%U.loc6_35.2 (%U) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc6_26: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_25.1: type = bind_symbolic_name T, 0, %param.loc6_26 [symbolic = %T.loc6_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc6_36: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc6_35.1: type = bind_symbolic_name U, 1, %param.loc6_36 [symbolic = %U.loc6_35.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %param.loc6_46: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = bind_name x, %param.loc6_46
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc6_35.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc6_35.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%U.loc6_35.2 (%U) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImplicitNotDeducible.decl: %CallImplicitNotDeducible.type = fn_decl @CallImplicitNotDeducible [template = constants.%CallImplicitNotDeducible] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1025,17 +1054,20 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %x.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %y.patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = binding_pattern y
|
||||
// CHECK:STDOUT: %y.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %y.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_50: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%T.loc4_25.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_26: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param.loc4_26 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_36: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name x, %param.loc4_36
|
||||
// CHECK:STDOUT: %param.loc4_42: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %y: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name y, %param.loc4_42
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %y.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %y: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name y, %y.param
|
||||
// CHECK:STDOUT: %return.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%T.loc4_25.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImplicitNotDeducible.decl: %CallImplicitNotDeducible.type = fn_decl @CallImplicitNotDeducible [template = constants.%CallImplicitNotDeducible] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -37,7 +37,7 @@ fn F(N:! i32, a: [i32; N]*);
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -61,10 +61,10 @@ fn F(N:! i32, a: [i32; N]*);
|
||||
// CHECK:STDOUT: %.loc14_19.2: type = converted %int.make_type_32.loc14_19, %.loc14_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc14_25: type = array_type %N.ref, i32 [template = <error>]
|
||||
// CHECK:STDOUT: %.loc14_26: type = ptr_type <error> [template = <error>]
|
||||
// CHECK:STDOUT: %param.loc14_7: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc14_6.1: i32 = bind_symbolic_name N, 0, %param.loc14_7 [symbolic = %N.loc14_6.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %param.loc14_16: <error> = param runtime_param0
|
||||
// CHECK:STDOUT: %a: <error> = bind_name a, %param.loc14_16
|
||||
// CHECK:STDOUT: %N.param: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc14_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_6.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %a.param: <error> = param runtime_param0
|
||||
// CHECK:STDOUT: %a: <error> = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -91,55 +91,67 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param<invalid> [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Function.%T.loc4_13.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_26: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_32: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_14: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_24: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %param.loc4_24
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Function.%T.loc4_13.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [template = constants.%CallGeneric] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_16.1, runtime_param<invalid> [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGeneric.%T.loc8_16.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGeneric.%T.loc8_16.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc8_29: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc8_35: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc8_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %param.loc8_17 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc8_27: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %param.loc8_27
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_19.1, runtime_param<invalid> [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc12_20: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %param.loc12_20 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc12_30: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %param.loc12_30
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] {
|
||||
// CHECK:STDOUT: %x.patt: %C = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc18_20: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc18_26: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: %C = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -211,8 +223,8 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %x.ref: %C = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc19: <specific function> = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.8]
|
||||
// CHECK:STDOUT: %.loc18: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18
|
||||
// CHECK:STDOUT: %.loc18_23.2: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18_23.2
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -297,55 +309,67 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param<invalid> [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Function.%T.loc4_13.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_26: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_32: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_14: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_24: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %param.loc4_24
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Function.%T.loc4_13.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [template = constants.%CallGeneric] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_16.1, runtime_param<invalid> [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGeneric.%T.loc8_16.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGeneric.%T.loc8_16.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc8_29: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc8_35: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc8_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %param.loc8_17 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc8_27: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %param.loc8_27
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_19.1, runtime_param<invalid> [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc12_20: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %param.loc12_20 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc12_30: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %param.loc12_30
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] {
|
||||
// CHECK:STDOUT: %x.patt: %C = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc18_20: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc18_26: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: %C = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -413,8 +437,8 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: %C = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc19: <specific function> = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.8]
|
||||
// CHECK:STDOUT: %.loc18: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18
|
||||
// CHECK:STDOUT: %.loc18_23.2: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18_23.2
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+4
-4
@@ -39,10 +39,10 @@ fn F(T:! type, U:! type) {
|
||||
// CHECK:STDOUT: %U.patt.loc11_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc11_16.1, runtime_param<invalid> [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param.loc11_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc11_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1, %param.loc11_17 [symbolic = %U.loc11_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc11_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -28,8 +28,8 @@ fn F(T:! type);
|
||||
// CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<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: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+8
-5
@@ -33,17 +33,20 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %p.patt: @F.%.loc11_21.2 (%.2) = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: @F.%.loc11_21.2 (%.2) = param_pattern %p.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc11_20.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc11_20.2 (%.1) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc11_20.1: type = ptr_type %T [symbolic = %.loc11_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc11_21.1: type = ptr_type %.1 [symbolic = %.loc11_21.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %T.ref.loc11_27: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc11_28: type = ptr_type %T [symbolic = %.loc11_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc11_20.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc11_17: @F.%.loc11_21.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %p: @F.%.loc11_21.2 (%.2) = bind_name p, %param.loc11_17
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %p.param: @F.%.loc11_21.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %p: @F.%.loc11_21.2 (%.2) = bind_name p, %p.param
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc11_20.2 (%.1) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc11_20.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -32,8 +32,8 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<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: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+8
-5
@@ -32,14 +32,17 @@ fn F(T:! type, n: T) -> T {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %n.patt: @F.%T.loc11_6.2 (%T) = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: @F.%T.loc11_6.2 (%T) = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.%T.loc11_6.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%T.loc11_6.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc11_25: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @F.%T.loc11_6.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc11_17: @F.%T.loc11_6.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %param.loc11_17
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %n.param: @F.%T.loc11_6.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: @F.%T.loc11_6.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%T.loc11_6.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+61
-37
@@ -124,22 +124,28 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %F.decl.loc4: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_20.1: type = ptr_type %T [symbolic = %.loc4_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return.var.loc4: ref @F.%.loc4_20.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param.loc4: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param.loc4: @F.%.loc4_20.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %.loc4_16: ref @F.%.loc4_20.2 (%.1) = return_slot %return.param.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc6: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc6: type = name_ref T, %T.loc6 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %.loc6: type = ptr_type %T [symbolic = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc6: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %param.loc6 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %.loc6_20: type = ptr_type %T [symbolic = constants.%.1]
|
||||
// CHECK:STDOUT: %T.param.loc6: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %T.param.loc6 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %return.param.loc6: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -220,28 +226,34 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param<invalid> [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param<invalid> [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T [symbolic = %.loc4_30.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %T.patt.loc13_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_6.1, runtime_param<invalid> [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %U.patt.loc13_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_16.1, runtime_param<invalid> [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: type = ptr_type %U [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc13_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %param.loc13_7 [symbolic = %T.loc13_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc13_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %param.loc13_17 [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -332,28 +344,34 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param<invalid> [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param<invalid> [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T.1 [symbolic = %.loc4_30.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_6.1, runtime_param<invalid> [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_16.1, runtime_param<invalid> [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: type = ptr_type %T.2 [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc13_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %param.loc13_7 [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %param.loc13_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %param.loc13_17 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -444,28 +462,34 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param<invalid> [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param<invalid> [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T.1 [symbolic = %.loc4_30.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_6.1, runtime_param<invalid> [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_16.1, runtime_param<invalid> [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_6.1 [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: type = ptr_type %U.2 [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc13_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %param.loc13_7 [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %param.loc13_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %param.loc13_17 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -59,8 +59,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+20, loaded [template = constants.%Int]
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+29, loaded [template = constants.%Int]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -77,8 +77,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_23.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_23.2: type = converted %int.make_type_32, %.loc4_23.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %param [symbolic = %N.loc4_19.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %N.param: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_19.2 (constants.%N)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallNegative.decl: %CallNegative.type = fn_decl @CallNegative [template = constants.%CallNegative] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -74,7 +74,7 @@ fn G() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -89,8 +89,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T.patt.loc11_12.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_12.1, runtime_param<invalid> [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_12.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {}
|
||||
@@ -105,9 +105,13 @@ fn G() {
|
||||
// CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] {} {
|
||||
// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] {
|
||||
// CHECK:STDOUT: %return.patt: @Make.%T (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Make.%T (%T) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc11_12.1 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Make.%T (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: @Make.%T (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @Make.%T (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+53
-29
@@ -78,7 +78,7 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -93,20 +93,27 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_12.1, runtime_param<invalid> [symbolic = %T.patt.loc4_12.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @Defined.%T.loc4_12.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Defined.%T.loc4_12.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Defined.%T.loc4_12.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Defined.%T.loc4_12.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_25: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_31: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Defined.%T.loc4_12.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_13: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %param.loc4_13 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_23: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Defined.%T.loc4_12.2 (%T) = bind_name x, %param.loc4_23
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Defined.%T.loc4_12.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Defined.%T.loc4_12.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Defined.%T.loc4_12.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {} {
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc8_21.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc8_21.2: type = converted %int.make_type_32, %.loc8_21.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -177,7 +184,7 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -192,34 +199,44 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %x.patt: %T = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %T = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %T = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_25: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_31: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.var.loc4: ref @Defined.%T.loc4_12.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_13: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %param.loc4_13 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_23: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc4: @Defined.%T.loc4_12.2 (%T) = bind_name x, %param.loc4_23
|
||||
// CHECK:STDOUT: %T.param.loc4: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param.loc4: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc4: @Defined.%T.loc4_12.2 (%T) = bind_name x, %x.param.loc4
|
||||
// CHECK:STDOUT: %return.param.loc4: @Defined.%T.loc4_12.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc4: ref @Defined.%T.loc4_12.2 (%T) = return_slot %return.param.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {} {
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_21.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_21.2: type = converted %int.make_type_32, %.loc6_21.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Defined.decl.loc10: %Defined.type = fn_decl @Defined [template = constants.%Defined] {
|
||||
// CHECK:STDOUT: %T.patt.loc10: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %x.patt: %T = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %T = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %T = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc10_25: type = name_ref T, %T.loc10 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %T.ref.loc10_31: type = name_ref T, %T.loc10 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %return: ref %T = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc10_13: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %param.loc10_13 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %param.loc10_23: %T = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc10: %T = bind_name x, %param.loc10_23
|
||||
// CHECK:STDOUT: %T.param.loc10: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %T.param.loc10 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %x.param.loc10: %T = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc10: %T = bind_name x, %x.param.loc10
|
||||
// CHECK:STDOUT: %return.param.loc10: %T = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %T = return_slot %return.param.loc10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -289,7 +306,7 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -304,20 +321,27 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_14.1, runtime_param<invalid> [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @Undefined.%T.loc4_14.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Undefined.%T.loc4_14.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Undefined.%T.loc4_14.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Undefined.%T.loc4_14.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_27: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_33: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Undefined.%T.loc4_14.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_15: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %param.loc4_15 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_25: @Undefined.%T.loc4_14.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Undefined.%T.loc4_14.2 (%T) = bind_name x, %param.loc4_25
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Undefined.%T.loc4_14.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Undefined.%T.loc4_14.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Undefined.%T.loc4_14.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Undefined.%T.loc4_14.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallUndefined.decl: %CallUndefined.type = fn_decl @CallUndefined [template = constants.%CallUndefined] {} {
|
||||
// CHECK:STDOUT: %CallUndefined.decl: %CallUndefined.type = fn_decl @CallUndefined [template = constants.%CallUndefined] {
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_23.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_23.2: type = converted %int.make_type_32, %.loc6_23.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user