mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 20:51:16 +01:00
Name empty tuples distinctly in SemIR. (#4503)
Building on #4502, give empty tuple values a distinct name, and also explicitly name tuple types (previously values but not types were named).
This commit is contained in:
+225
-225
File diff suppressed because it is too large
Load Diff
@@ -17,7 +17,7 @@ fn F(N:! i32, a: [i32; N]*);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %N: i32 = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt: i32 = symbolic_binding_pattern N, 0 [symbolic]
|
||||
|
||||
@@ -58,24 +58,24 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [template]
|
||||
// CHECK:STDOUT: %CallGeneric: %CallGeneric.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %Function, @Function(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.1: <specific function> = specific_function %Function, @Function(%T) [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.3: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %CallGenericPtr.type: type = fn_type @CallGenericPtr [template]
|
||||
// CHECK:STDOUT: %CallGenericPtr: %CallGenericPtr.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: <specific function> = specific_function %Function, @Function(%.3) [symbolic]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %Function, @Function(%.2) [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %.5: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.6: <witness> = complete_type_witness %.5 [template]
|
||||
// CHECK:STDOUT: %.4: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.5: <witness> = complete_type_witness %.4 [template]
|
||||
// CHECK:STDOUT: %CallSpecific.type: type = fn_type @CallSpecific [template]
|
||||
// CHECK:STDOUT: %CallSpecific: %CallSpecific.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.7: type = ptr_type %.5 [template]
|
||||
// CHECK:STDOUT: %.8: <specific function> = specific_function %Function, @Function(%C) [template]
|
||||
// CHECK:STDOUT: %.6: type = ptr_type %.4 [template]
|
||||
// CHECK:STDOUT: %.7: <specific function> = specific_function %Function, @Function(%C) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -123,21 +123,21 @@ fn CallSpecific(x: C) -> C {
|
||||
// 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 = value_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) = value_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) = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.2) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.2) = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.2) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.2) = out_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: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// 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: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %T.param: type = value_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) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%.loc12_33.2 (%.3) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.2) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.2) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%.loc12_33.2 (%.2) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.2) = 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] {
|
||||
@@ -156,7 +156,7 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc16: <witness> = complete_type_witness %.5 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %.loc16: <witness> = complete_type_witness %.4 [template = constants.%.5]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
@@ -180,14 +180,14 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T.patt.loc8_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc9_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %.loc9_10.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %.loc9_10.2 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T)) -> @CallGeneric.%T.loc8_16.2 (%T) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// CHECK:STDOUT: %T.ref.loc9: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGeneric.%T.loc8_16.2 (%T) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc9_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T) [symbolic = %.loc9_10.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T) [symbolic = %.loc9_10.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGeneric.%T.loc8_16.2 (%T) = call %.loc9_10.1(%x.ref)
|
||||
// CHECK:STDOUT: %.loc9_24.1: @CallGeneric.%T.loc8_16.2 (%T) = value_of_initializer %Function.call
|
||||
// CHECK:STDOUT: %.loc9_24.2: @CallGeneric.%T.loc8_16.2 (%T) = converted %Function.call, %.loc9_24.1
|
||||
@@ -198,21 +198,21 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: generic fn @CallGenericPtr(%T.loc12_19.1: type) {
|
||||
// CHECK:STDOUT: %T.loc12_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc13_10.2: <specific function> = specific_function constants.%Function, @Function(%.loc12_33.2) [symbolic = %.loc13_10.2 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.loc13_10.2: <specific function> = specific_function constants.%Function, @Function(%.loc12_33.2) [symbolic = %.loc13_10.2 (constants.%.3)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3)) -> @CallGenericPtr.%.loc12_33.2 (%.3) {
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.2)) -> @CallGenericPtr.%.loc12_33.2 (%.2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc13_20: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%.loc12_33.2 (%.3) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc13_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%.3) [symbolic = %.loc13_10.2 (constants.%.4)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%.loc12_33.2 (%.3) = call %.loc13_10.1(%x.ref)
|
||||
// CHECK:STDOUT: %.loc13_25.1: @CallGenericPtr.%.loc12_33.2 (%.3) = value_of_initializer %Function.call
|
||||
// CHECK:STDOUT: %.loc13_25.2: @CallGenericPtr.%.loc12_33.2 (%.3) = converted %Function.call, %.loc13_25.1
|
||||
// CHECK:STDOUT: %.loc13_20: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%.loc12_33.2 (%.2) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc13_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%.2) [symbolic = %.loc13_10.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%.loc12_33.2 (%.2) = call %.loc13_10.1(%x.ref)
|
||||
// CHECK:STDOUT: %.loc13_25.1: @CallGenericPtr.%.loc12_33.2 (%.2) = value_of_initializer %Function.call
|
||||
// CHECK:STDOUT: %.loc13_25.2: @CallGenericPtr.%.loc12_33.2 (%.2) = converted %Function.call, %.loc13_25.1
|
||||
// CHECK:STDOUT: return %.loc13_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -222,7 +222,7 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// 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: %.loc19: <specific function> = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.7]
|
||||
// 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
|
||||
@@ -248,19 +248,19 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: specific @CallGenericPtr(constants.%T) {
|
||||
// CHECK:STDOUT: %T.loc12_19.2 => constants.%T
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.2 => constants.%T
|
||||
// CHECK:STDOUT: %.loc12_33.2 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc12_33.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%.3) {
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: specific @Function(constants.%.2) {
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(@CallGenericPtr.%.loc12_33.2) {
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%C) {
|
||||
@@ -276,24 +276,24 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [template]
|
||||
// CHECK:STDOUT: %CallGeneric: %CallGeneric.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %Function, @Function(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.1: <specific function> = specific_function %Function, @Function(%T) [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.3: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %CallGenericPtr.type: type = fn_type @CallGenericPtr [template]
|
||||
// CHECK:STDOUT: %CallGenericPtr: %CallGenericPtr.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: <specific function> = specific_function %Function, @Function(%.3) [symbolic]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %Function, @Function(%.2) [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %.5: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.6: <witness> = complete_type_witness %.5 [template]
|
||||
// CHECK:STDOUT: %.4: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.5: <witness> = complete_type_witness %.4 [template]
|
||||
// CHECK:STDOUT: %CallSpecific.type: type = fn_type @CallSpecific [template]
|
||||
// CHECK:STDOUT: %CallSpecific: %CallSpecific.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.7: type = ptr_type %.5 [template]
|
||||
// CHECK:STDOUT: %.8: <specific function> = specific_function %Function, @Function(%C) [template]
|
||||
// CHECK:STDOUT: %.6: type = ptr_type %.4 [template]
|
||||
// CHECK:STDOUT: %.7: <specific function> = specific_function %Function, @Function(%C) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -341,21 +341,21 @@ fn CallSpecific(x: C) -> C {
|
||||
// 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 = value_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) = value_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) = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.2) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.2) = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.2) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.2) = out_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: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// 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: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %T.param: type = value_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) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%.loc12_33.2 (%.3) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.2) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.2) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%.loc12_33.2 (%.2) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.2) = 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] {
|
||||
@@ -374,7 +374,7 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc16: <witness> = complete_type_witness %.5 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %.loc16: <witness> = complete_type_witness %.4 [template = constants.%.5]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
@@ -398,13 +398,13 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T.patt.loc8_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc9_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %.loc9_10.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %.loc9_10.2 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T)) -> @CallGeneric.%T.loc8_16.2 (%T) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: @CallGeneric.%T.loc8_16.2 (%T) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc9_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T) [symbolic = %.loc9_10.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T) [symbolic = %.loc9_10.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGeneric.%T.loc8_16.2 (%T) = call %.loc9_10.1(%x.ref)
|
||||
// CHECK:STDOUT: %.loc9_21.1: @CallGeneric.%T.loc8_16.2 (%T) = value_of_initializer %Function.call
|
||||
// CHECK:STDOUT: %.loc9_21.2: @CallGeneric.%T.loc8_16.2 (%T) = converted %Function.call, %.loc9_21.1
|
||||
@@ -415,19 +415,19 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: generic fn @CallGenericPtr(%T.loc12_19.1: type) {
|
||||
// CHECK:STDOUT: %T.loc12_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %.loc12_33.2 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc13_10.2: <specific function> = specific_function constants.%Function, @Function(%.loc12_33.2) [symbolic = %.loc13_10.2 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.loc13_10.2: <specific function> = specific_function constants.%Function, @Function(%.loc12_33.2) [symbolic = %.loc13_10.2 (constants.%.3)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3)) -> @CallGenericPtr.%.loc12_33.2 (%.3) {
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.2)) -> @CallGenericPtr.%.loc12_33.2 (%.2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%.loc12_33.2 (%.3) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc13_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%.3) [symbolic = %.loc13_10.2 (constants.%.4)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%.loc12_33.2 (%.3) = call %.loc13_10.1(%x.ref)
|
||||
// CHECK:STDOUT: %.loc13_21.1: @CallGenericPtr.%.loc12_33.2 (%.3) = value_of_initializer %Function.call
|
||||
// CHECK:STDOUT: %.loc13_21.2: @CallGenericPtr.%.loc12_33.2 (%.3) = converted %Function.call, %.loc13_21.1
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%.loc12_33.2 (%.2) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc13_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%.2) [symbolic = %.loc13_10.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%.loc12_33.2 (%.2) = call %.loc13_10.1(%x.ref)
|
||||
// CHECK:STDOUT: %.loc13_21.1: @CallGenericPtr.%.loc12_33.2 (%.2) = value_of_initializer %Function.call
|
||||
// CHECK:STDOUT: %.loc13_21.2: @CallGenericPtr.%.loc12_33.2 (%.2) = converted %Function.call, %.loc13_21.1
|
||||
// CHECK:STDOUT: return %.loc13_21.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -436,7 +436,7 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// 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: %.loc19: <specific function> = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.7]
|
||||
// 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
|
||||
@@ -462,19 +462,19 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: specific @CallGenericPtr(constants.%T) {
|
||||
// CHECK:STDOUT: %T.loc12_19.2 => constants.%T
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.2 => constants.%T
|
||||
// CHECK:STDOUT: %.loc12_33.2 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc12_33.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%.3) {
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: specific @Function(constants.%.2) {
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(@CallGenericPtr.%.loc12_33.2) {
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%C) {
|
||||
|
||||
+8
-8
@@ -24,9 +24,9 @@ fn F(T:! type, U:! type) {
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -53,17 +53,17 @@ fn F(T:! type, U:! type) {
|
||||
// CHECK:STDOUT: %U.patt.loc11_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc12_11.2: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %.loc12_11.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc12_11.2: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %.loc12_11.2 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_11.1: type = ptr_type %T [symbolic = %.loc12_11.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %p.var: ref @F.%.loc12_11.2 (%.2) = var p
|
||||
// CHECK:STDOUT: %p: ref @F.%.loc12_11.2 (%.2) = bind_name p, %p.var
|
||||
// CHECK:STDOUT: %.loc12_11.1: type = ptr_type %T [symbolic = %.loc12_11.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %p.var: ref @F.%.loc12_11.2 (%.1) = var p
|
||||
// CHECK:STDOUT: %p: ref @F.%.loc12_11.2 (%.1) = bind_name p, %p.var
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc11_16.1 [symbolic = %U.loc11_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %p.ref: ref @F.%.loc12_11.2 (%.2) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc16_15: @F.%.loc12_11.2 (%.2) = bind_value %p.ref
|
||||
// CHECK:STDOUT: %p.ref: ref @F.%.loc12_11.2 (%.1) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc16_15: @F.%.loc12_11.2 (%.1) = bind_value %p.ref
|
||||
// CHECK:STDOUT: %.loc16_14: ref @F.%T.loc11_6.2 (%T) = deref %.loc16_15
|
||||
// CHECK:STDOUT: %.loc16_16: @F.%U.loc11_16.2 (%U) = converted %.loc16_14, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %n: @F.%U.loc11_16.2 (%U) = bind_name n, <error>
|
||||
|
||||
@@ -16,7 +16,7 @@ fn F(T:! type);
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+15
-15
@@ -40,12 +40,12 @@ fn H() {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.1: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -86,14 +86,14 @@ fn H() {
|
||||
// CHECK:STDOUT: %T.patt.loc7_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc8_3.2: <specific function> = specific_function constants.%F, @F(%T.loc7_6.2) [symbolic = %.loc8_3.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc8_3.2: <specific function> = specific_function constants.%F, @F(%T.loc7_6.2) [symbolic = %.loc8_3.2 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc8_3.1: <specific function> = specific_function %F.ref, @F(constants.%T) [symbolic = %.loc8_3.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %F.call: init %.1 = call %.loc8_3.1()
|
||||
// CHECK:STDOUT: %.loc8_3.1: <specific function> = specific_function %F.ref, @F(constants.%T) [symbolic = %.loc8_3.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %.loc8_3.1()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -122,17 +122,17 @@ fn H() {
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.4: <specific function> = specific_function %F, @F(%C) [template]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %F, @F(%C) [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.5: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.6: <specific function> = specific_function %G, @G(%C) [template]
|
||||
// CHECK:STDOUT: %.4: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.5: <specific function> = specific_function %G, @G(%C) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -163,12 +163,12 @@ fn H() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F]
|
||||
// CHECK:STDOUT: %C.ref.loc10: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc10: <specific function> = specific_function %F.ref, @F(constants.%C) [template = constants.%.4]
|
||||
// CHECK:STDOUT: %F.call: init %.3 = call %.loc10()
|
||||
// CHECK:STDOUT: %.loc10: <specific function> = specific_function %F.ref, @F(constants.%C) [template = constants.%.3]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %.loc10()
|
||||
// CHECK:STDOUT: %G.ref: %G.type = name_ref G, imports.%import_ref.2 [template = constants.%G]
|
||||
// CHECK:STDOUT: %C.ref.loc12: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc12: <specific function> = specific_function %G.ref, @G(constants.%C) [template = constants.%.6]
|
||||
// CHECK:STDOUT: %G.call: init %.3 = call %.loc12()
|
||||
// CHECK:STDOUT: %.loc12: <specific function> = specific_function %G.ref, @G(constants.%C) [template = constants.%.5]
|
||||
// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %.loc12()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -186,7 +186,7 @@ fn H() {
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.1: <specific function> = specific_function constants.%F, @F(%T) [symbolic = %.1 (constants.%.5)]
|
||||
// CHECK:STDOUT: %.1: <specific function> = specific_function constants.%F, @F(%T) [symbolic = %.1 (constants.%.4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type);
|
||||
// CHECK:STDOUT: }
|
||||
@@ -220,6 +220,6 @@ fn H() {
|
||||
// CHECK:STDOUT: %T.patt => constants.%C
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.1 => constants.%.4
|
||||
// CHECK:STDOUT: %.1 => constants.%.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %.1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -19,9 +19,9 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -42,17 +42,17 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %T.patt.loc11_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc12_11.2: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %.loc12_11.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc12_11.2: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %.loc12_11.2 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %T.ref.loc12: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_11.1: type = ptr_type %T [symbolic = %.loc12_11.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %p.var: ref @F.%.loc12_11.2 (%.2) = var p
|
||||
// CHECK:STDOUT: %p: ref @F.%.loc12_11.2 (%.2) = bind_name p, %p.var
|
||||
// CHECK:STDOUT: %.loc12_11.1: type = ptr_type %T [symbolic = %.loc12_11.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %p.var: ref @F.%.loc12_11.2 (%.1) = var p
|
||||
// CHECK:STDOUT: %p: ref @F.%.loc12_11.2 (%.1) = bind_name p, %p.var
|
||||
// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %p.ref: ref @F.%.loc12_11.2 (%.2) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc13_15: @F.%.loc12_11.2 (%.2) = bind_value %p.ref
|
||||
// CHECK:STDOUT: %p.ref: ref @F.%.loc12_11.2 (%.1) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc13_15: @F.%.loc12_11.2 (%.1) = bind_value %p.ref
|
||||
// CHECK:STDOUT: %.loc13_14.1: ref @F.%T.loc11_6.2 (%T) = deref %.loc13_15
|
||||
// CHECK:STDOUT: %.loc13_14.2: @F.%T.loc11_6.2 (%T) = bind_value %.loc13_14.1
|
||||
// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %.loc13_14.2
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ fn F(T:! type, n: T) -> T {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+41
-41
@@ -96,10 +96,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.2: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -149,13 +149,13 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %.loc4_20.2: type = ptr_type @F.%T.loc4_6.2 (%T) [symbolic = %.loc4_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc7_10.2: <specific function> = specific_function constants.%F, @F(%T.loc4_6.2) [symbolic = %.loc7_10.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc7_10.2: <specific function> = specific_function constants.%F, @F(%T.loc4_6.2) [symbolic = %.loc7_10.2 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type) -> %.1 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl.loc4 [template = constants.%F]
|
||||
// CHECK:STDOUT: %T.ref.loc7: type = name_ref T, %T.loc6 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc7_10.1: <specific function> = specific_function %F.ref, @F(constants.%T) [symbolic = %.loc7_10.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc7_10.1: <specific function> = specific_function %F.ref, @F(constants.%T) [symbolic = %.loc7_10.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %F.call: init @F.%.loc4_20.2 (%.1) = call %.loc7_10.1()
|
||||
// CHECK:STDOUT: %.loc7_14.1: @F.%.loc4_20.2 (%.1) = value_of_initializer %F.call
|
||||
// CHECK:STDOUT: %.loc7_14.2: @F.%.loc4_20.2 (%.1) = converted %F.call, %.loc7_14.1
|
||||
@@ -169,7 +169,7 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %.loc4_20.2 => constants.%.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc7_10.2 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc7_10.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(@F.%T.loc4_6.2) {
|
||||
@@ -187,13 +187,13 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.1: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.2: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.2: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = ptr_type %U [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %U [symbolic]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -226,22 +226,22 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return.param: ref @F.%.loc4_30.2 (%.1) = out_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: %.decl: %.type = fn_decl @.1 [template = constants.%.3] {
|
||||
// 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 = value_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 = value_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) = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.2) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.2) = out_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: %.loc13_30.1: type = ptr_type %U [symbolic = %.loc13_30.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %T.param: type = value_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 = value_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: ref @.1.%.loc13_30.2 (%.3) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: %return.param: ref @.1.%.loc13_30.2 (%.2) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.2) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -260,11 +260,11 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.patt.loc13_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %U.loc13_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %U.patt.loc13_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.2: type = ptr_type @.1.%U.loc13_16.2 (%U) [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc13_30.2: type = ptr_type @.1.%U.loc13_16.2 (%U) [symbolic = %.loc13_30.2 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @.1.%.loc13_30.2 (%.3) {
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @.1.%.loc13_30.2 (%.2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc13_6.1 [symbolic = %T.loc13_6.2 (constants.%T)]
|
||||
@@ -285,7 +285,7 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.patt.loc13_6.2 => constants.%T
|
||||
// CHECK:STDOUT: %U.loc13_16.2 => constants.%U
|
||||
// CHECK:STDOUT: %U.patt.loc13_16.2 => constants.%U
|
||||
// CHECK:STDOUT: %.loc13_30.2 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc13_30.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_reorder.carbon
|
||||
@@ -297,15 +297,15 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.1: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T.1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.2: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %U.2: type = bind_symbolic_name U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.2: type = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.2: type = bind_symbolic_name T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = ptr_type %T.2 [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %T.2 [symbolic]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -338,22 +338,22 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return.param: ref @F.%.loc4_30.2 (%.1) = out_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: %.decl: %.type = fn_decl @.1 [template = constants.%.3] {
|
||||
// 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 = value_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 = value_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) = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.2) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.2) = out_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: %.loc13_30.1: type = ptr_type %T.2 [symbolic = %.loc13_30.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %U.param: type = value_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 = value_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: ref @.1.%.loc13_30.2 (%.3) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: %return.param: ref @.1.%.loc13_30.2 (%.2) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.2) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -372,11 +372,11 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %T.loc13_16.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.2: type = ptr_type @.1.%T.loc13_16.2 (%T.2) [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc13_30.2: type = ptr_type @.1.%T.loc13_16.2 (%T.2) [symbolic = %.loc13_30.2 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%.loc13_30.2 (%.3) {
|
||||
// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%.loc13_30.2 (%.2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
||||
// CHECK:STDOUT: %T.ref.loc21: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
@@ -397,7 +397,7 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.2 => constants.%U.2
|
||||
// CHECK:STDOUT: %T.loc13_16.2 => constants.%T.2
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.2 => constants.%T.2
|
||||
// CHECK:STDOUT: %.loc13_30.2 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc13_30.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_rename.carbon
|
||||
@@ -409,15 +409,15 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.1: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = ptr_type %T.1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.2: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %U.2: type = bind_symbolic_name U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.2: type = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.2: type = bind_symbolic_name T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = ptr_type %U.2 [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = ptr_type %U.2 [symbolic]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -450,22 +450,22 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return.param: ref @F.%.loc4_30.2 (%.1) = out_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: %.decl: %.type = fn_decl @.1 [template = constants.%.3] {
|
||||
// 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 = value_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 = value_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) = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.2) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.2) = out_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: %.loc13_30.1: type = ptr_type %U.2 [symbolic = %.loc13_30.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %U.param: type = value_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 = value_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: ref @.1.%.loc13_30.2 (%.3) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: %return.param: ref @.1.%.loc13_30.2 (%.2) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.2) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -484,11 +484,11 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %T.loc13_16.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.2: type = ptr_type @.1.%U.loc13_6.2 (%U.2) [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc13_30.2: type = ptr_type @.1.%U.loc13_6.2 (%U.2) [symbolic = %.loc13_30.2 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%.loc13_30.2 (%.3) {
|
||||
// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%.loc13_30.2 (%.2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
@@ -509,6 +509,6 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.2 => constants.%U.2
|
||||
// CHECK:STDOUT: %T.loc13_16.2 => constants.%T.2
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.2 => constants.%T.2
|
||||
// CHECK:STDOUT: %.loc13_30.2 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc13_30.2 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+20
-20
@@ -39,7 +39,7 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
|
||||
@@ -47,10 +47,10 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %ErrorIfNIsZero: %ErrorIfNIsZero.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [template]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = int_type signed, %N [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = int_type signed, %N [symbolic]
|
||||
// CHECK:STDOUT: %CallNegative.type: type = fn_type @CallNegative [template]
|
||||
// CHECK:STDOUT: %CallNegative: %CallNegative.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.2: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template]
|
||||
// CHECK:STDOUT: %ImplicitAs: %ImplicitAs.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic]
|
||||
@@ -60,14 +60,14 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Self.2: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic]
|
||||
// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, imports.%import_ref.7 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.3: type = interface_type @ImplicitAs, @ImplicitAs(Core.IntLiteral) [template]
|
||||
// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert, @ImplicitAs(Core.IntLiteral) [template]
|
||||
// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, imports.%import_ref.7 [template]
|
||||
// CHECK:STDOUT: %.8: %.4 = assoc_entity element0, imports.%import_ref.8 [symbolic]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.7 [template]
|
||||
// CHECK:STDOUT: %.7: %.3 = assoc_entity element0, imports.%import_ref.8 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -82,7 +82,7 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+30, loaded [template = constants.%Int]
|
||||
// CHECK:STDOUT: %import_ref.3: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs]
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+55, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)]
|
||||
// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)]
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
@@ -119,8 +119,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
|
||||
// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.1)]
|
||||
// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.4) = assoc_entity element0, imports.%import_ref.7 [symbolic = %.2 (constants.%.5)]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.3) = assoc_entity element0, imports.%import_ref.7 [symbolic = %.2 (constants.%.4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -137,18 +137,18 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %N.patt.loc4_19.2: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_19.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc9_18: type = int_type signed, %N.loc4_19.2 [symbolic = %.loc9_18 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_18: type = int_type signed, %N.loc4_19.2 [symbolic = %.loc9_18 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%N.param_patt: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Core.ref.loc9: <namespace> = name_ref Core, imports.%Core [template = imports.%Core]
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%import_ref.2 [template = constants.%Int]
|
||||
// CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, %N.loc4_19.1 [symbolic = %N.loc4_19.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%N.ref) [symbolic = %.loc9_18 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_20.1: type = value_of_initializer %int.make_type_signed [symbolic = %.loc9_18 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc9_20.2: type = converted %int.make_type_signed, %.loc9_20.1 [symbolic = %.loc9_18 (constants.%.2)]
|
||||
// CHECK:STDOUT: %v.var: ref @ErrorIfNIsZero.%.loc9_18 (%.2) = var v
|
||||
// CHECK:STDOUT: %v: ref @ErrorIfNIsZero.%.loc9_18 (%.2) = bind_name v, %v.var
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%N.ref) [symbolic = %.loc9_18 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc9_20.1: type = value_of_initializer %int.make_type_signed [symbolic = %.loc9_18 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc9_20.2: type = converted %int.make_type_signed, %.loc9_20.1 [symbolic = %.loc9_18 (constants.%.1)]
|
||||
// CHECK:STDOUT: %v.var: ref @ErrorIfNIsZero.%.loc9_18 (%.1) = var v
|
||||
// CHECK:STDOUT: %v: ref @ErrorIfNIsZero.%.loc9_18 (%.1) = bind_name v, %v.var
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -158,7 +158,7 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: fn @CallNegative() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %ErrorIfNIsZero.ref: %ErrorIfNIsZero.type = name_ref ErrorIfNIsZero, file.%ErrorIfNIsZero.decl [template = constants.%ErrorIfNIsZero]
|
||||
// CHECK:STDOUT: %.loc24_18: i32 = int_value 0 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc24_18: i32 = int_value 0 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %.loc24_17: Core.IntLiteral = converted %.loc24_18, <error> [template = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -206,7 +206,7 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Self => constants.%Self.2
|
||||
// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2
|
||||
// CHECK:STDOUT: %Convert => constants.%Convert.2
|
||||
// CHECK:STDOUT: %.1 => constants.%.6
|
||||
// CHECK:STDOUT: %.2 => constants.%.7
|
||||
// CHECK:STDOUT: %.1 => constants.%.5
|
||||
// CHECK:STDOUT: %.2 => constants.%.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+57
-57
@@ -26,40 +26,40 @@ fn G() {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Wrap.type: type = generic_class_type @Wrap [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Wrap.1: %Wrap.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Wrap.2: type = class_type @Wrap, @Wrap(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Make.type.1: type = fn_type @Make, @Wrap(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.3: <witness> = complete_type_witness %.2 [template]
|
||||
// CHECK:STDOUT: %.4: <specific function> = specific_function %Make.1, @Make(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %Make.1, @Make(%T) [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.5: i32 = int_value 100 [template]
|
||||
// CHECK:STDOUT: %.6: type = array_type %.5, i32 [template]
|
||||
// CHECK:STDOUT: %.7: type = ptr_type %.6 [template]
|
||||
// CHECK:STDOUT: %.8: type = unbound_element_type %C, %.6 [template]
|
||||
// CHECK:STDOUT: %.9: type = struct_type {.arr: %.6} [template]
|
||||
// CHECK:STDOUT: %.10: <witness> = complete_type_witness %.9 [template]
|
||||
// CHECK:STDOUT: %.4: i32 = int_value 100 [template]
|
||||
// CHECK:STDOUT: %.5: type = array_type %.4, i32 [template]
|
||||
// CHECK:STDOUT: %.6: type = ptr_type %.5 [template]
|
||||
// CHECK:STDOUT: %.7: type = unbound_element_type %C, %.5 [template]
|
||||
// CHECK:STDOUT: %.8: type = struct_type {.arr: %.5} [template]
|
||||
// CHECK:STDOUT: %.9: <witness> = complete_type_witness %.8 [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Wrap.3: type = class_type @Wrap, @Wrap(i32) [template]
|
||||
// CHECK:STDOUT: %Make.type.2: type = fn_type @Make, @Wrap(i32) [template]
|
||||
// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.11: type = ptr_type %.2 [template]
|
||||
// CHECK:STDOUT: %.12: <specific function> = specific_function %Make.2, @Make(i32) [template]
|
||||
// CHECK:STDOUT: %Wrap.4: type = class_type @Wrap, @Wrap(%.1) [template]
|
||||
// CHECK:STDOUT: %Make.type.3: type = fn_type @Make, @Wrap(%.1) [template]
|
||||
// CHECK:STDOUT: %.10: type = ptr_type %.1 [template]
|
||||
// CHECK:STDOUT: %.11: <specific function> = specific_function %Make.2, @Make(i32) [template]
|
||||
// CHECK:STDOUT: %Wrap.4: type = class_type @Wrap, @Wrap(%empty_tuple.type) [template]
|
||||
// CHECK:STDOUT: %Make.type.3: type = fn_type @Make, @Wrap(%empty_tuple.type) [template]
|
||||
// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.13: <specific function> = specific_function %Make.3, @Make(%.1) [template]
|
||||
// CHECK:STDOUT: %.14: type = struct_type {.arr: %.7} [template]
|
||||
// CHECK:STDOUT: %.15: type = ptr_type %.9 [template]
|
||||
// CHECK:STDOUT: %.12: <specific function> = specific_function %Make.3, @Make(%empty_tuple.type) [template]
|
||||
// CHECK:STDOUT: %.13: type = struct_type {.arr: %.6} [template]
|
||||
// CHECK:STDOUT: %.14: type = ptr_type %.8 [template]
|
||||
// CHECK:STDOUT: %Wrap.5: type = class_type @Wrap, @Wrap(%C) [template]
|
||||
// CHECK:STDOUT: %Make.type.4: type = fn_type @Make, @Wrap(%C) [template]
|
||||
// CHECK:STDOUT: %Make.4: %Make.type.4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.16: <specific function> = specific_function %Make.4, @Make(%C) [template]
|
||||
// CHECK:STDOUT: %.15: <specific function> = specific_function %Make.4, @Make(%C) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -107,7 +107,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %return.param: ref @Make.%T (%T) = out_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: %.loc13: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Wrap.2
|
||||
@@ -117,12 +117,12 @@ fn G() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc15_26: i32 = int_value 100 [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc15_26: i32 = int_value 100 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc15_21.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc15_21.2: type = converted %int.make_type_32, %.loc15_21.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc15_29: type = array_type %.loc15_26, i32 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %.loc15_18: %.8 = field_decl arr, element0 [template]
|
||||
// CHECK:STDOUT: %.loc15_32: <witness> = complete_type_witness %.9 [template = constants.%.10]
|
||||
// CHECK:STDOUT: %.loc15_29: type = array_type %.loc15_26, i32 [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc15_18: %.7 = field_decl arr, element0 [template]
|
||||
// CHECK:STDOUT: %.loc15_32: <witness> = complete_type_witness %.8 [template = constants.%.9]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
@@ -135,13 +135,13 @@ fn G() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T) [symbolic = %Make.type (constants.%Make.type.1)]
|
||||
// CHECK:STDOUT: %Make: @Make.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)]
|
||||
// CHECK:STDOUT: %.loc12_27.3: <specific function> = specific_function %Make, @Make(%T) [symbolic = %.loc12_27.3 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.loc12_27.3: <specific function> = specific_function %Make, @Make(%T) [symbolic = %.loc12_27.3 (constants.%.3)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> @Make.%T (%T) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc12_27.1: @Make.%Make.type (%Make.type.1) = specific_constant @Wrap.%Make.decl, @Wrap(constants.%T) [symbolic = %Make (constants.%Make.1)]
|
||||
// CHECK:STDOUT: %Make.ref: @Make.%Make.type (%Make.type.1) = name_ref Make, %.loc12_27.1 [symbolic = %Make (constants.%Make.1)]
|
||||
// CHECK:STDOUT: %.loc12_27.2: <specific function> = specific_function %Make.ref, @Make(constants.%T) [symbolic = %.loc12_27.3 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.loc12_27.2: <specific function> = specific_function %Make.ref, @Make(constants.%T) [symbolic = %.loc12_27.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %Make.call: init @Make.%T (%T) = call %.loc12_27.2()
|
||||
// CHECK:STDOUT: %.loc12_33.1: @Make.%T (%T) = value_of_initializer %Make.call
|
||||
// CHECK:STDOUT: %.loc12_33.2: @Make.%T (%T) = converted %Make.call, %.loc12_33.1
|
||||
@@ -165,21 +165,21 @@ fn G() {
|
||||
// CHECK:STDOUT: %Wrap.loc18: type = class_type @Wrap, @Wrap(i32) [template = constants.%Wrap.3]
|
||||
// CHECK:STDOUT: %.loc18_25.1: %Make.type.2 = specific_constant @Wrap.%Make.decl, @Wrap(i32) [template = constants.%Make.2]
|
||||
// CHECK:STDOUT: %Make.ref.loc18: %Make.type.2 = name_ref Make, %.loc18_25.1 [template = constants.%Make.2]
|
||||
// CHECK:STDOUT: %.loc18_25.2: <specific function> = specific_function %Make.ref.loc18, @Make(i32) [template = constants.%.12]
|
||||
// CHECK:STDOUT: %.loc18_25.2: <specific function> = specific_function %Make.ref.loc18, @Make(i32) [template = constants.%.11]
|
||||
// CHECK:STDOUT: %Make.call.loc18: init i32 = call %.loc18_25.2()
|
||||
// CHECK:STDOUT: assign %a.var, %Make.call.loc18
|
||||
// CHECK:STDOUT: %.loc19_11.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc19_11.2: type = converted %.loc19_11.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %b.var: ref %.1 = var b
|
||||
// CHECK:STDOUT: %b: ref %.1 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: %.loc19_11.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc19_11.2: type = converted %.loc19_11.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %b.var: ref %empty_tuple.type = var b
|
||||
// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var
|
||||
// CHECK:STDOUT: %Wrap.ref.loc19: %Wrap.type = name_ref Wrap, file.%Wrap.decl [template = constants.%Wrap.1]
|
||||
// CHECK:STDOUT: %.loc19_21: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc19_19: type = converted %.loc19_21, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %Wrap.loc19: type = class_type @Wrap, @Wrap(constants.%.1) [template = constants.%Wrap.4]
|
||||
// CHECK:STDOUT: %.loc19_23.1: %Make.type.3 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%.1) [template = constants.%Make.3]
|
||||
// CHECK:STDOUT: %.loc19_21: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc19_19: type = converted %.loc19_21, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Wrap.loc19: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [template = constants.%Wrap.4]
|
||||
// CHECK:STDOUT: %.loc19_23.1: %Make.type.3 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%empty_tuple.type) [template = constants.%Make.3]
|
||||
// CHECK:STDOUT: %Make.ref.loc19: %Make.type.3 = name_ref Make, %.loc19_23.1 [template = constants.%Make.3]
|
||||
// CHECK:STDOUT: %.loc19_23.2: <specific function> = specific_function %Make.ref.loc19, @Make(constants.%.1) [template = constants.%.13]
|
||||
// CHECK:STDOUT: %Make.call.loc19: init %.1 = call %.loc19_23.2()
|
||||
// CHECK:STDOUT: %.loc19_23.2: <specific function> = specific_function %Make.ref.loc19, @Make(constants.%empty_tuple.type) [template = constants.%.12]
|
||||
// CHECK:STDOUT: %Make.call.loc19: init %empty_tuple.type = call %.loc19_23.2()
|
||||
// CHECK:STDOUT: assign %b.var, %Make.call.loc19
|
||||
// CHECK:STDOUT: %C.ref.loc20_10: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %c.var: ref %C = var c
|
||||
@@ -189,7 +189,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %Wrap.loc20: type = class_type @Wrap, @Wrap(constants.%C) [template = constants.%Wrap.5]
|
||||
// CHECK:STDOUT: %.loc20_21.1: %Make.type.4 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [template = constants.%Make.4]
|
||||
// CHECK:STDOUT: %Make.ref.loc20: %Make.type.4 = name_ref Make, %.loc20_21.1 [template = constants.%Make.4]
|
||||
// CHECK:STDOUT: %.loc20_21.2: <specific function> = specific_function %Make.ref.loc20, @Make(constants.%C) [template = constants.%.16]
|
||||
// CHECK:STDOUT: %.loc20_21.2: <specific function> = specific_function %Make.ref.loc20, @Make(constants.%C) [template = constants.%.15]
|
||||
// CHECK:STDOUT: %.loc20_7: ref %C = splice_block %c.var {}
|
||||
// CHECK:STDOUT: %Make.call.loc20: init %C = call %.loc20_21.2() to %.loc20_7
|
||||
// CHECK:STDOUT: assign %c.var, %Make.call.loc20
|
||||
@@ -211,7 +211,7 @@ fn G() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.1
|
||||
// CHECK:STDOUT: %Make => constants.%Make.1
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.4
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(@Wrap.%T.loc11_12.2) {
|
||||
@@ -243,27 +243,27 @@ fn G() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.2
|
||||
// CHECK:STDOUT: %Make => constants.%Make.2
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.11
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%empty_tuple.type) {
|
||||
// CHECK:STDOUT: %T.loc11_12.2 => constants.%empty_tuple.type
|
||||
// CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%empty_tuple.type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.3
|
||||
// CHECK:STDOUT: %Make => constants.%Make.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Make(constants.%empty_tuple.type) {
|
||||
// CHECK:STDOUT: %T => constants.%empty_tuple.type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.3
|
||||
// CHECK:STDOUT: %Make => constants.%Make.3
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.12
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%.1) {
|
||||
// CHECK:STDOUT: %T.loc11_12.2 => constants.%.1
|
||||
// CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.3
|
||||
// CHECK:STDOUT: %Make => constants.%Make.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Make(constants.%.1) {
|
||||
// CHECK:STDOUT: %T => constants.%.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.3
|
||||
// CHECK:STDOUT: %Make => constants.%Make.3
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.13
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%C) {
|
||||
// CHECK:STDOUT: %T.loc11_12.2 => constants.%C
|
||||
// CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%C
|
||||
@@ -279,6 +279,6 @@ fn G() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Make.type => constants.%Make.type.4
|
||||
// CHECK:STDOUT: %Make => constants.%Make.4
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.16
|
||||
// CHECK:STDOUT: %.loc12_27.3 => constants.%.15
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+15
-15
@@ -56,14 +56,14 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Defined.type: type = fn_type @Defined [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Defined: %Defined.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %CallDefined.type: type = fn_type @CallDefined [template]
|
||||
// CHECK:STDOUT: %CallDefined: %CallDefined.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %Defined, @Defined(i32) [template]
|
||||
// CHECK:STDOUT: %.1: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %Defined, @Defined(i32) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -129,8 +129,8 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: fn @CallDefined() -> i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Defined.ref: %Defined.type = name_ref Defined, file.%Defined.decl [template = constants.%Defined]
|
||||
// CHECK:STDOUT: %.loc9_18: i32 = int_value 0 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %.loc9_10: <specific function> = specific_function %Defined.ref, @Defined(i32) [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc9_18: i32 = int_value 0 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc9_10: <specific function> = specific_function %Defined.ref, @Defined(i32) [template = constants.%.2]
|
||||
// CHECK:STDOUT: %Defined.call: init i32 = call %.loc9_10(%.loc9_18)
|
||||
// CHECK:STDOUT: %.loc9_20.1: i32 = value_of_initializer %Defined.call
|
||||
// CHECK:STDOUT: %.loc9_20.2: i32 = converted %Defined.call, %.loc9_20.1
|
||||
@@ -155,14 +155,14 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Defined.type: type = fn_type @Defined [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Defined: %Defined.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %CallDefined.type: type = fn_type @CallDefined [template]
|
||||
// CHECK:STDOUT: %CallDefined: %CallDefined.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %Defined, @Defined(i32) [template]
|
||||
// CHECK:STDOUT: %.1: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %Defined, @Defined(i32) [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -246,8 +246,8 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: fn @CallDefined() -> i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Defined.ref: %Defined.type = name_ref Defined, file.%Defined.decl.loc4 [template = constants.%Defined]
|
||||
// CHECK:STDOUT: %.loc7_18: i32 = int_value 0 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %.loc7_10: <specific function> = specific_function %Defined.ref, @Defined(i32) [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc7_18: i32 = int_value 0 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc7_10: <specific function> = specific_function %Defined.ref, @Defined(i32) [template = constants.%.2]
|
||||
// CHECK:STDOUT: %Defined.call: init i32 = call %.loc7_10(%.loc7_18)
|
||||
// CHECK:STDOUT: %.loc7_20.1: i32 = value_of_initializer %Defined.call
|
||||
// CHECK:STDOUT: %.loc7_20.2: i32 = converted %Defined.call, %.loc7_20.1
|
||||
@@ -272,14 +272,14 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Undefined.type: type = fn_type @Undefined [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Undefined: %Undefined.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %CallUndefined.type: type = fn_type @CallUndefined [template]
|
||||
// CHECK:STDOUT: %CallUndefined: %CallUndefined.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.3: <specific function> = specific_function %Undefined, @Undefined(i32) [template]
|
||||
// CHECK:STDOUT: %.1: i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %.2: <specific function> = specific_function %Undefined, @Undefined(i32) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -339,8 +339,8 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: fn @CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Undefined.ref: %Undefined.type = name_ref Undefined, file.%Undefined.decl [template = constants.%Undefined]
|
||||
// CHECK:STDOUT: %.loc13_20: i32 = int_value 0 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %.loc13_10: <specific function> = specific_function %Undefined.ref, @Undefined(i32) [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc13_20: i32 = int_value 0 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc13_10: <specific function> = specific_function %Undefined.ref, @Undefined(i32) [template = constants.%.2]
|
||||
// CHECK:STDOUT: %Undefined.call: init i32 = call %.loc13_10(%.loc13_20)
|
||||
// CHECK:STDOUT: %.loc13_22.1: i32 = value_of_initializer %Undefined.call
|
||||
// CHECK:STDOUT: %.loc13_22.2: i32 = converted %Undefined.call, %.loc13_22.1
|
||||
|
||||
Reference in New Issue
Block a user