@@ -200,11 +200,11 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
200200// CHECK:STDOUT: %ptr.e47: type = ptr_type %Copyable [concrete]
201201// CHECK:STDOUT: %Copyable__carbon_thunk.type: type = fn_type @Copyable__carbon_thunk [concrete]
202202// CHECK:STDOUT: %Copyable__carbon_thunk: %Copyable__carbon_thunk.type = struct_value () [concrete]
203- // CHECK:STDOUT: %impl_witness.65e: <witness> = impl_witness @CopyCopyable.%impl_witness_table [concrete]
204- // CHECK:STDOUT: %Copy.facet.26f: %Copy.type = facet_value %Copyable, (%impl_witness.65e) [concrete]
205203// CHECK:STDOUT: %Copyable.Op.type: type = fn_type @Copyable.Op [concrete]
206204// CHECK:STDOUT: %Copyable.Op: %Copyable.Op.type = struct_value () [concrete]
207- // CHECK:STDOUT: %.667: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.26f [concrete]
205+ // CHECK:STDOUT: %cpp_witness.524: <witness> = cpp_witness (%Copyable.Op) [concrete]
206+ // CHECK:STDOUT: %Copy.facet.2cd: %Copy.type = facet_value %Copyable, (%cpp_witness.524) [concrete]
207+ // CHECK:STDOUT: %.dc1: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.2cd [concrete]
208208// CHECK:STDOUT: %ExplicitCopy: type = class_type @ExplicitCopy [concrete]
209209// CHECK:STDOUT: %ExplicitCopy.ExplicitCopy.type: type = fn_type @ExplicitCopy.ExplicitCopy [concrete]
210210// CHECK:STDOUT: %ExplicitCopy.ExplicitCopy: %ExplicitCopy.ExplicitCopy.type = struct_value () [concrete]
@@ -213,11 +213,11 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
213213// CHECK:STDOUT: %ptr.84c: type = ptr_type %ExplicitCopy [concrete]
214214// CHECK:STDOUT: %ExplicitCopy__carbon_thunk.type: type = fn_type @ExplicitCopy__carbon_thunk [concrete]
215215// CHECK:STDOUT: %ExplicitCopy__carbon_thunk: %ExplicitCopy__carbon_thunk.type = struct_value () [concrete]
216- // CHECK:STDOUT: %impl_witness.215: <witness> = impl_witness @CopyExplicitCopy.%impl_witness_table [concrete]
217- // CHECK:STDOUT: %Copy.facet.cfa: %Copy.type = facet_value %ExplicitCopy, (%impl_witness.215) [concrete]
218216// CHECK:STDOUT: %ExplicitCopy.Op.type: type = fn_type @ExplicitCopy.Op [concrete]
219217// CHECK:STDOUT: %ExplicitCopy.Op: %ExplicitCopy.Op.type = struct_value () [concrete]
220- // CHECK:STDOUT: %.a87: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.cfa [concrete]
218+ // CHECK:STDOUT: %cpp_witness.b38: <witness> = cpp_witness (%ExplicitCopy.Op) [concrete]
219+ // CHECK:STDOUT: %Copy.facet.27f: %Copy.type = facet_value %ExplicitCopy, (%cpp_witness.b38) [concrete]
220+ // CHECK:STDOUT: %.82a: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.27f [concrete]
221221// CHECK:STDOUT: }
222222// CHECK:STDOUT:
223223// CHECK:STDOUT: imports {
@@ -246,10 +246,8 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
246246// CHECK:STDOUT: fn @CopyCopyable(%c.param: %Copyable) -> %return.param: %Copyable {
247247// CHECK:STDOUT: !entry:
248248// CHECK:STDOUT: %c.ref: %Copyable = name_ref c, %c
249- // CHECK:STDOUT: %impl_witness_table = impl_witness_table (%Copyable.Op.decl), invalid [concrete]
250- // CHECK:STDOUT: %impl_witness: <witness> = impl_witness %impl_witness_table [concrete = constants.%impl_witness.65e]
251249// CHECK:STDOUT: <elided>
252- // CHECK:STDOUT: %impl.elem0: %.667 = impl_witness_access constants.%impl_witness.65e , element0 [concrete = constants.%Copyable.Op]
250+ // CHECK:STDOUT: %impl.elem0: %.dc1 = impl_witness_access constants.%cpp_witness.524 , element0 [concrete = constants.%Copyable.Op]
253251// CHECK:STDOUT: %bound_method: <bound method> = bound_method %c.ref, %impl.elem0
254252// CHECK:STDOUT: %.loc8_10.1: ref %Copyable = temporary_storage
255253// CHECK:STDOUT: %Op.ref: %Copyable.Copyable.type = name_ref Op, imports.%Copyable.Copyable.decl [concrete = constants.%Copyable.Copyable]
@@ -267,10 +265,8 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
267265// CHECK:STDOUT: fn @CopyExplicitCopy(%c.param: %ExplicitCopy) -> %return.param: %ExplicitCopy {
268266// CHECK:STDOUT: !entry:
269267// CHECK:STDOUT: %c.ref: %ExplicitCopy = name_ref c, %c
270- // CHECK:STDOUT: %impl_witness_table = impl_witness_table (%ExplicitCopy.Op.decl), invalid [concrete]
271- // CHECK:STDOUT: %impl_witness: <witness> = impl_witness %impl_witness_table [concrete = constants.%impl_witness.215]
272268// CHECK:STDOUT: <elided>
273- // CHECK:STDOUT: %impl.elem0: %.a87 = impl_witness_access constants.%impl_witness.215 , element0 [concrete = constants.%ExplicitCopy.Op]
269+ // CHECK:STDOUT: %impl.elem0: %.82a = impl_witness_access constants.%cpp_witness.b38 , element0 [concrete = constants.%ExplicitCopy.Op]
274270// CHECK:STDOUT: %bound_method: <bound method> = bound_method %c.ref, %impl.elem0
275271// CHECK:STDOUT: %.loc14_10.1: ref %ExplicitCopy = temporary_storage
276272// CHECK:STDOUT: %Op.ref: %ExplicitCopy.ExplicitCopy.type = name_ref Op, imports.%ExplicitCopy.ExplicitCopy.decl [concrete = constants.%ExplicitCopy.ExplicitCopy]
@@ -296,17 +292,19 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
296292// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.75b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.d9f) [symbolic]
297293// CHECK:STDOUT: %ptr.as.Copy.impl.Op.692: %ptr.as.Copy.impl.Op.type.75b = struct_value () [symbolic]
298294// CHECK:STDOUT: %Copyable: type = class_type @Copyable [concrete]
299- // CHECK:STDOUT: %impl_witness: <witness> = impl_witness @DoCopy.%impl_witness_table [concrete]
300- // CHECK:STDOUT: %Copy.facet.26f: %Copy.type.705 = facet_value %Copyable, (%impl_witness) [concrete]
301- // CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy, @Copy.loc6(%Copy.facet.26f) [concrete]
302- // CHECK:STDOUT: %Wrap.248: type = class_type @Wrap, @Wrap(%Copy.facet.26f) [concrete]
303- // CHECK:STDOUT: %ptr.510: type = ptr_type %Wrap.248 [concrete]
304- // CHECK:STDOUT: %Copy.impl_witness.cab: <witness> = impl_witness imports.%Copy.impl_witness_table.67d, @ptr.as.Copy.impl(%Wrap.248) [concrete]
305- // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.b1b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%Wrap.248) [concrete]
306- // CHECK:STDOUT: %ptr.as.Copy.impl.Op.ea7: %ptr.as.Copy.impl.Op.type.b1b = struct_value () [concrete]
307- // CHECK:STDOUT: %Copy.facet.5be: %Copy.type.705 = facet_value %ptr.510, (%Copy.impl_witness.cab) [concrete]
308- // CHECK:STDOUT: %.e13: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.5be [concrete]
309- // CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.ea7, @ptr.as.Copy.impl.Op(%Wrap.248) [concrete]
295+ // CHECK:STDOUT: %Copyable.Op.type: type = fn_type @Copyable.Op [concrete]
296+ // CHECK:STDOUT: %Copyable.Op: %Copyable.Op.type = struct_value () [concrete]
297+ // CHECK:STDOUT: %cpp_witness.524: <witness> = cpp_witness (%Copyable.Op) [concrete]
298+ // CHECK:STDOUT: %Copy.facet.2cd: %Copy.type.705 = facet_value %Copyable, (%cpp_witness.524) [concrete]
299+ // CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy, @Copy.loc6(%Copy.facet.2cd) [concrete]
300+ // CHECK:STDOUT: %Wrap.380: type = class_type @Wrap, @Wrap(%Copy.facet.2cd) [concrete]
301+ // CHECK:STDOUT: %ptr.ca9: type = ptr_type %Wrap.380 [concrete]
302+ // CHECK:STDOUT: %Copy.impl_witness.c72: <witness> = impl_witness imports.%Copy.impl_witness_table.67d, @ptr.as.Copy.impl(%Wrap.380) [concrete]
303+ // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.4f5: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%Wrap.380) [concrete]
304+ // CHECK:STDOUT: %ptr.as.Copy.impl.Op.c1c: %ptr.as.Copy.impl.Op.type.4f5 = struct_value () [concrete]
305+ // CHECK:STDOUT: %Copy.facet.fd9: %Copy.type.705 = facet_value %ptr.ca9, (%Copy.impl_witness.c72) [concrete]
306+ // CHECK:STDOUT: %.127: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.fd9 [concrete]
307+ // CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.c1c, @ptr.as.Copy.impl.Op(%Wrap.380) [concrete]
310308// CHECK:STDOUT: }
311309// CHECK:STDOUT:
312310// CHECK:STDOUT: imports {
@@ -318,27 +316,25 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
318316// CHECK:STDOUT: !entry:
319317// CHECK:STDOUT: %Copy.ref: %Copy.type.6f0 = name_ref Copy, file.%Copy.decl [concrete = constants.%Copy]
320318// CHECK:STDOUT: %c.ref: %Copyable = name_ref c, %c
321- // CHECK:STDOUT: %impl_witness_table = impl_witness_table (%Copyable.Op.decl), invalid [concrete]
322- // CHECK:STDOUT: %impl_witness: <witness> = impl_witness %impl_witness_table [concrete = constants.%impl_witness]
323319// CHECK:STDOUT: <elided>
324- // CHECK:STDOUT: %Copy.facet.loc12_16.1: %Copy.type.705 = facet_value constants.%Copyable, (constants.%impl_witness ) [concrete = constants.%Copy.facet.26f ]
325- // CHECK:STDOUT: %.loc12_16.1: %Copy.type.705 = converted constants.%Copyable, %Copy.facet.loc12_16.1 [concrete = constants.%Copy.facet.26f ]
326- // CHECK:STDOUT: %Copy.facet.loc12_16.2: %Copy.type.705 = facet_value constants.%Copyable, (constants.%impl_witness ) [concrete = constants.%Copy.facet.26f ]
327- // CHECK:STDOUT: %.loc12_16.2: %Copy.type.705 = converted constants.%Copyable, %Copy.facet.loc12_16.2 [concrete = constants.%Copy.facet.26f ]
328- // CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy.ref, @Copy.loc6(constants.%Copy.facet.26f ) [concrete = constants.%Copy.specific_fn]
320+ // CHECK:STDOUT: %Copy.facet.loc12_16.1: %Copy.type.705 = facet_value constants.%Copyable, (constants.%cpp_witness.524 ) [concrete = constants.%Copy.facet.2cd ]
321+ // CHECK:STDOUT: %.loc12_16.1: %Copy.type.705 = converted constants.%Copyable, %Copy.facet.loc12_16.1 [concrete = constants.%Copy.facet.2cd ]
322+ // CHECK:STDOUT: %Copy.facet.loc12_16.2: %Copy.type.705 = facet_value constants.%Copyable, (constants.%cpp_witness.524 ) [concrete = constants.%Copy.facet.2cd ]
323+ // CHECK:STDOUT: %.loc12_16.2: %Copy.type.705 = converted constants.%Copyable, %Copy.facet.loc12_16.2 [concrete = constants.%Copy.facet.2cd ]
324+ // CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy.ref, @Copy.loc6(constants.%Copy.facet.2cd ) [concrete = constants.%Copy.specific_fn]
329325// CHECK:STDOUT: <elided>
330326// CHECK:STDOUT: %Copy.call: init %Copyable = call %Copy.specific_fn(%c.ref) to %.loc10_28
331327// CHECK:STDOUT: return %Copy.call to %return
332328// CHECK:STDOUT: }
333329// CHECK:STDOUT:
334- // CHECK:STDOUT: fn @EqualWitnesses(%p.param: %ptr.510 ) -> %ptr.510 {
330+ // CHECK:STDOUT: fn @EqualWitnesses(%p.param: %ptr.ca9 ) -> %ptr.ca9 {
335331// CHECK:STDOUT: !entry:
336- // CHECK:STDOUT: %p.ref: %ptr.510 = name_ref p, %p
337- // CHECK:STDOUT: %impl.elem0: %.e13 = impl_witness_access constants.%Copy.impl_witness.cab , element0 [concrete = constants.%ptr.as.Copy.impl.Op.ea7 ]
332+ // CHECK:STDOUT: %p.ref: %ptr.ca9 = name_ref p, %p
333+ // CHECK:STDOUT: %impl.elem0: %.127 = impl_witness_access constants.%Copy.impl_witness.c72 , element0 [concrete = constants.%ptr.as.Copy.impl.Op.c1c ]
338334// CHECK:STDOUT: %bound_method.loc20_10.1: <bound method> = bound_method %p.ref, %impl.elem0
339- // CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @ptr.as.Copy.impl.Op(constants.%Wrap.248 ) [concrete = constants.%ptr.as.Copy.impl.Op.specific_fn]
335+ // CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @ptr.as.Copy.impl.Op(constants.%Wrap.380 ) [concrete = constants.%ptr.as.Copy.impl.Op.specific_fn]
340336// CHECK:STDOUT: %bound_method.loc20_10.2: <bound method> = bound_method %p.ref, %specific_fn
341- // CHECK:STDOUT: %ptr.as.Copy.impl.Op.call: init %ptr.510 = call %bound_method.loc20_10.2(%p.ref)
337+ // CHECK:STDOUT: %ptr.as.Copy.impl.Op.call: init %ptr.ca9 = call %bound_method.loc20_10.2(%p.ref)
342338// CHECK:STDOUT: return %ptr.as.Copy.impl.Op.call to %return
343339// CHECK:STDOUT: }
344340// CHECK:STDOUT:
0 commit comments