@@ -51,15 +51,26 @@ fn F(a: array({}, 3)) -> {} {
51
51
// CHECK:STDOUT: constants {
52
52
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
53
53
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
54
+ // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
54
55
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
55
56
// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete]
56
57
// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [concrete]
57
58
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
58
59
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
59
60
// CHECK:STDOUT: %ptr.f01: type = ptr_type %array_type [concrete]
61
+ // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
62
+ // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
63
+ // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.857: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic]
64
+ // CHECK:STDOUT: %Int.as.Copy.impl.Op.6aa: %Int.as.Copy.impl.Op.type.857 = struct_value () [symbolic]
65
+ // CHECK:STDOUT: %Copy.impl_witness.f0b: <witness> = impl_witness imports.%Copy.impl_witness_table.f59, @Int.as.Copy.impl(%int_32) [concrete]
66
+ // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.af5: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%int_32) [concrete]
67
+ // CHECK:STDOUT: %Int.as.Copy.impl.Op.87e: %Int.as.Copy.impl.Op.type.af5 = struct_value () [concrete]
68
+ // CHECK:STDOUT: %Copy.facet.26d: %Copy.type = facet_value %i32, (%Copy.impl_witness.f0b) [concrete]
69
+ // CHECK:STDOUT: %.3c4: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.26d [concrete]
70
+ // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Copy.impl.Op.87e, @Int.as.Copy.impl.Op(%int_32) [concrete]
60
71
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
61
72
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
62
- // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete]
73
+ // CHECK:STDOUT: %tuple.type.37f : type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [concrete]
63
74
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
64
75
// CHECK:STDOUT: %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
65
76
// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete]
@@ -87,6 +98,8 @@ fn F(a: array({}, 3)) -> {} {
87
98
// CHECK:STDOUT: }
88
99
// CHECK:STDOUT:
89
100
// CHECK:STDOUT: imports {
101
+ // CHECK:STDOUT: %Core.import_ref.b3c: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.857) = import_ref Core//prelude/parts/int, loc17_31, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.6aa)]
102
+ // CHECK:STDOUT: %Copy.impl_witness_table.f59 = impl_witness_table (%Core.import_ref.b3c), @Int.as.Copy.impl [concrete]
90
103
// CHECK:STDOUT: %Core.import_ref.428: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e) = import_ref Core//prelude/parts/int, loc23_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f01)]
91
104
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b6b = impl_witness_table (%Core.import_ref.428), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
92
105
// CHECK:STDOUT: }
@@ -100,7 +113,12 @@ fn F(a: array({}, 3)) -> {} {
100
113
// CHECK:STDOUT: %.loc4_15.1: ref %array_type = value_as_ref %arr.ref
101
114
// CHECK:STDOUT: %.loc4_15.2: ref %i32 = array_index %.loc4_15.1, %i.ref
102
115
// CHECK:STDOUT: %.loc4_15.3: %i32 = bind_value %.loc4_15.2
103
- // CHECK:STDOUT: return %.loc4_15.3
116
+ // CHECK:STDOUT: %impl.elem0: %.3c4 = impl_witness_access constants.%Copy.impl_witness.f0b, element0 [concrete = constants.%Int.as.Copy.impl.Op.87e]
117
+ // CHECK:STDOUT: %bound_method.loc4_15.1: <bound method> = bound_method %.loc4_15.3, %impl.elem0
118
+ // CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Int.as.Copy.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Copy.impl.Op.specific_fn]
119
+ // CHECK:STDOUT: %bound_method.loc4_15.2: <bound method> = bound_method %.loc4_15.3, %specific_fn
120
+ // CHECK:STDOUT: %Int.as.Copy.impl.Op.call: init %i32 = call %bound_method.loc4_15.2(%.loc4_15.3)
121
+ // CHECK:STDOUT: return %Int.as.Copy.impl.Op.call to %return
104
122
// CHECK:STDOUT: }
105
123
// CHECK:STDOUT:
106
124
// CHECK:STDOUT: fn @G() -> %i32 {
@@ -109,7 +127,7 @@ fn F(a: array({}, 3)) -> {} {
109
127
// CHECK:STDOUT: %int_1.loc10_13: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
110
128
// CHECK:STDOUT: %int_2.loc10_16: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
111
129
// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba]
112
- // CHECK:STDOUT: %.loc10_20.1: %tuple.type = tuple_literal (%int_1.loc10_13, %int_2.loc10_16, %int_3)
130
+ // CHECK:STDOUT: %.loc10_20.1: %tuple.type.37f = tuple_literal (%int_1.loc10_13, %int_2.loc10_16, %int_3)
113
131
// CHECK:STDOUT: %int_1.loc10_23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
114
132
// CHECK:STDOUT: %impl.elem0.loc10_20.1: %.7ea = impl_witness_access constants.%ImplicitAs.impl_witness.acc, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.592]
115
133
// CHECK:STDOUT: %bound_method.loc10_20.1: <bound method> = bound_method %int_1.loc10_13, %impl.elem0.loc10_20.1 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.a02]
@@ -151,14 +169,12 @@ fn F(a: array({}, 3)) -> {} {
151
169
// CHECK:STDOUT: %.loc10_23.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_23 [concrete = constants.%int_1.5d2]
152
170
// CHECK:STDOUT: %.loc10_23.2: %i32 = converted %int_1.loc10_23, %.loc10_23.1 [concrete = constants.%int_1.5d2]
153
171
// CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc10_20.15, %.loc10_23.2)
154
- // CHECK:STDOUT: %.loc10_25.1: %i32 = value_of_initializer %F.call
155
- // CHECK:STDOUT: %.loc10_25.2: %i32 = converted %F.call, %.loc10_25.1
156
172
// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: <bound method> = bound_method %.loc10_20.14, constants.%T.as.Destroy.impl.Op.a44
157
173
// CHECK:STDOUT: <elided>
158
174
// CHECK:STDOUT: %bound_method.loc10_20.7: <bound method> = bound_method %.loc10_20.14, %T.as.Destroy.impl.Op.specific_fn
159
175
// CHECK:STDOUT: %addr: %ptr.f01 = addr_of %.loc10_20.14
160
176
// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc10_20.7(%addr)
161
- // CHECK:STDOUT: return %.loc10_25.2
177
+ // CHECK:STDOUT: return %F.call to %return
162
178
// CHECK:STDOUT: }
163
179
// CHECK:STDOUT:
164
180
// CHECK:STDOUT: --- index_non_literal.carbon
@@ -215,6 +231,8 @@ fn F(a: array({}, 3)) -> {} {
215
231
// CHECK:STDOUT: %.loc6_30.2: ref %empty_struct_type = array_index %.loc6_30.1, %.loc6_24.3
216
232
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
217
233
// CHECK:STDOUT: %.loc6_30.3: %empty_struct_type = converted %.loc6_30.2, %empty_struct [concrete = constants.%empty_struct]
218
- // CHECK:STDOUT: return %.loc6_30.3
234
+ // CHECK:STDOUT: %.loc6_30.4: init %empty_struct_type = struct_init () to %return [concrete = constants.%empty_struct]
235
+ // CHECK:STDOUT: %.loc6_31: init %empty_struct_type = converted %.loc6_30.3, %.loc6_30.4 [concrete = constants.%empty_struct]
236
+ // CHECK:STDOUT: return %.loc6_31 to %return
219
237
// CHECK:STDOUT: }
220
238
// CHECK:STDOUT:
0 commit comments