mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 12:51:04 +01:00
Fix mangling collision for C++ class template specializations (#7269)
Carbon-side thunks (for example the `Copy`/`Destroy` witness thunks generated for imported C++ types) are mangled by Carbon, and their names incorporate a fingerprint of the involved types. The instruction fingerprinter identifies a class only by its name and parent scope, which is sufficient for Carbon classes but not for imported C++ classes: different specializations of one class template (and other cases such as types in anonymous namespaces) share a Carbon name and parent scope. As a result, the thunks for two distinct specializations could mangle to the same name, producing a single LLVM function with two definitions and failing `verifyModule` during lowering. When fingerprinting a class imported from C++, also include the Clang mangled name of its type. Test: toolchain/lower/testdata/interop/cpp/thunks.carbon gains a split with two specializations of one class template, each requiring a thunk; their thunks now get distinct mangled names instead of colliding. Assisted-by: Claude Code --------- Co-authored-by: Christopher Di Bella <cjdb.ns@gmail.com>
This commit is contained in:
co-authored by
Christopher Di Bella
parent
3ef128ac91
commit
8a59f2a76b
+85
-85
@@ -137,7 +137,7 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %Dest: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %Source.cpp_operator.type: type = fn_type @Source.cpp_operator [concrete]
|
||||
// CHECK:STDOUT: %Source.cpp_operator: %Source.cpp_operator.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.7c0: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %ptr.246: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.type.2ffc11.1: type = fn_type @Dest__carbon_thunk.1 [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.61ac37.1: %Dest__carbon_thunk.type.2ffc11.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest.cpp_destructor.type: type = fn_type @Dest.cpp_destructor [concrete]
|
||||
@@ -146,8 +146,8 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %Dest.Op: %Dest.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Source2: type = class_type @Source2 [concrete]
|
||||
// CHECK:STDOUT: %Dest2: type = class_type @Dest2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.96f: type = ptr_type %Source2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.129: type = ptr_type %Dest2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.692: type = ptr_type %Source2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.a5d: type = ptr_type %Dest2 [concrete]
|
||||
// CHECK:STDOUT: %Dest2__carbon_thunk.type: type = fn_type @Dest2__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Dest2__carbon_thunk: %Dest2__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest2.cpp_destructor.type: type = fn_type @Dest2.cpp_destructor [concrete]
|
||||
@@ -155,8 +155,8 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %Dest2.Op.type: type = fn_type @Dest2.Op [concrete]
|
||||
// CHECK:STDOUT: %Dest2.Op: %Dest2.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ExplicitConstructor: type = class_type @ExplicitConstructor [concrete]
|
||||
// CHECK:STDOUT: %ptr.f95: type = ptr_type %Source [concrete]
|
||||
// CHECK:STDOUT: %ptr.5c4: type = ptr_type %ExplicitConstructor [concrete]
|
||||
// CHECK:STDOUT: %ptr.71b: type = ptr_type %Source [concrete]
|
||||
// CHECK:STDOUT: %ptr.207: type = ptr_type %ExplicitConstructor [concrete]
|
||||
// CHECK:STDOUT: %ExplicitConstructor__carbon_thunk.type: type = fn_type @ExplicitConstructor__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %ExplicitConstructor__carbon_thunk: %ExplicitConstructor__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ExplicitConstructor.cpp_destructor.type: type = fn_type @ExplicitConstructor.cpp_destructor [concrete]
|
||||
@@ -240,7 +240,7 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest]
|
||||
// CHECK:STDOUT: %Source.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%Source.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc8_5.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc8_5.1
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc8_5.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl.74d7b8.1(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc8_5.2: init %Dest to %.loc8_5.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc8_5.3: init %Dest = converted %s.ref, %.loc8_5.2
|
||||
@@ -260,8 +260,8 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %Dest2.ref: type = name_ref Dest2, imports.%Dest2.decl [concrete = constants.%Dest2]
|
||||
// CHECK:STDOUT: %.loc14_5.1: ref %Dest2 = temporary_storage
|
||||
// CHECK:STDOUT: %.loc14_3: ref %Source2 = value_as_ref %s.ref
|
||||
// CHECK:STDOUT: %addr.loc14_5.1: %ptr.96f = addr_of %.loc14_3
|
||||
// CHECK:STDOUT: %addr.loc14_5.2: %ptr.129 = addr_of %.loc14_5.1
|
||||
// CHECK:STDOUT: %addr.loc14_5.1: %ptr.692 = addr_of %.loc14_3
|
||||
// CHECK:STDOUT: %addr.loc14_5.2: %ptr.a5d = addr_of %.loc14_5.1
|
||||
// CHECK:STDOUT: %Dest2__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest2__carbon_thunk.decl(%addr.loc14_5.1, %addr.loc14_5.2)
|
||||
// CHECK:STDOUT: %.loc14_5.2: init %Dest2 to %.loc14_5.1 = mark_in_place_init %Dest2__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc14_5.3: init %Dest2 = converted %s.ref, %.loc14_5.2
|
||||
@@ -281,8 +281,8 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %ExplicitConstructor.ref: type = name_ref ExplicitConstructor, imports.%ExplicitConstructor.decl [concrete = constants.%ExplicitConstructor]
|
||||
// CHECK:STDOUT: %.loc20_5.1: ref %ExplicitConstructor = temporary_storage
|
||||
// CHECK:STDOUT: %.loc20_3: ref %Source = value_as_ref %s.ref
|
||||
// CHECK:STDOUT: %addr.loc20_5.1: %ptr.f95 = addr_of %.loc20_3
|
||||
// CHECK:STDOUT: %addr.loc20_5.2: %ptr.5c4 = addr_of %.loc20_5.1
|
||||
// CHECK:STDOUT: %addr.loc20_5.1: %ptr.71b = addr_of %.loc20_3
|
||||
// CHECK:STDOUT: %addr.loc20_5.2: %ptr.207 = addr_of %.loc20_5.1
|
||||
// CHECK:STDOUT: %ExplicitConstructor__carbon_thunk.call: init %empty_tuple.type = call imports.%ExplicitConstructor__carbon_thunk.decl(%addr.loc20_5.1, %addr.loc20_5.2)
|
||||
// CHECK:STDOUT: %.loc20_5.2: init %ExplicitConstructor to %.loc20_5.1 = mark_in_place_init %ExplicitConstructor__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc20_5.3: init %ExplicitConstructor = converted %s.ref, %.loc20_5.2
|
||||
@@ -302,7 +302,7 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest]
|
||||
// CHECK:STDOUT: %ExplicitConversion.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%ExplicitConversion.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc26_5.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc26_5.1
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc26_5.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl.74d7b8.2(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc26_5.2: init %Dest to %.loc26_5.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc26_5.3: init %Dest = converted %s.ref, %.loc26_5.2
|
||||
@@ -319,18 +319,18 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Source: type = class_type @Source [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.6a9921.1: type = class_type @ConditionallyExplicit.1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.dc5fb9.1: type = pattern_type %ConditionallyExplicit.6a9921.1 [concrete]
|
||||
// CHECK:STDOUT: %ptr.f95: type = ptr_type %Source [concrete]
|
||||
// CHECK:STDOUT: %ptr.d63e0a.1: type = ptr_type %ConditionallyExplicit.6a9921.1 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.d2a: type = class_type @ConditionallyExplicit.1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e92: type = pattern_type %ConditionallyExplicit.d2a [concrete]
|
||||
// CHECK:STDOUT: %ptr.71b: type = ptr_type %Source [concrete]
|
||||
// CHECK:STDOUT: %ptr.c11: type = ptr_type %ConditionallyExplicit.d2a [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.type.c43f84.1: type = fn_type @ConditionallyExplicit__carbon_thunk.1 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.379b04.1: %ConditionallyExplicit__carbon_thunk.type.c43f84.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_destructor.type.6ce8c4.1: type = fn_type @ConditionallyExplicit.cpp_destructor.1 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_destructor.1ad69a.1: %ConditionallyExplicit.cpp_destructor.type.6ce8c4.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.Op.type.43d658.1: type = fn_type @ConditionallyExplicit.Op.1 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.Op.cc70d5.1: %ConditionallyExplicit.Op.type.43d658.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.6a9921.2: type = class_type @ConditionallyExplicit.2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.d63e0a.2: type = ptr_type %ConditionallyExplicit.6a9921.2 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.717: type = class_type @ConditionallyExplicit.2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.6d5: type = ptr_type %ConditionallyExplicit.717 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.type.c43f84.2: type = fn_type @ConditionallyExplicit__carbon_thunk.2 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.379b04.2: %ConditionallyExplicit__carbon_thunk.type.c43f84.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_destructor.type.6ce8c4.2: type = fn_type @ConditionallyExplicit.cpp_destructor.2 [concrete]
|
||||
@@ -338,10 +338,10 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.Op.type.43d658.2: type = fn_type @ConditionallyExplicit.Op.2 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.Op.cc70d5.2: %ConditionallyExplicit.Op.type.43d658.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.type: type = fn_type @ConditionallyExplicit.cpp_operator [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator: %ConditionallyExplicit.cpp_operator.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.7c0: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %ptr.246: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.type: type = fn_type @Dest__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk: %Dest__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest.cpp_destructor.type: type = fn_type @Dest.cpp_destructor [concrete]
|
||||
@@ -353,13 +353,13 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
|
||||
// CHECK:STDOUT: .Source = %Source.decl
|
||||
// CHECK:STDOUT: .ConditionallyExplicitFalse = %ConditionallyExplicit.decl.7f9e91.1
|
||||
// CHECK:STDOUT: .ConditionallyExplicitTrue = %ConditionallyExplicit.decl.7f9e91.2
|
||||
// CHECK:STDOUT: .ConditionallyExplicitFalse = %ConditionallyExplicit.decl.6be
|
||||
// CHECK:STDOUT: .ConditionallyExplicitTrue = %ConditionallyExplicit.decl.80b
|
||||
// CHECK:STDOUT: .Dest = %Dest.decl
|
||||
// CHECK:STDOUT: import Cpp//...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Source.decl: type = class_decl @Source [concrete = constants.%Source] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.7f9e91.1: type = class_decl @ConditionallyExplicit.1 [concrete = constants.%ConditionallyExplicit.6a9921.1] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.6be: type = class_decl @ConditionallyExplicit.1 [concrete = constants.%ConditionallyExplicit.d2a] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.decl.3d8900.1: %ConditionallyExplicit__carbon_thunk.type.c43f84.1 = fn_decl @ConditionallyExplicit__carbon_thunk.1 [concrete = constants.%ConditionallyExplicit__carbon_thunk.379b04.1] {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -370,7 +370,7 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.7f9e91.2: type = class_decl @ConditionallyExplicit.2 [concrete = constants.%ConditionallyExplicit.6a9921.2] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.80b: type = class_decl @ConditionallyExplicit.2 [concrete = constants.%ConditionallyExplicit.717] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.decl.3d8900.2: %ConditionallyExplicit__carbon_thunk.type.c43f84.2 = fn_decl @ConditionallyExplicit__carbon_thunk.2 [concrete = constants.%ConditionallyExplicit__carbon_thunk.379b04.2] {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -402,34 +402,34 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: fn @ConstructorNotExplicit(%s.param: %Source) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.dc5fb9.1 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.e92 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref.loc8: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc8_13: type = splice_block %ConditionallyExplicitFalse.ref.loc8 [concrete = constants.%ConditionallyExplicit.6a9921.1] {
|
||||
// CHECK:STDOUT: %.loc8_13: type = splice_block %ConditionallyExplicitFalse.ref.loc8 [concrete = constants.%ConditionallyExplicit.d2a] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc8: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %ConditionallyExplicitFalse.ref.loc8: type = name_ref ConditionallyExplicitFalse, imports.%ConditionallyExplicit.decl.7f9e91.1 [concrete = constants.%ConditionallyExplicit.6a9921.1]
|
||||
// CHECK:STDOUT: %ConditionallyExplicitFalse.ref.loc8: type = name_ref ConditionallyExplicitFalse, imports.%ConditionallyExplicit.decl.6be [concrete = constants.%ConditionallyExplicit.d2a]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc8_43.1: ref %ConditionallyExplicit.6a9921.1 = temporary_storage
|
||||
// CHECK:STDOUT: %.loc8_43.1: ref %ConditionallyExplicit.d2a = temporary_storage
|
||||
// CHECK:STDOUT: %.loc8_43.2: ref %Source = value_as_ref %s.ref.loc8
|
||||
// CHECK:STDOUT: %addr.loc8_43.1: %ptr.f95 = addr_of %.loc8_43.2
|
||||
// CHECK:STDOUT: %addr.loc8_43.2: %ptr.d63e0a.1 = addr_of %.loc8_43.1
|
||||
// CHECK:STDOUT: %addr.loc8_43.1: %ptr.71b = addr_of %.loc8_43.2
|
||||
// CHECK:STDOUT: %addr.loc8_43.2: %ptr.c11 = addr_of %.loc8_43.1
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.call.loc8: init %empty_tuple.type = call imports.%ConditionallyExplicit__carbon_thunk.decl.3d8900.1(%addr.loc8_43.1, %addr.loc8_43.2)
|
||||
// CHECK:STDOUT: %.loc8_43.3: init %ConditionallyExplicit.6a9921.1 to %.loc8_43.1 = mark_in_place_init %ConditionallyExplicit__carbon_thunk.call.loc8
|
||||
// CHECK:STDOUT: %.loc8_43.4: init %ConditionallyExplicit.6a9921.1 = converted %s.ref.loc8, %.loc8_43.3
|
||||
// CHECK:STDOUT: %.loc8_43.5: ref %ConditionallyExplicit.6a9921.1 = temporary %.loc8_43.1, %.loc8_43.4
|
||||
// CHECK:STDOUT: %.loc8_43.6: %ConditionallyExplicit.6a9921.1 = acquire_value %.loc8_43.5
|
||||
// CHECK:STDOUT: %_: %ConditionallyExplicit.6a9921.1 = value_binding _, %.loc8_43.6
|
||||
// CHECK:STDOUT: %.loc8_43.3: init %ConditionallyExplicit.d2a to %.loc8_43.1 = mark_in_place_init %ConditionallyExplicit__carbon_thunk.call.loc8
|
||||
// CHECK:STDOUT: %.loc8_43.4: init %ConditionallyExplicit.d2a = converted %s.ref.loc8, %.loc8_43.3
|
||||
// CHECK:STDOUT: %.loc8_43.5: ref %ConditionallyExplicit.d2a = temporary %.loc8_43.1, %.loc8_43.4
|
||||
// CHECK:STDOUT: %.loc8_43.6: %ConditionallyExplicit.d2a = acquire_value %.loc8_43.5
|
||||
// CHECK:STDOUT: %_: %ConditionallyExplicit.d2a = value_binding _, %.loc8_43.6
|
||||
// CHECK:STDOUT: %s.ref.loc9: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %Cpp.ref.loc9: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %ConditionallyExplicitFalse.ref.loc9: type = name_ref ConditionallyExplicitFalse, imports.%ConditionallyExplicit.decl.7f9e91.1 [concrete = constants.%ConditionallyExplicit.6a9921.1]
|
||||
// CHECK:STDOUT: %.loc9_5.1: ref %ConditionallyExplicit.6a9921.1 = temporary_storage
|
||||
// CHECK:STDOUT: %ConditionallyExplicitFalse.ref.loc9: type = name_ref ConditionallyExplicitFalse, imports.%ConditionallyExplicit.decl.6be [concrete = constants.%ConditionallyExplicit.d2a]
|
||||
// CHECK:STDOUT: %.loc9_5.1: ref %ConditionallyExplicit.d2a = temporary_storage
|
||||
// CHECK:STDOUT: %.loc9_3: ref %Source = value_as_ref %s.ref.loc9
|
||||
// CHECK:STDOUT: %addr.loc9_5.1: %ptr.f95 = addr_of %.loc9_3
|
||||
// CHECK:STDOUT: %addr.loc9_5.2: %ptr.d63e0a.1 = addr_of %.loc9_5.1
|
||||
// CHECK:STDOUT: %addr.loc9_5.1: %ptr.71b = addr_of %.loc9_3
|
||||
// CHECK:STDOUT: %addr.loc9_5.2: %ptr.c11 = addr_of %.loc9_5.1
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.call.loc9: init %empty_tuple.type = call imports.%ConditionallyExplicit__carbon_thunk.decl.3d8900.1(%addr.loc9_5.1, %addr.loc9_5.2)
|
||||
// CHECK:STDOUT: %.loc9_5.2: init %ConditionallyExplicit.6a9921.1 to %.loc9_5.1 = mark_in_place_init %ConditionallyExplicit__carbon_thunk.call.loc9
|
||||
// CHECK:STDOUT: %.loc9_5.3: init %ConditionallyExplicit.6a9921.1 = converted %s.ref.loc9, %.loc9_5.2
|
||||
// CHECK:STDOUT: %.loc9_5.4: ref %ConditionallyExplicit.6a9921.1 = temporary %.loc9_5.1, %.loc9_5.3
|
||||
// CHECK:STDOUT: %.loc9_5.2: init %ConditionallyExplicit.d2a to %.loc9_5.1 = mark_in_place_init %ConditionallyExplicit__carbon_thunk.call.loc9
|
||||
// CHECK:STDOUT: %.loc9_5.3: init %ConditionallyExplicit.d2a = converted %s.ref.loc9, %.loc9_5.2
|
||||
// CHECK:STDOUT: %.loc9_5.4: ref %ConditionallyExplicit.d2a = temporary %.loc9_5.1, %.loc9_5.3
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.Op.bound.loc9: <bound method> = bound_method %.loc9_5.4, constants.%ConditionallyExplicit.Op.cc70d5.1
|
||||
// CHECK:STDOUT: %Op.ref.loc9: %ConditionallyExplicit.cpp_destructor.type.6ce8c4.1 = name_ref Op, imports.%ConditionallyExplicit.cpp_destructor.decl.6e607d.1 [concrete = constants.%ConditionallyExplicit.cpp_destructor.1ad69a.1]
|
||||
@@ -446,15 +446,15 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %Cpp.ref.loc15: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %ConditionallyExplicitTrue.ref: type = name_ref ConditionallyExplicitTrue, imports.%ConditionallyExplicit.decl.7f9e91.2 [concrete = constants.%ConditionallyExplicit.6a9921.2]
|
||||
// CHECK:STDOUT: %.loc15_5.1: ref %ConditionallyExplicit.6a9921.2 = temporary_storage
|
||||
// CHECK:STDOUT: %ConditionallyExplicitTrue.ref: type = name_ref ConditionallyExplicitTrue, imports.%ConditionallyExplicit.decl.80b [concrete = constants.%ConditionallyExplicit.717]
|
||||
// CHECK:STDOUT: %.loc15_5.1: ref %ConditionallyExplicit.717 = temporary_storage
|
||||
// CHECK:STDOUT: %.loc15_3: ref %Source = value_as_ref %s.ref
|
||||
// CHECK:STDOUT: %addr.loc15_5.1: %ptr.f95 = addr_of %.loc15_3
|
||||
// CHECK:STDOUT: %addr.loc15_5.2: %ptr.d63e0a.2 = addr_of %.loc15_5.1
|
||||
// CHECK:STDOUT: %addr.loc15_5.1: %ptr.71b = addr_of %.loc15_3
|
||||
// CHECK:STDOUT: %addr.loc15_5.2: %ptr.6d5 = addr_of %.loc15_5.1
|
||||
// CHECK:STDOUT: %ConditionallyExplicit__carbon_thunk.call: init %empty_tuple.type = call imports.%ConditionallyExplicit__carbon_thunk.decl.3d8900.2(%addr.loc15_5.1, %addr.loc15_5.2)
|
||||
// CHECK:STDOUT: %.loc15_5.2: init %ConditionallyExplicit.6a9921.2 to %.loc15_5.1 = mark_in_place_init %ConditionallyExplicit__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc15_5.3: init %ConditionallyExplicit.6a9921.2 = converted %s.ref, %.loc15_5.2
|
||||
// CHECK:STDOUT: %.loc15_5.4: ref %ConditionallyExplicit.6a9921.2 = temporary %.loc15_5.1, %.loc15_5.3
|
||||
// CHECK:STDOUT: %.loc15_5.2: init %ConditionallyExplicit.717 to %.loc15_5.1 = mark_in_place_init %ConditionallyExplicit__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc15_5.3: init %ConditionallyExplicit.717 = converted %s.ref, %.loc15_5.2
|
||||
// CHECK:STDOUT: %.loc15_5.4: ref %ConditionallyExplicit.717 = temporary %.loc15_5.1, %.loc15_5.3
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.Op.bound: <bound method> = bound_method %.loc15_5.4, constants.%ConditionallyExplicit.Op.cc70d5.2
|
||||
// CHECK:STDOUT: %Op.ref: %ConditionallyExplicit.cpp_destructor.type.6ce8c4.2 = name_ref Op, imports.%ConditionallyExplicit.cpp_destructor.decl.6e607d.2 [concrete = constants.%ConditionallyExplicit.cpp_destructor.1ad69a.2]
|
||||
@@ -463,31 +463,31 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ConversionNotExplicit(%s.param: %ConditionallyExplicit.6a9921.1) {
|
||||
// CHECK:STDOUT: fn @ConversionNotExplicit(%s.param: %ConditionallyExplicit.d2a) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref.loc21: %ConditionallyExplicit.6a9921.1 = name_ref s, %s
|
||||
// CHECK:STDOUT: %s.ref.loc21: %ConditionallyExplicit.d2a = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc21_13: type = splice_block %Dest.ref.loc21 [concrete = constants.%Dest] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc21: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref.loc21: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.bound.loc21: <bound method> = bound_method %s.ref.loc21, imports.%ConditionallyExplicit.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc21_21.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc21: %ptr.7c0 = addr_of %.loc21_21.1
|
||||
// CHECK:STDOUT: %addr.loc21: %ptr.246 = addr_of %.loc21_21.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call.loc21: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl(%s.ref.loc21, %addr.loc21)
|
||||
// CHECK:STDOUT: %.loc21_21.2: init %Dest to %.loc21_21.1 = mark_in_place_init %Dest__carbon_thunk.call.loc21
|
||||
// CHECK:STDOUT: %.loc21_21.3: init %Dest = converted %s.ref.loc21, %.loc21_21.2
|
||||
// CHECK:STDOUT: %.loc21_21.4: ref %Dest = temporary %.loc21_21.1, %.loc21_21.3
|
||||
// CHECK:STDOUT: %.loc21_21.5: %Dest = acquire_value %.loc21_21.4
|
||||
// CHECK:STDOUT: %_: %Dest = value_binding _, %.loc21_21.5
|
||||
// CHECK:STDOUT: %s.ref.loc22: %ConditionallyExplicit.6a9921.1 = name_ref s, %s
|
||||
// CHECK:STDOUT: %s.ref.loc22: %ConditionallyExplicit.d2a = name_ref s, %s
|
||||
// CHECK:STDOUT: %Cpp.ref.loc22: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref.loc22: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.bound.loc22: <bound method> = bound_method %s.ref.loc22, imports.%ConditionallyExplicit.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc22_5.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc22: %ptr.7c0 = addr_of %.loc22_5.1
|
||||
// CHECK:STDOUT: %addr.loc22: %ptr.246 = addr_of %.loc22_5.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call.loc22: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl(%s.ref.loc22, %addr.loc22)
|
||||
// CHECK:STDOUT: %.loc22_5.2: init %Dest to %.loc22_5.1 = mark_in_place_init %Dest__carbon_thunk.call.loc22
|
||||
// CHECK:STDOUT: %.loc22_5.3: init %Dest = converted %s.ref.loc22, %.loc22_5.2
|
||||
@@ -504,14 +504,14 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ConversionExplicit(%s.param: %ConditionallyExplicit.6a9921.1) {
|
||||
// CHECK:STDOUT: fn @ConversionExplicit(%s.param: %ConditionallyExplicit.d2a) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %ConditionallyExplicit.6a9921.1 = name_ref s, %s
|
||||
// CHECK:STDOUT: %s.ref: %ConditionallyExplicit.d2a = name_ref s, %s
|
||||
// CHECK:STDOUT: %Cpp.ref.loc28: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%ConditionallyExplicit.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc28_5.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc28_5.1
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc28_5.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc28_5.2: init %Dest to %.loc28_5.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc28_5.3: init %Dest = converted %s.ref, %.loc28_5.2
|
||||
@@ -528,14 +528,14 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Source: type = class_type @Source [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.6a9921.1: type = class_type @ConditionallyExplicit.1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.dc5fb9.1: type = pattern_type %ConditionallyExplicit.6a9921.1 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.6a9921.2: type = class_type @ConditionallyExplicit.2 [concrete]
|
||||
// CHECK:STDOUT: %Dest.058: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest.058 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.717: type = class_type @ConditionallyExplicit.1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e0f: type = pattern_type %ConditionallyExplicit.717 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.d2a: type = class_type @ConditionallyExplicit.2 [concrete]
|
||||
// CHECK:STDOUT: %Dest.b15: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest.b15 [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.type: type = fn_type @ConditionallyExplicit.cpp_operator [concrete]
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator: %ConditionallyExplicit.cpp_operator.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.7c0: type = ptr_type %Dest.058 [concrete]
|
||||
// CHECK:STDOUT: %ptr.246: type = ptr_type %Dest.b15 [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.type: type = fn_type @Dest__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk: %Dest__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest.cpp_destructor.type: type = fn_type @Dest.cpp_destructor [concrete]
|
||||
@@ -547,15 +547,15 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
|
||||
// CHECK:STDOUT: .Source = %Source.decl
|
||||
// CHECK:STDOUT: .ConditionallyExplicitTrue = %ConditionallyExplicit.decl.7f9e91.1
|
||||
// CHECK:STDOUT: .ConditionallyExplicitFalse = %ConditionallyExplicit.decl.7f9e91.2
|
||||
// CHECK:STDOUT: .ConditionallyExplicitTrue = %ConditionallyExplicit.decl.80b
|
||||
// CHECK:STDOUT: .ConditionallyExplicitFalse = %ConditionallyExplicit.decl.6be
|
||||
// CHECK:STDOUT: .Dest = %Dest.decl
|
||||
// CHECK:STDOUT: import Cpp//...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Source.decl: type = class_decl @Source [concrete = constants.%Source] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.7f9e91.1: type = class_decl @ConditionallyExplicit.1 [concrete = constants.%ConditionallyExplicit.6a9921.1] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.7f9e91.2: type = class_decl @ConditionallyExplicit.2 [concrete = constants.%ConditionallyExplicit.6a9921.2] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.058] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.80b: type = class_decl @ConditionallyExplicit.1 [concrete = constants.%ConditionallyExplicit.717] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.decl.6be: type = class_decl @ConditionallyExplicit.2 [concrete = constants.%ConditionallyExplicit.d2a] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.b15] {} {}
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.decl: %ConditionallyExplicit.cpp_operator.type = fn_decl @ConditionallyExplicit.cpp_operator [concrete = constants.%ConditionallyExplicit.cpp_operator] {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -576,37 +576,37 @@ fn ConversionExplicit(s: Cpp.ConditionallyExplicitFalse) {
|
||||
// CHECK:STDOUT: fn @ConstructorExplicit(%s.param: %Source) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.dc5fb9.1 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.e0f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %ConditionallyExplicitTrue.ref [concrete = constants.%ConditionallyExplicit.6a9921.1] {
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %ConditionallyExplicitTrue.ref [concrete = constants.%ConditionallyExplicit.717] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc15: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %ConditionallyExplicitTrue.ref: type = name_ref ConditionallyExplicitTrue, imports.%ConditionallyExplicit.decl.7f9e91.1 [concrete = constants.%ConditionallyExplicit.6a9921.1]
|
||||
// CHECK:STDOUT: %ConditionallyExplicitTrue.ref: type = name_ref ConditionallyExplicitTrue, imports.%ConditionallyExplicit.decl.80b [concrete = constants.%ConditionallyExplicit.717]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15_42: %ConditionallyExplicit.6a9921.1 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %ConditionallyExplicit.6a9921.1 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc15_42: %ConditionallyExplicit.717 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %ConditionallyExplicit.717 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ConversionExplicit(%s.param: %ConditionallyExplicit.6a9921.2) {
|
||||
// CHECK:STDOUT: fn @ConversionExplicit(%s.param: %ConditionallyExplicit.d2a) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %ConditionallyExplicit.6a9921.2 = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc21_13: type = splice_block %Dest.ref [concrete = constants.%Dest.058] {
|
||||
// CHECK:STDOUT: %s.ref: %ConditionallyExplicit.d2a = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc21_13: type = splice_block %Dest.ref [concrete = constants.%Dest.b15] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc21: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.058]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.b15]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ConditionallyExplicit.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%ConditionallyExplicit.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc21_21.1: ref %Dest.058 = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc21_21.1
|
||||
// CHECK:STDOUT: %.loc21_21.1: ref %Dest.b15 = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc21_21.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc21_21.2: init %Dest.058 to %.loc21_21.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc21_21.3: init %Dest.058 = converted %s.ref, %.loc21_21.2
|
||||
// CHECK:STDOUT: %.loc21_21.4: ref %Dest.058 = temporary %.loc21_21.1, %.loc21_21.3
|
||||
// CHECK:STDOUT: %.loc21_21.5: %Dest.058 = acquire_value %.loc21_21.4
|
||||
// CHECK:STDOUT: %_: %Dest.058 = value_binding _, %.loc21_21.5
|
||||
// CHECK:STDOUT: %.loc21_21.2: init %Dest.b15 to %.loc21_21.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc21_21.3: init %Dest.b15 = converted %s.ref, %.loc21_21.2
|
||||
// CHECK:STDOUT: %.loc21_21.4: ref %Dest.b15 = temporary %.loc21_21.1, %.loc21_21.3
|
||||
// CHECK:STDOUT: %.loc21_21.5: %Dest.b15 = acquire_value %.loc21_21.4
|
||||
// CHECK:STDOUT: %_: %Dest.b15 = value_binding _, %.loc21_21.5
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Dest.Op.bound: <bound method> = bound_method %.loc21_21.4, constants.%Dest.Op
|
||||
// CHECK:STDOUT: %Op.ref: %Dest.cpp_destructor.type = name_ref Op, imports.%Dest.cpp_destructor.decl [concrete = constants.%Dest.cpp_destructor]
|
||||
|
||||
+41
-41
@@ -200,31 +200,31 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copyable.Copyable.type: type = fn_type @Copyable.Copyable [concrete]
|
||||
// CHECK:STDOUT: %Copyable.Copyable: %Copyable.Copyable.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %const.bd1: type = const_type %Copyable [concrete]
|
||||
// CHECK:STDOUT: %ptr.f7a: type = ptr_type %const.bd1 [concrete]
|
||||
// CHECK:STDOUT: %ptr.e16: type = ptr_type %Copyable [concrete]
|
||||
// CHECK:STDOUT: %const.151: type = const_type %Copyable [concrete]
|
||||
// CHECK:STDOUT: %ptr.765: type = ptr_type %const.151 [concrete]
|
||||
// CHECK:STDOUT: %ptr.fc9: type = ptr_type %Copyable [concrete]
|
||||
// CHECK:STDOUT: %Copyable__carbon_thunk.type: type = fn_type @Copyable__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Copyable__carbon_thunk: %Copyable__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Copyable.Op.type: type = fn_type @Copyable.Op [concrete]
|
||||
// CHECK:STDOUT: %Copyable.Op: %Copyable.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %custom_witness.b8df63.1: <witness> = custom_witness (%Copyable.Op), @Copy [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.af5: %Copy.type = facet_value %Copyable, (%custom_witness.b8df63.1) [concrete]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.b43: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.af5) [concrete]
|
||||
// CHECK:STDOUT: %.10e: type = fn_type_with_self_type %Copy.WithSelf.Op.type.b43, %Copy.facet.af5 [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.0af: %Copy.type = facet_value %Copyable, (%custom_witness.b8df63.1) [concrete]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.b36: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.0af) [concrete]
|
||||
// CHECK:STDOUT: %.8c1: type = fn_type_with_self_type %Copy.WithSelf.Op.type.b36, %Copy.facet.0af [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy: type = class_type @ExplicitCopy [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy.ExplicitCopy.type: type = fn_type @ExplicitCopy.ExplicitCopy [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy.ExplicitCopy: %ExplicitCopy.ExplicitCopy.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %const.8e8: type = const_type %ExplicitCopy [concrete]
|
||||
// CHECK:STDOUT: %ptr.85a: type = ptr_type %const.8e8 [concrete]
|
||||
// CHECK:STDOUT: %ptr.f9f: type = ptr_type %ExplicitCopy [concrete]
|
||||
// CHECK:STDOUT: %const.869: type = const_type %ExplicitCopy [concrete]
|
||||
// CHECK:STDOUT: %ptr.39a: type = ptr_type %const.869 [concrete]
|
||||
// CHECK:STDOUT: %ptr.82f: type = ptr_type %ExplicitCopy [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy__carbon_thunk.type: type = fn_type @ExplicitCopy__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy__carbon_thunk: %ExplicitCopy__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy.Op.type: type = fn_type @ExplicitCopy.Op [concrete]
|
||||
// CHECK:STDOUT: %ExplicitCopy.Op: %ExplicitCopy.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %custom_witness.b8df63.2: <witness> = custom_witness (%ExplicitCopy.Op), @Copy [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.4c2: %Copy.type = facet_value %ExplicitCopy, (%custom_witness.b8df63.2) [concrete]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.4db: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.4c2) [concrete]
|
||||
// CHECK:STDOUT: %.3e7: type = fn_type_with_self_type %Copy.WithSelf.Op.type.4db, %Copy.facet.4c2 [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.b31: %Copy.type = facet_value %ExplicitCopy, (%custom_witness.b8df63.2) [concrete]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.baa: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.b31) [concrete]
|
||||
// CHECK:STDOUT: %.fcd: type = fn_type_with_self_type %Copy.WithSelf.Op.type.baa, %Copy.facet.b31 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -254,16 +254,16 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %Copyable = name_ref c, %c
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %impl.elem0: %.10e = impl_witness_access constants.%custom_witness.b8df63.1, element0 [concrete = constants.%Copyable.Op]
|
||||
// CHECK:STDOUT: %impl.elem0: %.8c1 = impl_witness_access constants.%custom_witness.b8df63.1, element0 [concrete = constants.%Copyable.Op]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %.loc8_10.1: ref %Copyable = temporary_storage
|
||||
// CHECK:STDOUT: %Op.ref: %Copyable.Copyable.type = name_ref Op, imports.%Copyable.Copyable.decl [concrete = constants.%Copyable.Copyable]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %.loc8_10.2: ref %Copyable = value_as_ref %c.ref
|
||||
// CHECK:STDOUT: %addr.loc8_10.1: %ptr.e16 = addr_of %.loc8_10.2
|
||||
// CHECK:STDOUT: %.loc8_10.3: %ptr.f7a = as_compatible %addr.loc8_10.1
|
||||
// CHECK:STDOUT: %.loc8_10.4: %ptr.f7a = converted %addr.loc8_10.1, %.loc8_10.3
|
||||
// CHECK:STDOUT: %addr.loc8_10.2: %ptr.e16 = addr_of %.loc6_40.1
|
||||
// CHECK:STDOUT: %addr.loc8_10.1: %ptr.fc9 = addr_of %.loc8_10.2
|
||||
// CHECK:STDOUT: %.loc8_10.3: %ptr.765 = as_compatible %addr.loc8_10.1
|
||||
// CHECK:STDOUT: %.loc8_10.4: %ptr.765 = converted %addr.loc8_10.1, %.loc8_10.3
|
||||
// CHECK:STDOUT: %addr.loc8_10.2: %ptr.fc9 = addr_of %.loc6_40.1
|
||||
// CHECK:STDOUT: %Copyable__carbon_thunk.call: init %empty_tuple.type = call imports.%Copyable__carbon_thunk.decl(%.loc8_10.4, %addr.loc8_10.2)
|
||||
// CHECK:STDOUT: %.loc8_10.5: init %Copyable to %.loc6_40.1 = mark_in_place_init %Copyable__carbon_thunk.call
|
||||
// CHECK:STDOUT: return %.loc8_10.5 to %return.param
|
||||
@@ -273,16 +273,16 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %ExplicitCopy = name_ref c, %c
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %impl.elem0: %.3e7 = impl_witness_access constants.%custom_witness.b8df63.2, element0 [concrete = constants.%ExplicitCopy.Op]
|
||||
// CHECK:STDOUT: %impl.elem0: %.fcd = impl_witness_access constants.%custom_witness.b8df63.2, element0 [concrete = constants.%ExplicitCopy.Op]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %.loc14_10.1: ref %ExplicitCopy = temporary_storage
|
||||
// CHECK:STDOUT: %Op.ref: %ExplicitCopy.ExplicitCopy.type = name_ref Op, imports.%ExplicitCopy.ExplicitCopy.decl [concrete = constants.%ExplicitCopy.ExplicitCopy]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %.loc14_10.2: ref %ExplicitCopy = value_as_ref %c.ref
|
||||
// CHECK:STDOUT: %addr.loc14_10.1: %ptr.f9f = addr_of %.loc14_10.2
|
||||
// CHECK:STDOUT: %.loc14_10.3: %ptr.85a = as_compatible %addr.loc14_10.1
|
||||
// CHECK:STDOUT: %.loc14_10.4: %ptr.85a = converted %addr.loc14_10.1, %.loc14_10.3
|
||||
// CHECK:STDOUT: %addr.loc14_10.2: %ptr.f9f = addr_of %.loc12_48.1
|
||||
// CHECK:STDOUT: %addr.loc14_10.1: %ptr.82f = addr_of %.loc14_10.2
|
||||
// CHECK:STDOUT: %.loc14_10.3: %ptr.39a = as_compatible %addr.loc14_10.1
|
||||
// CHECK:STDOUT: %.loc14_10.4: %ptr.39a = converted %addr.loc14_10.1, %.loc14_10.3
|
||||
// CHECK:STDOUT: %addr.loc14_10.2: %ptr.82f = addr_of %.loc12_48.1
|
||||
// CHECK:STDOUT: %ExplicitCopy__carbon_thunk.call: init %empty_tuple.type = call imports.%ExplicitCopy__carbon_thunk.decl(%.loc14_10.4, %addr.loc14_10.2)
|
||||
// CHECK:STDOUT: %.loc14_10.5: init %ExplicitCopy to %.loc12_48.1 = mark_in_place_init %ExplicitCopy__carbon_thunk.call
|
||||
// CHECK:STDOUT: return %.loc14_10.5 to %return.param
|
||||
@@ -301,17 +301,17 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
|
||||
// CHECK:STDOUT: %Copyable.Op.type: type = fn_type @Copyable.Op [concrete]
|
||||
// CHECK:STDOUT: %Copyable.Op: %Copyable.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %custom_witness.b8d: <witness> = custom_witness (%Copyable.Op), @Copy.1 [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.af5: %Copy.type.62b = facet_value %Copyable, (%custom_witness.b8d) [concrete]
|
||||
// CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy, @Copy.loc6(%Copy.facet.af5) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.5b3: type = class_type @Wrap, @Wrap(%Copy.facet.af5) [concrete]
|
||||
// CHECK:STDOUT: %ptr.6b6: type = ptr_type %Wrap.5b3 [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.54f: <witness> = impl_witness imports.%Copy.impl_witness_table.760, @ptr.as.Copy.impl(%Wrap.5b3) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.24f: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%Wrap.5b3) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.e89: %ptr.as.Copy.impl.Op.type.24f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.a96: %Copy.type.62b = facet_value %ptr.6b6, (%Copy.impl_witness.54f) [concrete]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.166: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.a96) [concrete]
|
||||
// CHECK:STDOUT: %.d7b: type = fn_type_with_self_type %Copy.WithSelf.Op.type.166, %Copy.facet.a96 [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.e89, @ptr.as.Copy.impl.Op(%Wrap.5b3) [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.0af: %Copy.type.62b = facet_value %Copyable, (%custom_witness.b8d) [concrete]
|
||||
// CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy, @Copy.loc6(%Copy.facet.0af) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.cb4: type = class_type @Wrap, @Wrap(%Copy.facet.0af) [concrete]
|
||||
// CHECK:STDOUT: %ptr.727: type = ptr_type %Wrap.cb4 [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.b80: <witness> = impl_witness imports.%Copy.impl_witness_table.760, @ptr.as.Copy.impl(%Wrap.cb4) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.b3b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%Wrap.cb4) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.b43: %ptr.as.Copy.impl.Op.type.b3b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.86d: %Copy.type.62b = facet_value %ptr.727, (%Copy.impl_witness.b80) [concrete]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.111: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.86d) [concrete]
|
||||
// CHECK:STDOUT: %.378: type = fn_type_with_self_type %Copy.WithSelf.Op.type.111, %Copy.facet.86d [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.b43, @ptr.as.Copy.impl.Op(%Wrap.cb4) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -324,22 +324,22 @@ fn EqualWitnesses(p: Wrap(Cpp.Copyable)*) -> Wrap(Cpp.Copyable)* {
|
||||
// CHECK:STDOUT: %Copy.ref: %Copy.type.543 = name_ref Copy, file.%Copy.decl [concrete = constants.%Copy]
|
||||
// CHECK:STDOUT: %c.ref: %Copyable = name_ref c, %c
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type.62b = facet_value constants.%Copyable, (constants.%custom_witness.b8d) [concrete = constants.%Copy.facet.af5]
|
||||
// CHECK:STDOUT: %.loc12: %Copy.type.62b = converted constants.%Copyable, %Copy.facet [concrete = constants.%Copy.facet.af5]
|
||||
// CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy.ref, @Copy.loc6(constants.%Copy.facet.af5) [concrete = constants.%Copy.specific_fn]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type.62b = facet_value constants.%Copyable, (constants.%custom_witness.b8d) [concrete = constants.%Copy.facet.0af]
|
||||
// CHECK:STDOUT: %.loc12: %Copy.type.62b = converted constants.%Copyable, %Copy.facet [concrete = constants.%Copy.facet.0af]
|
||||
// CHECK:STDOUT: %Copy.specific_fn: <specific function> = specific_function %Copy.ref, @Copy.loc6(constants.%Copy.facet.0af) [concrete = constants.%Copy.specific_fn]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Copy.call: init %Copyable to %.loc10_34.1 = call %Copy.specific_fn(%c.ref)
|
||||
// CHECK:STDOUT: return %Copy.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @EqualWitnesses(%p.param: %ptr.6b6) -> out %return.param: %ptr.6b6 {
|
||||
// CHECK:STDOUT: fn @EqualWitnesses(%p.param: %ptr.727) -> out %return.param: %ptr.727 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: %ptr.6b6 = name_ref p, %p
|
||||
// CHECK:STDOUT: %impl.elem0: %.d7b = impl_witness_access constants.%Copy.impl_witness.54f, element0 [concrete = constants.%ptr.as.Copy.impl.Op.e89]
|
||||
// CHECK:STDOUT: %p.ref: %ptr.727 = name_ref p, %p
|
||||
// CHECK:STDOUT: %impl.elem0: %.378 = impl_witness_access constants.%Copy.impl_witness.b80, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b43]
|
||||
// CHECK:STDOUT: %bound_method.loc20_10.1: <bound method> = bound_method %p.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @ptr.as.Copy.impl.Op(constants.%Wrap.5b3) [concrete = constants.%ptr.as.Copy.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @ptr.as.Copy.impl.Op(constants.%Wrap.cb4) [concrete = constants.%ptr.as.Copy.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc20_10.2: <bound method> = bound_method %p.ref, %specific_fn
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.call: init %ptr.6b6 = call %bound_method.loc20_10.2(%p.ref)
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.call: init %ptr.727 = call %bound_method.loc20_10.2(%p.ref)
|
||||
// CHECK:STDOUT: return %ptr.as.Copy.impl.Op.call
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+26
-26
@@ -209,7 +209,7 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %PublicDestructor: type = class_type @PublicDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.512: type = pattern_type %PublicDestructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.c53: type = pattern_type %PublicDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %PublicDestructor.val: %PublicDestructor = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
@@ -222,11 +222,11 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %TrivialDestroy.type: type = fn_type @TrivialDestroy [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestroy: %TrivialDestroy.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestructor: type = class_type @TrivialDestructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.2d3: type = pattern_type %TrivialDestructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.322: type = pattern_type %TrivialDestructor [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestructor.val: %TrivialDestructor = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestructor.cpp_destructor.type: type = fn_type @TrivialDestructor.cpp_destructor [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestructor.cpp_destructor: %TrivialDestructor.cpp_destructor.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Destroy.facet.c9e: %Destroy.type = facet_value %TrivialDestructor, (%custom_witness.cc4) [concrete]
|
||||
// CHECK:STDOUT: %Destroy.facet.b4f: %Destroy.type = facet_value %TrivialDestructor, (%custom_witness.cc4) [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestructor.Op.type: type = fn_type @TrivialDestructor.Op [concrete]
|
||||
// CHECK:STDOUT: %TrivialDestructor.Op: %TrivialDestructor.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -247,8 +247,8 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.decl: %Destroy.WithSelf.Op.type.12b = fn_decl @Destroy.WithSelf.Op [symbolic = @Destroy.WithSelf.%Destroy.WithSelf.Op (constants.%Destroy.WithSelf.Op.73c)] {} {}
|
||||
// CHECK:STDOUT: %TrivialDestructor.decl: type = class_decl @TrivialDestructor [concrete = constants.%TrivialDestructor] {} {}
|
||||
// CHECK:STDOUT: %TrivialDestructor.cpp_destructor.decl: %TrivialDestructor.cpp_destructor.type = fn_decl @TrivialDestructor.cpp_destructor [concrete = constants.%TrivialDestructor.cpp_destructor] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.2d3 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.2d3 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.322 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.322 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: ref %TrivialDestructor = ref_param call_param0
|
||||
// CHECK:STDOUT: %self: ref %TrivialDestructor = ref_binding self, %self.param
|
||||
@@ -291,8 +291,8 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: fn @PublicDestroy() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.512 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.512 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.c53 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.c53 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %PublicDestructor = var %a.var_patt
|
||||
// CHECK:STDOUT: %.loc11_41.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
@@ -314,8 +314,8 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: fn @TrivialDestroy() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.2d3 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.2d3 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.322 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.322 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %TrivialDestructor = var %a.var_patt
|
||||
// CHECK:STDOUT: %.loc15_42.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
@@ -328,8 +328,8 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %TrivialDestructor = ref_binding a, %a.var
|
||||
// CHECK:STDOUT: %TrivialDestructor.Op.decl: %TrivialDestructor.Op.type = fn_decl @TrivialDestructor.Op [concrete = constants.%TrivialDestructor.Op] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.2d3 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.2d3 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.322 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.322 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: ref %TrivialDestructor = ref_param call_param0
|
||||
// CHECK:STDOUT: %self: ref %TrivialDestructor = ref_binding self, %self.param
|
||||
@@ -343,7 +343,7 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @TrivialDestructor.cpp_destructor(%self.param: ref %TrivialDestructor) = "no_op";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @TrivialDestructor.Op(%self.param: ref %TrivialDestructor) [thunk imports.%TrivialDestructor.cpp_destructor.decl for imports.%Destroy.WithSelf.Op.decl, @Destroy.WithSelf.Op(constants.%Destroy.facet.c9e)] {
|
||||
// CHECK:STDOUT: fn @TrivialDestructor.Op(%self.param: ref %TrivialDestructor) [thunk imports.%TrivialDestructor.cpp_destructor.decl for imports.%Destroy.WithSelf.Op.decl, @Destroy.WithSelf.Op(constants.%Destroy.facet.b4f)] {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Op.ref: %TrivialDestructor.cpp_destructor.type = name_ref Op, imports.%TrivialDestructor.cpp_destructor.decl [concrete = constants.%TrivialDestructor.cpp_destructor]
|
||||
// CHECK:STDOUT: %TrivialDestructor.cpp_destructor.bound: <bound method> = bound_method %self.param, %Op.ref
|
||||
@@ -358,13 +358,13 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %ProtectedDestructor: type = class_type @ProtectedDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.ebf: type = struct_type {.base: %ProtectedDestructor} [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.233: type = struct_type {.base: %ProtectedDestructor} [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e25: type = pattern_type %Derived [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.a40: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.f5e: type = struct_type {.base: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %struct: %struct_type.base.f5e = struct_value (%empty_struct.a40) [concrete]
|
||||
// CHECK:STDOUT: %.46a: type = partial_type %ProtectedDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.73e: %.46a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.1d0: type = partial_type %ProtectedDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.724: %.1d0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ProtectedDestructor.val: %ProtectedDestructor = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Derived.val: %Derived = struct_value (%ProtectedDestructor.val) [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type.af7ec0.2: type = fn_type @Destroy.Op.loc20_3.2 [concrete]
|
||||
@@ -380,9 +380,9 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %a.var: ref %Derived = var %a.var_patt
|
||||
// CHECK:STDOUT: %.loc20_37.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct.a40]
|
||||
// CHECK:STDOUT: %.loc20_38.1: %struct_type.base.f5e = struct_literal (%.loc20_37.1) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc20_38.2: ref %.46a = class_element_access %a.var, element0
|
||||
// CHECK:STDOUT: %.loc20_37.2: init %.46a to %.loc20_38.2 = class_init () [concrete = constants.%empty_struct.73e]
|
||||
// CHECK:STDOUT: %.loc20_38.3: init %.46a = converted %.loc20_37.1, %.loc20_37.2 [concrete = constants.%empty_struct.73e]
|
||||
// CHECK:STDOUT: %.loc20_38.2: ref %.1d0 = class_element_access %a.var, element0
|
||||
// CHECK:STDOUT: %.loc20_37.2: init %.1d0 to %.loc20_38.2 = class_init () [concrete = constants.%empty_struct.724]
|
||||
// CHECK:STDOUT: %.loc20_38.3: init %.1d0 = converted %.loc20_37.1, %.loc20_37.2 [concrete = constants.%empty_struct.724]
|
||||
// CHECK:STDOUT: %.loc20_38.4: init %ProtectedDestructor = as_compatible %.loc20_38.3 [concrete = constants.%ProtectedDestructor.val]
|
||||
// CHECK:STDOUT: %.loc20_38.5: init %Derived to %a.var = class_init (%.loc20_38.4) [concrete = constants.%Derived.val]
|
||||
// CHECK:STDOUT: %.loc20_3: init %Derived = converted %.loc20_38.1, %.loc20_38.5 [concrete = constants.%Derived.val]
|
||||
@@ -394,7 +394,7 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Destroy.Op.loc20_3.1(%self.param: ref %struct_type.base.ebf) {
|
||||
// CHECK:STDOUT: fn @Destroy.Op.loc20_3.1(%self.param: ref %struct_type.base.233) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -411,13 +411,13 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %PrivateDestructor: type = class_type @PrivateDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.59d: type = struct_type {.base: %PrivateDestructor} [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.dea: type = struct_type {.base: %PrivateDestructor} [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.377: type = pattern_type %Derived [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.a40: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.f5e: type = struct_type {.base: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %struct: %struct_type.base.f5e = struct_value (%empty_struct.a40) [concrete]
|
||||
// CHECK:STDOUT: %.8c2: type = partial_type %PrivateDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.441: %.8c2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.ddb: type = partial_type %PrivateDestructor [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.0b0: %.ddb = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %PrivateDestructor.val: %PrivateDestructor = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Derived.val: %Derived = struct_value (%PrivateDestructor.val) [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type.af7ec0.2: type = fn_type @Destroy.Op.loc21_3.2 [concrete]
|
||||
@@ -433,9 +433,9 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: %a.var: ref %Derived = var %a.var_patt
|
||||
// CHECK:STDOUT: %.loc21_37.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct.a40]
|
||||
// CHECK:STDOUT: %.loc21_38.1: %struct_type.base.f5e = struct_literal (%.loc21_37.1) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc21_38.2: ref %.8c2 = class_element_access %a.var, element0
|
||||
// CHECK:STDOUT: %.loc21_37.2: init %.8c2 to %.loc21_38.2 = class_init () [concrete = constants.%empty_struct.441]
|
||||
// CHECK:STDOUT: %.loc21_38.3: init %.8c2 = converted %.loc21_37.1, %.loc21_37.2 [concrete = constants.%empty_struct.441]
|
||||
// CHECK:STDOUT: %.loc21_38.2: ref %.ddb = class_element_access %a.var, element0
|
||||
// CHECK:STDOUT: %.loc21_37.2: init %.ddb to %.loc21_38.2 = class_init () [concrete = constants.%empty_struct.0b0]
|
||||
// CHECK:STDOUT: %.loc21_38.3: init %.ddb = converted %.loc21_37.1, %.loc21_37.2 [concrete = constants.%empty_struct.0b0]
|
||||
// CHECK:STDOUT: %.loc21_38.4: init %PrivateDestructor = as_compatible %.loc21_38.3 [concrete = constants.%PrivateDestructor.val]
|
||||
// CHECK:STDOUT: %.loc21_38.5: init %Derived to %a.var = class_init (%.loc21_38.4) [concrete = constants.%Derived.val]
|
||||
// CHECK:STDOUT: %.loc21_3: init %Derived = converted %.loc21_38.1, %.loc21_38.5 [concrete = constants.%Derived.val]
|
||||
@@ -447,7 +447,7 @@ fn EqualWitnesses(p: Wrap(Cpp.PublicDestructor)*) -> Wrap(Cpp.PublicDestructor)*
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Destroy.Op.loc21_3.1(%self.param: ref %struct_type.base.59d) {
|
||||
// CHECK:STDOUT: fn @Destroy.Op.loc21_3.1(%self.param: ref %struct_type.base.dea) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+106
-106
@@ -417,26 +417,26 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Source: type = class_type @Source [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Dest: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %Source.cpp_operator.type: type = fn_type @Source.cpp_operator [concrete]
|
||||
// CHECK:STDOUT: %Source.cpp_operator: %Source.cpp_operator.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.7c0: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %ptr.246: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.type.2ffc11.1: type = fn_type @Dest__carbon_thunk.1 [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.61ac37.1: %Dest__carbon_thunk.type.2ffc11.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest.cpp_destructor.type: type = fn_type @Dest.cpp_destructor [concrete]
|
||||
// CHECK:STDOUT: %Dest.cpp_destructor: %Dest.cpp_destructor.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest.Op.type: type = fn_type @Dest.Op [concrete]
|
||||
// CHECK:STDOUT: %Dest.Op: %Dest.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %NonConstConversion.ab3: type = class_type @NonConstConversion.1 [concrete]
|
||||
// CHECK:STDOUT: %NonConstConversion.2f9: type = class_type @NonConstConversion.1 [concrete]
|
||||
// CHECK:STDOUT: %NonConstConversion.cpp_operator.type: type = fn_type @NonConstConversion.cpp_operator [concrete]
|
||||
// CHECK:STDOUT: %NonConstConversion.cpp_operator: %NonConstConversion.cpp_operator.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.type.2ffc11.2: type = fn_type @Dest__carbon_thunk.2 [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.61ac37.2: %Dest__carbon_thunk.type.2ffc11.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Source2: type = class_type @Source2 [concrete]
|
||||
// CHECK:STDOUT: %Dest2: type = class_type @Dest2 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.0ca: type = pattern_type %Dest2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.96f: type = ptr_type %Source2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.129: type = ptr_type %Dest2 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.ca0: type = pattern_type %Dest2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.692: type = ptr_type %Source2 [concrete]
|
||||
// CHECK:STDOUT: %ptr.a5d: type = ptr_type %Dest2 [concrete]
|
||||
// CHECK:STDOUT: %Dest2__carbon_thunk.type: type = fn_type @Dest2__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Dest2__carbon_thunk: %Dest2__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest2.cpp_destructor.type: type = fn_type @Dest2.cpp_destructor [concrete]
|
||||
@@ -471,7 +471,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NonConstConversion.decl: type = class_decl @NonConstConversion.1 [concrete = constants.%NonConstConversion.ab3] {} {}
|
||||
// CHECK:STDOUT: %NonConstConversion.decl: type = class_decl @NonConstConversion.1 [concrete = constants.%NonConstConversion.2f9] {} {}
|
||||
// CHECK:STDOUT: %NonConstConversion.cpp_operator.decl: %NonConstConversion.cpp_operator.type = fn_decl @NonConstConversion.cpp_operator [concrete = constants.%NonConstConversion.cpp_operator] {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -499,7 +499,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @UserConversion(%s.param: %Source) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc8_13: type = splice_block %Dest.ref [concrete = constants.%Dest] {
|
||||
@@ -508,7 +508,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Source.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%Source.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc8_21.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc8_21.1
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc8_21.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl.74d7b8.1(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc8_21.2: init %Dest to %.loc8_21.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc8_21.3: init %Dest = converted %s.ref, %.loc8_21.2
|
||||
@@ -523,19 +523,19 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @NonConstConversion.loc12(%s.param: ref %NonConstConversion.ab3) {
|
||||
// CHECK:STDOUT: fn @NonConstConversion.loc12(%s.param: ref %NonConstConversion.2f9) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: ref %NonConstConversion.ab3 = name_ref s, %s
|
||||
// CHECK:STDOUT: %s.ref: ref %NonConstConversion.2f9 = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc14_13: type = splice_block %Dest.ref [concrete = constants.%Dest] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc14: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NonConstConversion.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%NonConstConversion.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc14_21.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc14_21.1
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc14_21.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl.74d7b8.2(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc14_21.2: init %Dest to %.loc14_21.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc14_21.3: init %Dest = converted %s.ref, %.loc14_21.2
|
||||
@@ -552,7 +552,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @ConstructorConversion(%s.param: %Source2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.0ca = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.ca0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %Source2 = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc20_13: type = splice_block %Dest2.ref [concrete = constants.%Dest2] {
|
||||
@@ -561,8 +561,8 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc20_22.1: ref %Dest2 = temporary_storage
|
||||
// CHECK:STDOUT: %.loc20_22.2: ref %Source2 = value_as_ref %s.ref
|
||||
// CHECK:STDOUT: %addr.loc20_22.1: %ptr.96f = addr_of %.loc20_22.2
|
||||
// CHECK:STDOUT: %addr.loc20_22.2: %ptr.129 = addr_of %.loc20_22.1
|
||||
// CHECK:STDOUT: %addr.loc20_22.1: %ptr.692 = addr_of %.loc20_22.2
|
||||
// CHECK:STDOUT: %addr.loc20_22.2: %ptr.a5d = addr_of %.loc20_22.1
|
||||
// CHECK:STDOUT: %Dest2__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest2__carbon_thunk.decl(%addr.loc20_22.1, %addr.loc20_22.2)
|
||||
// CHECK:STDOUT: %.loc20_22.3: init %Dest2 to %.loc20_22.1 = mark_in_place_init %Dest2__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc20_22.4: init %Dest2 = converted %s.ref, %.loc20_22.3
|
||||
@@ -581,8 +581,8 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %NonConstConversion: type = class_type @NonConstConversion [concrete]
|
||||
// CHECK:STDOUT: %Dest.058: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest.058 [concrete]
|
||||
// CHECK:STDOUT: %Dest.b15: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest.b15 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -592,21 +592,21 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: import Cpp//...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NonConstConversion.decl: type = class_decl @NonConstConversion [concrete = constants.%NonConstConversion] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.058] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.b15] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @NonConstConversionTest(%s.param: %NonConstConversion) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %NonConstConversion = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %Dest.ref [concrete = constants.%Dest.058] {
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %Dest.ref [concrete = constants.%Dest.b15] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc15: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.058]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.b15]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15_21: %Dest.058 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %Dest.058 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc15_21: %Dest.b15 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %Dest.b15 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -616,9 +616,9 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Source: type = class_type @Source [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConstructor: type = class_type @InaccessibleConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.abf: type = pattern_type %InaccessibleConstructor [concrete]
|
||||
// CHECK:STDOUT: %ptr.f95: type = ptr_type %Source [concrete]
|
||||
// CHECK:STDOUT: %ptr.ff1: type = ptr_type %InaccessibleConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %InaccessibleConstructor [concrete]
|
||||
// CHECK:STDOUT: %ptr.71b: type = ptr_type %Source [concrete]
|
||||
// CHECK:STDOUT: %ptr.16a: type = ptr_type %InaccessibleConstructor [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConstructor__carbon_thunk.type: type = fn_type @InaccessibleConstructor__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConstructor__carbon_thunk: %InaccessibleConstructor__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConstructor.cpp_destructor.type: type = fn_type @InaccessibleConstructor.cpp_destructor [concrete]
|
||||
@@ -627,10 +627,10 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %InaccessibleConstructor.Op: %InaccessibleConstructor.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConversion: type = class_type @InaccessibleConversion [concrete]
|
||||
// CHECK:STDOUT: %Dest: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConversion.cpp_operator.type: type = fn_type @InaccessibleConversion.cpp_operator [concrete]
|
||||
// CHECK:STDOUT: %InaccessibleConversion.cpp_operator: %InaccessibleConversion.cpp_operator.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.7c0: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %ptr.246: type = ptr_type %Dest [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.type: type = fn_type @Dest__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk: %Dest__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dest.cpp_destructor.type: type = fn_type @Dest.cpp_destructor [concrete]
|
||||
@@ -681,7 +681,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @InaccessibleConstructorTest(%s.param: %Source) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.abf = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.f5d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc16_13: type = splice_block %InaccessibleConstructor.ref [concrete = constants.%InaccessibleConstructor] {
|
||||
@@ -690,8 +690,8 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc16_40.1: ref %InaccessibleConstructor = temporary_storage
|
||||
// CHECK:STDOUT: %.loc16_40.2: ref %Source = value_as_ref %s.ref
|
||||
// CHECK:STDOUT: %addr.loc16_40.1: %ptr.f95 = addr_of %.loc16_40.2
|
||||
// CHECK:STDOUT: %addr.loc16_40.2: %ptr.ff1 = addr_of %.loc16_40.1
|
||||
// CHECK:STDOUT: %addr.loc16_40.1: %ptr.71b = addr_of %.loc16_40.2
|
||||
// CHECK:STDOUT: %addr.loc16_40.2: %ptr.16a = addr_of %.loc16_40.1
|
||||
// CHECK:STDOUT: %InaccessibleConstructor__carbon_thunk.call: init %empty_tuple.type = call imports.%InaccessibleConstructor__carbon_thunk.decl(%addr.loc16_40.1, %addr.loc16_40.2)
|
||||
// CHECK:STDOUT: %.loc16_40.3: init %InaccessibleConstructor to %.loc16_40.1 = mark_in_place_init %InaccessibleConstructor__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc16_40.4: init %InaccessibleConstructor = converted %s.ref, %.loc16_40.3
|
||||
@@ -709,7 +709,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @InaccessibleConversionTest(%s.param: %InaccessibleConversion) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %InaccessibleConversion = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc30_13: type = splice_block %Dest.ref [concrete = constants.%Dest] {
|
||||
@@ -718,7 +718,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %InaccessibleConversion.cpp_operator.bound: <bound method> = bound_method %s.ref, imports.%InaccessibleConversion.cpp_operator.decl
|
||||
// CHECK:STDOUT: %.loc30_21.1: ref %Dest = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.7c0 = addr_of %.loc30_21.1
|
||||
// CHECK:STDOUT: %addr: %ptr.246 = addr_of %.loc30_21.1
|
||||
// CHECK:STDOUT: %Dest__carbon_thunk.call: init %empty_tuple.type = call imports.%Dest__carbon_thunk.decl(%s.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc30_21.2: init %Dest to %.loc30_21.1 = mark_in_place_init %Dest__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc30_21.3: init %Dest = converted %s.ref, %.loc30_21.2
|
||||
@@ -738,10 +738,10 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Source: type = class_type @Source [concrete]
|
||||
// CHECK:STDOUT: %DeletedConstructor: type = class_type @DeletedConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.aa2: type = pattern_type %DeletedConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.216: type = pattern_type %DeletedConstructor [concrete]
|
||||
// CHECK:STDOUT: %DeletedConversion: type = class_type @DeletedConversion [concrete]
|
||||
// CHECK:STDOUT: %Dest.058: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest.058 [concrete]
|
||||
// CHECK:STDOUT: %Dest.b15: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest.b15 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -755,13 +755,13 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Source.decl: type = class_decl @Source [concrete = constants.%Source] {} {}
|
||||
// CHECK:STDOUT: %DeletedConstructor.decl: type = class_decl @DeletedConstructor [concrete = constants.%DeletedConstructor] {} {}
|
||||
// CHECK:STDOUT: %DeletedConversion.decl: type = class_decl @DeletedConversion [concrete = constants.%DeletedConversion] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.058] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.b15] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @DeletedConstructorTest(%s.param: %Source) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.aa2 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.216 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %DeletedConstructor.ref [concrete = constants.%DeletedConstructor] {
|
||||
@@ -776,15 +776,15 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @DeletedConversionTest(%s.param: %DeletedConversion) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %DeletedConversion = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc28_13: type = splice_block %Dest.ref [concrete = constants.%Dest.058] {
|
||||
// CHECK:STDOUT: %.loc28_13: type = splice_block %Dest.ref [concrete = constants.%Dest.b15] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc28: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.058]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.b15]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc28_21: %Dest.058 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %Dest.058 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc28_21: %Dest.b15 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %Dest.b15 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -793,10 +793,10 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Source: type = class_type @Source [concrete]
|
||||
// CHECK:STDOUT: %ExplicitConstructor: type = class_type @ExplicitConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.103: type = pattern_type %ExplicitConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.8d6: type = pattern_type %ExplicitConstructor [concrete]
|
||||
// CHECK:STDOUT: %ExplicitConversion: type = class_type @ExplicitConversion [concrete]
|
||||
// CHECK:STDOUT: %Dest.058: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a9f: type = pattern_type %Dest.058 [concrete]
|
||||
// CHECK:STDOUT: %Dest.b15: type = class_type @Dest [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.56d: type = pattern_type %Dest.b15 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -810,13 +810,13 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Source.decl: type = class_decl @Source [concrete = constants.%Source] {} {}
|
||||
// CHECK:STDOUT: %ExplicitConstructor.decl: type = class_decl @ExplicitConstructor [concrete = constants.%ExplicitConstructor] {} {}
|
||||
// CHECK:STDOUT: %ExplicitConversion.decl: type = class_decl @ExplicitConversion [concrete = constants.%ExplicitConversion] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.058] {} {}
|
||||
// CHECK:STDOUT: %Dest.decl: type = class_decl @Dest [concrete = constants.%Dest.b15] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ExplicitConstructorTest(%s.param: %Source) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.103 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.8d6 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %Source = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %ExplicitConstructor.ref [concrete = constants.%ExplicitConstructor] {
|
||||
@@ -831,15 +831,15 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @ExplicitConversionTest(%s.param: %ExplicitConversion) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.a9f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.56d = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.ref: %ExplicitConversion = name_ref s, %s
|
||||
// CHECK:STDOUT: %.loc28_13: type = splice_block %Dest.ref [concrete = constants.%Dest.058] {
|
||||
// CHECK:STDOUT: %.loc28_13: type = splice_block %Dest.ref [concrete = constants.%Dest.b15] {
|
||||
// CHECK:STDOUT: %Cpp.ref.loc28: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.058]
|
||||
// CHECK:STDOUT: %Dest.ref: type = name_ref Dest, imports.%Dest.decl [concrete = constants.%Dest.b15]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc28_21: %Dest.058 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %Dest.058 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc28_21: %Dest.b15 = converted %s.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_: %Dest.b15 = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -849,9 +849,9 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor.6ca: type = class_type @IntConstructor.1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.2e3: type = pattern_type %IntConstructor.6ca [concrete]
|
||||
// CHECK:STDOUT: %ptr.89c: type = ptr_type %IntConstructor.6ca [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor.14f: type = class_type @IntConstructor.1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.599: type = pattern_type %IntConstructor.14f [concrete]
|
||||
// CHECK:STDOUT: %ptr.380: type = ptr_type %IntConstructor.14f [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk.type: type = fn_type @IntConstructor__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk: %IntConstructor__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor.cpp_destructor.type: type = fn_type @IntConstructor.cpp_destructor [concrete]
|
||||
@@ -865,7 +865,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: .IntConstructor = %IntConstructor.decl
|
||||
// CHECK:STDOUT: import Cpp//...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %IntConstructor.decl: type = class_decl @IntConstructor.1 [concrete = constants.%IntConstructor.6ca] {} {}
|
||||
// CHECK:STDOUT: %IntConstructor.decl: type = class_decl @IntConstructor.1 [concrete = constants.%IntConstructor.14f] {} {}
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk.decl: %IntConstructor__carbon_thunk.type = fn_decl @IntConstructor__carbon_thunk [concrete = constants.%IntConstructor__carbon_thunk] {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -881,21 +881,21 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @IntConstructor.loc6(%i.param: %i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.2e3 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.599 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %i.ref: %i32 = name_ref i, %i
|
||||
// CHECK:STDOUT: %.loc8_13: type = splice_block %IntConstructor.ref [concrete = constants.%IntConstructor.6ca] {
|
||||
// CHECK:STDOUT: %.loc8_13: type = splice_block %IntConstructor.ref [concrete = constants.%IntConstructor.14f] {
|
||||
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %IntConstructor.ref: type = name_ref IntConstructor, imports.%IntConstructor.decl [concrete = constants.%IntConstructor.6ca]
|
||||
// CHECK:STDOUT: %IntConstructor.ref: type = name_ref IntConstructor, imports.%IntConstructor.decl [concrete = constants.%IntConstructor.14f]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc8_31.1: ref %IntConstructor.6ca = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.89c = addr_of %.loc8_31.1
|
||||
// CHECK:STDOUT: %.loc8_31.1: ref %IntConstructor.14f = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.380 = addr_of %.loc8_31.1
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk.call: init %empty_tuple.type = call imports.%IntConstructor__carbon_thunk.decl(%i.ref, %addr)
|
||||
// CHECK:STDOUT: %.loc8_31.2: init %IntConstructor.6ca to %.loc8_31.1 = mark_in_place_init %IntConstructor__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc8_31.3: init %IntConstructor.6ca = converted %i.ref, %.loc8_31.2
|
||||
// CHECK:STDOUT: %.loc8_31.4: ref %IntConstructor.6ca = temporary %.loc8_31.1, %.loc8_31.3
|
||||
// CHECK:STDOUT: %.loc8_31.5: %IntConstructor.6ca = acquire_value %.loc8_31.4
|
||||
// CHECK:STDOUT: %_: %IntConstructor.6ca = value_binding _, %.loc8_31.5
|
||||
// CHECK:STDOUT: %.loc8_31.2: init %IntConstructor.14f to %.loc8_31.1 = mark_in_place_init %IntConstructor__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc8_31.3: init %IntConstructor.14f = converted %i.ref, %.loc8_31.2
|
||||
// CHECK:STDOUT: %.loc8_31.4: ref %IntConstructor.14f = temporary %.loc8_31.1, %.loc8_31.3
|
||||
// CHECK:STDOUT: %.loc8_31.5: %IntConstructor.14f = acquire_value %.loc8_31.4
|
||||
// CHECK:STDOUT: %_: %IntConstructor.14f = value_binding _, %.loc8_31.5
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %IntConstructor.Op.bound: <bound method> = bound_method %.loc8_31.4, constants.%IntConstructor.Op
|
||||
// CHECK:STDOUT: %Op.ref: %IntConstructor.cpp_destructor.type = name_ref Op, imports.%IntConstructor.cpp_destructor.decl [concrete = constants.%IntConstructor.cpp_destructor]
|
||||
@@ -911,9 +911,9 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor: type = class_type @IntConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.2e3: type = pattern_type %IntConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.599: type = pattern_type %IntConstructor [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %ptr.89c: type = ptr_type %IntConstructor [concrete]
|
||||
// CHECK:STDOUT: %ptr.380: type = ptr_type %IntConstructor [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk.type: type = fn_type @IntConstructor__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk: %IntConstructor__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %IntConstructor.cpp_destructor.type: type = fn_type @IntConstructor.cpp_destructor [concrete]
|
||||
@@ -943,7 +943,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @IntConstructorTest(%u.param: %u32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.2e3 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.599 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %u.ref: %u32 = name_ref u, %u
|
||||
// CHECK:STDOUT: %.loc19_13: type = splice_block %IntConstructor.ref [concrete = constants.%IntConstructor] {
|
||||
@@ -952,7 +952,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc19_31.1: ref %IntConstructor = temporary_storage
|
||||
// CHECK:STDOUT: %.loc19_31.2: %i32 = converted %u.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %addr: %ptr.89c = addr_of %.loc19_31.1
|
||||
// CHECK:STDOUT: %addr: %ptr.380 = addr_of %.loc19_31.1
|
||||
// CHECK:STDOUT: %IntConstructor__carbon_thunk.call: init %empty_tuple.type = call imports.%IntConstructor__carbon_thunk.decl(<error>, %addr)
|
||||
// CHECK:STDOUT: %.loc19_31.3: init %IntConstructor to %.loc19_31.1 = mark_in_place_init %IntConstructor__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc19_31.4: init %IntConstructor = converted %u.ref, %.loc19_31.3
|
||||
@@ -972,9 +972,9 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %DefaultConstructor: type = class_type @DefaultConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.ec7: type = pattern_type %DefaultConstructor [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.7fa: type = pattern_type %DefaultConstructor [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.fec: type = ptr_type %DefaultConstructor [concrete]
|
||||
// CHECK:STDOUT: %ptr.b3c: type = ptr_type %DefaultConstructor [concrete]
|
||||
// CHECK:STDOUT: %DefaultConstructor__carbon_thunk.type: type = fn_type @DefaultConstructor__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %DefaultConstructor__carbon_thunk: %DefaultConstructor__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DefaultConstructor.cpp_destructor.type: type = fn_type @DefaultConstructor.cpp_destructor [concrete]
|
||||
@@ -1004,7 +1004,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @DefaultConstructorTest() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.ec7 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.7fa = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc9_36.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc9_13: type = splice_block %DefaultConstructor.ref [concrete = constants.%DefaultConstructor] {
|
||||
@@ -1012,7 +1012,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %DefaultConstructor.ref: type = name_ref DefaultConstructor, imports.%DefaultConstructor.decl [concrete = constants.%DefaultConstructor]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc9_36.2: ref %DefaultConstructor = temporary_storage
|
||||
// CHECK:STDOUT: %addr: %ptr.fec = addr_of %.loc9_36.2
|
||||
// CHECK:STDOUT: %addr: %ptr.b3c = addr_of %.loc9_36.2
|
||||
// CHECK:STDOUT: %DefaultConstructor__carbon_thunk.call: init %empty_tuple.type = call imports.%DefaultConstructor__carbon_thunk.decl(%addr)
|
||||
// CHECK:STDOUT: %.loc9_36.3: init %DefaultConstructor to %.loc9_36.2 = mark_in_place_init %DefaultConstructor__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc9_36.4: init %DefaultConstructor = converted %.loc9_36.1, %.loc9_36.3
|
||||
@@ -1032,14 +1032,14 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Two: type = class_type @Two [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6f8: type = pattern_type %Two [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.034: type = pattern_type %Two [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %ptr.1c1: type = ptr_type %Two [concrete]
|
||||
// CHECK:STDOUT: %ptr.5a9: type = ptr_type %Two [concrete]
|
||||
// CHECK:STDOUT: %Two__carbon_thunk.type: type = fn_type @Two__carbon_thunk [concrete]
|
||||
// CHECK:STDOUT: %Two__carbon_thunk: %Two__carbon_thunk.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.544: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
@@ -1060,8 +1060,8 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %bound_method.cc3: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_2.4ff: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %ThreeWithDefault: type = class_type @ThreeWithDefault [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.2b0: type = pattern_type %ThreeWithDefault [concrete]
|
||||
// CHECK:STDOUT: %ptr.b6c: type = ptr_type %ThreeWithDefault [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.830: type = pattern_type %ThreeWithDefault [concrete]
|
||||
// CHECK:STDOUT: %ptr.da2: type = ptr_type %ThreeWithDefault [concrete]
|
||||
// CHECK:STDOUT: %ThreeWithDefault__carbon_thunk.type.b324b0.1: type = fn_type @ThreeWithDefault__carbon_thunk.1 [concrete]
|
||||
// CHECK:STDOUT: %ThreeWithDefault__carbon_thunk.8592b9.1: %ThreeWithDefault__carbon_thunk.type.b324b0.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete]
|
||||
@@ -1122,7 +1122,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @ImplicitConvert() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc8: %pattern_type.6f8 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc8: %pattern_type.034 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_2.loc8: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
@@ -1146,7 +1146,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_24: init %i32 = call %bound_method.loc8_24.2(%int_2.loc8) [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %.loc8_24.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc8_24 [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %.loc8_24.2: %i32 = converted %int_2.loc8, %.loc8_24.1 [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %addr.loc8: %ptr.1c1 = addr_of %.loc8_25.2
|
||||
// CHECK:STDOUT: %addr.loc8: %ptr.5a9 = addr_of %.loc8_25.2
|
||||
// CHECK:STDOUT: %Two__carbon_thunk.call: init %empty_tuple.type = call imports.%Two__carbon_thunk.decl(%.loc8_21.2, %.loc8_24.2, %addr.loc8)
|
||||
// CHECK:STDOUT: %.loc8_25.3: init %Two to %.loc8_25.2 = mark_in_place_init %Two__carbon_thunk.call
|
||||
// CHECK:STDOUT: %.loc8_25.4: init %Two = converted %.loc8_25.1, %.loc8_25.3
|
||||
@@ -1154,7 +1154,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc8_25.6: %Two = acquire_value %.loc8_25.5
|
||||
// CHECK:STDOUT: %_.loc8: %Two = value_binding _, %.loc8_25.6
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc10: %pattern_type.2b0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc10: %pattern_type.830 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_2.loc10: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
@@ -1178,7 +1178,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_37: init %i32 = call %bound_method.loc10_37.2(%int_2.loc10) [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %.loc10_37.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_37 [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %.loc10_37.2: %i32 = converted %int_2.loc10, %.loc10_37.1 [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %addr.loc10: %ptr.b6c = addr_of %.loc10_38.2
|
||||
// CHECK:STDOUT: %addr.loc10: %ptr.da2 = addr_of %.loc10_38.2
|
||||
// CHECK:STDOUT: %ThreeWithDefault__carbon_thunk.call.loc10: init %empty_tuple.type = call imports.%ThreeWithDefault__carbon_thunk.decl.be9bad.1(%.loc10_34.2, %.loc10_37.2, %addr.loc10)
|
||||
// CHECK:STDOUT: %.loc10_38.3: init %ThreeWithDefault to %.loc10_38.2 = mark_in_place_init %ThreeWithDefault__carbon_thunk.call.loc10
|
||||
// CHECK:STDOUT: %.loc10_38.4: init %ThreeWithDefault = converted %.loc10_38.1, %.loc10_38.3
|
||||
@@ -1186,7 +1186,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc10_38.6: %ThreeWithDefault = acquire_value %.loc10_38.5
|
||||
// CHECK:STDOUT: %_.loc10: %ThreeWithDefault = value_binding _, %.loc10_38.6
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc12: %pattern_type.2b0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc12: %pattern_type.830 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
@@ -1218,7 +1218,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12_40: init %i32 = call %bound_method.loc12_40.2(%int_3) [concrete = constants.%int_3.49a]
|
||||
// CHECK:STDOUT: %.loc12_40.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12_40 [concrete = constants.%int_3.49a]
|
||||
// CHECK:STDOUT: %.loc12_40.2: %i32 = converted %int_3, %.loc12_40.1 [concrete = constants.%int_3.49a]
|
||||
// CHECK:STDOUT: %addr.loc12: %ptr.b6c = addr_of %.loc12_41.2
|
||||
// CHECK:STDOUT: %addr.loc12: %ptr.da2 = addr_of %.loc12_41.2
|
||||
// CHECK:STDOUT: %ThreeWithDefault__carbon_thunk.call.loc12: init %empty_tuple.type = call imports.%ThreeWithDefault__carbon_thunk.decl.be9bad.2(%.loc12_34.2, %.loc12_37.2, %.loc12_40.2, %addr.loc12)
|
||||
// CHECK:STDOUT: %.loc12_41.3: init %ThreeWithDefault to %.loc12_41.2 = mark_in_place_init %ThreeWithDefault__carbon_thunk.call.loc12
|
||||
// CHECK:STDOUT: %.loc12_41.4: init %ThreeWithDefault = converted %.loc12_41.1, %.loc12_41.3
|
||||
@@ -1247,7 +1247,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Aggregate: type = class_type @Aggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.8f0: type = pattern_type %Aggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f0b: type = pattern_type %Aggregate [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
@@ -1268,7 +1268,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @InitFromTuple() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc15: %pattern_type.8f0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc15: %pattern_type.f0b = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15_27.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %Aggregate.ref.loc15 [concrete = constants.%Aggregate] {
|
||||
@@ -1278,7 +1278,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc15_27.2: %Aggregate = converted %.loc15_27.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_.loc15: %Aggregate = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc23: %pattern_type.8f0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc23: %pattern_type.f0b = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %.loc23_29.1: %tuple.type.985 = tuple_literal (%int_1.loc23) [concrete = constants.%tuple.378]
|
||||
@@ -1289,7 +1289,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc23_29.2: %Aggregate = converted %.loc23_29.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_.loc23: %Aggregate = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc31: %pattern_type.8f0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc31: %pattern_type.f0b = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc31: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2]
|
||||
@@ -1307,7 +1307,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Aggregate: type = class_type @Aggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.8f0: type = pattern_type %Aggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f0b: type = pattern_type %Aggregate [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -1329,7 +1329,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @InitFromStruct() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc15: %pattern_type.8f0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc15: %pattern_type.f0b = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %Aggregate.ref.loc15 [concrete = constants.%Aggregate] {
|
||||
@@ -1339,7 +1339,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc15_27.2: %Aggregate = converted %.loc15_27.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_.loc15: %Aggregate = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc23: %pattern_type.8f0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc23: %pattern_type.f0b = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %.loc23_33.1: %struct_type.x = struct_literal (%int_1.loc23) [concrete = constants.%struct.147]
|
||||
@@ -1350,7 +1350,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc23_33.2: %Aggregate = converted %.loc23_33.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_.loc23: %Aggregate = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc31: %pattern_type.8f0 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc31: %pattern_type.f0b = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc31: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2]
|
||||
@@ -1369,9 +1369,9 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %NonAggregate: type = class_type @NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.def: type = pattern_type %NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.d5f: type = pattern_type %NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.a75: type = ptr_type %NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %ptr.9fe: type = ptr_type %NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %NonAggregate__carbon_thunk.type.67cd37.1: type = fn_type @NonAggregate__carbon_thunk.1 [concrete]
|
||||
// CHECK:STDOUT: %NonAggregate__carbon_thunk.30ebf5.1: %NonAggregate__carbon_thunk.type.67cd37.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -1442,7 +1442,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @InitFromStruct() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc8: %pattern_type.def = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc8: %pattern_type.d5f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc8_30.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc8_13: type = splice_block %NonAggregate.ref.loc8 [concrete = constants.%NonAggregate] {
|
||||
@@ -1450,7 +1450,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %NonAggregate.ref.loc8: type = name_ref NonAggregate, imports.%NonAggregate.decl [concrete = constants.%NonAggregate]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc8_30.2: ref %NonAggregate = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc8: %ptr.a75 = addr_of %.loc8_30.2
|
||||
// CHECK:STDOUT: %addr.loc8: %ptr.9fe = addr_of %.loc8_30.2
|
||||
// CHECK:STDOUT: %NonAggregate__carbon_thunk.call.loc8: init %empty_tuple.type = call imports.%NonAggregate__carbon_thunk.decl.2d9ba4.1(%addr.loc8)
|
||||
// CHECK:STDOUT: %.loc8_30.3: init %NonAggregate to %.loc8_30.2 = mark_in_place_init %NonAggregate__carbon_thunk.call.loc8
|
||||
// CHECK:STDOUT: %.loc8_30.4: init %NonAggregate = converted %.loc8_30.1, %.loc8_30.3
|
||||
@@ -1458,7 +1458,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc8_30.6: %NonAggregate = acquire_value %.loc8_30.5
|
||||
// CHECK:STDOUT: %_.loc8: %NonAggregate = value_binding _, %.loc8_30.6
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc9: %pattern_type.def = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc9: %pattern_type.d5f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc9: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %.loc9_32.1: %tuple.type.985 = tuple_literal (%int_1.loc9) [concrete = constants.%tuple.378]
|
||||
@@ -1474,7 +1474,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9: init %i32 = call %bound_method.loc9_30.2(%int_1.loc9) [concrete = constants.%int_1.d5e]
|
||||
// CHECK:STDOUT: %.loc9_30.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc9 [concrete = constants.%int_1.d5e]
|
||||
// CHECK:STDOUT: %.loc9_30.2: %i32 = converted %int_1.loc9, %.loc9_30.1 [concrete = constants.%int_1.d5e]
|
||||
// CHECK:STDOUT: %addr.loc9: %ptr.a75 = addr_of %.loc9_32.2
|
||||
// CHECK:STDOUT: %addr.loc9: %ptr.9fe = addr_of %.loc9_32.2
|
||||
// CHECK:STDOUT: %NonAggregate__carbon_thunk.call.loc9: init %empty_tuple.type = call imports.%NonAggregate__carbon_thunk.decl.2d9ba4.2(%.loc9_30.2, %addr.loc9)
|
||||
// CHECK:STDOUT: %.loc9_32.3: init %NonAggregate to %.loc9_32.2 = mark_in_place_init %NonAggregate__carbon_thunk.call.loc9
|
||||
// CHECK:STDOUT: %.loc9_32.4: init %NonAggregate = converted %.loc9_32.1, %.loc9_32.3
|
||||
@@ -1482,7 +1482,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc9_32.6: %NonAggregate = acquire_value %.loc9_32.5
|
||||
// CHECK:STDOUT: %_.loc9: %NonAggregate = value_binding _, %.loc9_32.6
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc10: %pattern_type.def = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc10: %pattern_type.d5f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
@@ -1506,7 +1506,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_33: init %i32 = call %bound_method.loc10_33.2(%int_2) [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %.loc10_33.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10_33 [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %.loc10_33.2: %i32 = converted %int_2, %.loc10_33.1 [concrete = constants.%int_2.4ff]
|
||||
// CHECK:STDOUT: %addr.loc10: %ptr.a75 = addr_of %.loc10_34.2
|
||||
// CHECK:STDOUT: %addr.loc10: %ptr.9fe = addr_of %.loc10_34.2
|
||||
// CHECK:STDOUT: %NonAggregate__carbon_thunk.call.loc10: init %empty_tuple.type = call imports.%NonAggregate__carbon_thunk.decl.2d9ba4.3(%.loc10_30.2, %.loc10_33.2, %addr.loc10)
|
||||
// CHECK:STDOUT: %.loc10_34.3: init %NonAggregate to %.loc10_34.2 = mark_in_place_init %NonAggregate__carbon_thunk.call.loc10
|
||||
// CHECK:STDOUT: %.loc10_34.4: init %NonAggregate = converted %.loc10_34.1, %.loc10_34.3
|
||||
@@ -1533,7 +1533,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %NonAggregate: type = class_type @NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.def: type = pattern_type %NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.d5f: type = pattern_type %NonAggregate [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -1555,7 +1555,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: fn @InitFromStruct() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc15: %pattern_type.def = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc15: %pattern_type.d5f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15_30.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc15_13: type = splice_block %NonAggregate.ref.loc15 [concrete = constants.%NonAggregate] {
|
||||
@@ -1565,7 +1565,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc15_30.2: %NonAggregate = converted %.loc15_30.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_.loc15: %NonAggregate = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc23: %pattern_type.def = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc23: %pattern_type.d5f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %.loc23_36.1: %struct_type.x = struct_literal (%int_1.loc23) [concrete = constants.%struct.147]
|
||||
@@ -1576,7 +1576,7 @@ fn InitFromStruct() {
|
||||
// CHECK:STDOUT: %.loc23_36.2: %NonAggregate = converted %.loc23_36.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %_.loc23: %NonAggregate = value_binding _, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt.loc31: %pattern_type.def = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt.loc31: %pattern_type.d5f = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_1.loc31: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2]
|
||||
|
||||
Reference in New Issue
Block a user