mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 08:31:04 +01:00
Fix SemIR not showing insts used to compute FieldDecl type (#7706)
Add an `ExprRegionId` to `FieldDecl`. This required moving the `NameId` into `Field`.
This commit is contained in:
@@ -199,7 +199,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %.loc10_12.1: ref %X = temporary_storage
|
||||
// CHECK:STDOUT: %F.call: init %X to %.loc10_12.1 = call %F.ref()
|
||||
// CHECK:STDOUT: %.loc10_12.2: ref %X = temporary %.loc10_12.1, %F.call
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%.1 [concrete = @X.%.1]
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%field_decl [concrete = @X.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_13.1: ref %i32 = class_element_access %.loc10_12.2, element0
|
||||
// CHECK:STDOUT: %.loc10_13.2: %i32 = acquire_value %.loc10_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -319,7 +319,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %ax.var_patt: %pattern_type.88a = var_pattern %ax.patt [concrete = constants.%ax.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ax.ref.loc10_11: ref %X = name_ref ax, %ax
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%.1 [concrete = @X.%.1]
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%field_decl [concrete = @X.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_13.1: ref %i32 = class_element_access %ax.ref.loc10_11, element0
|
||||
// CHECK:STDOUT: %ax.ref.loc10_17: ref %X = name_ref ax, %ax
|
||||
// CHECK:STDOUT: %g.ref: %X.g.cpp_overload_set.type = name_ref g, imports.%X.g.cpp_overload_set.value [concrete = constants.%X.g.cpp_overload_set.value]
|
||||
@@ -411,7 +411,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %.loc9_12.1: ref %Y.90c = temporary_storage
|
||||
// CHECK:STDOUT: %G.call: init %Y.90c to %.loc9_12.1 = call %G.ref()
|
||||
// CHECK:STDOUT: %.loc9_12.2: ref %Y.90c = temporary %.loc9_12.1, %G.call
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.ab3 = name_ref y, @Y.1.%.1 [concrete = @Y.1.%.1]
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.ab3 = name_ref y, @Y.1.%field_decl [concrete = @Y.1.%field_decl]
|
||||
// CHECK:STDOUT: %.loc9_13.1: ref %i32 = class_element_access %.loc9_12.2, element0
|
||||
// CHECK:STDOUT: %.loc9_13.2: %i32 = acquire_value %.loc9_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -430,7 +430,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %.loc15_12.1: ref %Y.e8d = temporary_storage
|
||||
// CHECK:STDOUT: %H.call: init %Y.e8d to %.loc15_12.1 = call %H.ref()
|
||||
// CHECK:STDOUT: %.loc15_12.2: ref %Y.e8d = temporary %.loc15_12.1, %H.call
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.9a6 = name_ref y, @Y.2.%.1 [concrete = @Y.2.%.1]
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.9a6 = name_ref y, @Y.2.%field_decl [concrete = @Y.2.%field_decl]
|
||||
// CHECK:STDOUT: %.loc15_13.1: ref %Z = class_element_access %.loc15_12.2, element0
|
||||
// CHECK:STDOUT: %.loc15_13.2: %Z = acquire_value %.loc15_13.1
|
||||
// CHECK:STDOUT: <elided>
|
||||
|
||||
@@ -1646,7 +1646,7 @@ fn Call(var instance: Cpp.PublicPrivate) {
|
||||
// CHECK:STDOUT: fn @F(%s.param: %NonFunctionMemberPublic) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %NonFunctionMemberPublic = name_ref s, %s
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%.1 [concrete = @NonFunctionMemberPublic.%.1]
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%field_decl [concrete = @NonFunctionMemberPublic.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_36.1: ref %i32 = class_element_access %s.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_36.2: %i32 = acquire_value %.loc8_36.1
|
||||
// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
@@ -1691,7 +1691,7 @@ fn Call(var instance: Cpp.PublicPrivate) {
|
||||
// CHECK:STDOUT: fn @F(%d.param: %Derived) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%.1 [concrete = @NonFunctionMemberPublic.%.1]
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%field_decl [concrete = @NonFunctionMemberPublic.%field_decl]
|
||||
// CHECK:STDOUT: %.loc12_36.1: %NonFunctionMemberPublic = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc12_36.2: ref %NonFunctionMemberPublic = class_element_access %.loc12_36.1, element0
|
||||
// CHECK:STDOUT: %.loc12_36.3: ref %NonFunctionMemberPublic = converted %d.ref, %.loc12_36.2
|
||||
@@ -1759,7 +1759,7 @@ fn Call(var instance: Cpp.PublicPrivate) {
|
||||
// CHECK:STDOUT: fn @Derived.F(%self.param: %Derived) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Derived = name_ref self, %self
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberProtected.elem = name_ref instance_data, @NonFunctionMemberProtected.%.1 [concrete = @NonFunctionMemberProtected.%.1]
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberProtected.elem = name_ref instance_data, @NonFunctionMemberProtected.%field_decl [concrete = @NonFunctionMemberProtected.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_41.1: %NonFunctionMemberProtected = as_compatible %self.ref
|
||||
// CHECK:STDOUT: %.loc10_41.2: ref %NonFunctionMemberProtected = class_element_access %.loc10_41.1, element0
|
||||
// CHECK:STDOUT: %.loc10_41.3: ref %NonFunctionMemberProtected = converted %self.ref, %.loc10_41.2
|
||||
|
||||
@@ -662,7 +662,7 @@ class V {
|
||||
// CHECK:STDOUT: fn @AccessDirect(%d.param: %FieldDerived) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %FieldDerived = name_ref d, %d
|
||||
// CHECK:STDOUT: %a.ref: %FieldBase.elem = name_ref a, @FieldBase.%.1 [concrete = @FieldBase.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %FieldBase.elem = name_ref a, @FieldBase.%field_decl.1 [concrete = @FieldBase.%field_decl.1]
|
||||
// CHECK:STDOUT: %.loc8_11.1: %FieldBase = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc8_11.2: ref %FieldBase = class_element_access %.loc8_11.1, element0
|
||||
// CHECK:STDOUT: %.loc8_11.3: ref %FieldBase = converted %d.ref, %.loc8_11.2
|
||||
@@ -681,7 +681,7 @@ class V {
|
||||
// CHECK:STDOUT: %d.ref: %FieldDerived = name_ref d, %d
|
||||
// CHECK:STDOUT: %Cpp.ref.loc14: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %FieldBase.ref: type = name_ref FieldBase, imports.%FieldBase.decl [concrete = constants.%FieldBase]
|
||||
// CHECK:STDOUT: %b.ref: %FieldBase.elem = name_ref b, @FieldBase.%.2 [concrete = @FieldBase.%.2]
|
||||
// CHECK:STDOUT: %b.ref: %FieldBase.elem = name_ref b, @FieldBase.%field_decl.2 [concrete = @FieldBase.%field_decl.2]
|
||||
// CHECK:STDOUT: %.loc14_11.1: %FieldBase = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc14_11.2: ref %FieldBase = class_element_access %.loc14_11.1, element0
|
||||
// CHECK:STDOUT: %.loc14_11.3: ref %FieldBase = converted %d.ref, %.loc14_11.2
|
||||
|
||||
@@ -474,7 +474,7 @@ fn GenericUse(p2: Generic(Cpp.Class1)) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %bar.ref: %ptr.ec1 = name_ref bar, %bar
|
||||
// CHECK:STDOUT: %.loc8_47.1: ref %DataMemberBar = deref %bar.ref
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%.1 [concrete = @DataMemberBar.%.1]
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%field_decl [concrete = @DataMemberBar.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_47.2: ref %ptr.ec1 = class_element_access %.loc8_47.1, element0
|
||||
// CHECK:STDOUT: %.loc8_47.3: %ptr.ec1 = acquire_value %.loc8_47.2
|
||||
// CHECK:STDOUT: %.loc8_40: type = splice_block %ptr.loc8 [concrete = constants.%ptr.ec1] {
|
||||
|
||||
+10
-10
@@ -257,20 +257,20 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @F(%s.param: %Struct) -> out %return.param: %tuple.type.ccd {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref.loc8_11: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %a.ref: %Struct.elem.da9 = name_ref a, @Struct.%.1 [concrete = @Struct.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %Struct.elem.da9 = name_ref a, @Struct.%field_decl.1 [concrete = @Struct.%field_decl.1]
|
||||
// CHECK:STDOUT: %.loc8_12.1: ref %i32 = class_element_access %s.ref.loc8_11, element0
|
||||
// CHECK:STDOUT: %.loc8_12.2: %i32 = acquire_value %.loc8_12.1
|
||||
// CHECK:STDOUT: %s.ref.loc8_16: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %b.ref: %Struct.elem.da9 = name_ref b, @Struct.%.2 [concrete = @Struct.%.2]
|
||||
// CHECK:STDOUT: %b.ref: %Struct.elem.da9 = name_ref b, @Struct.%field_decl.2 [concrete = @Struct.%field_decl.2]
|
||||
// CHECK:STDOUT: %.loc8_17.1: ref %i32 = class_element_access %s.ref.loc8_16, element1
|
||||
// CHECK:STDOUT: %.loc8_17.2: %i32 = acquire_value %.loc8_17.1
|
||||
// CHECK:STDOUT: %s.ref.loc8_22: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %p.ref: %Struct.elem.905 = name_ref p, @Struct.%.3 [concrete = @Struct.%.3]
|
||||
// CHECK:STDOUT: %p.ref: %Struct.elem.905 = name_ref p, @Struct.%field_decl.3 [concrete = @Struct.%field_decl.3]
|
||||
// CHECK:STDOUT: %.loc8_23.1: ref %ptr.d08 = class_element_access %s.ref.loc8_22, element2
|
||||
// CHECK:STDOUT: %.loc8_23.2: %ptr.d08 = acquire_value %.loc8_23.1
|
||||
// CHECK:STDOUT: %.loc8_21.1: ref %i32 = deref %.loc8_23.2
|
||||
// CHECK:STDOUT: %s.ref.loc8_28: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %q.ref: %Struct.elem.a19 = name_ref q, @Struct.%.5 [concrete = @Struct.%.5]
|
||||
// CHECK:STDOUT: %q.ref: %Struct.elem.a19 = name_ref q, @Struct.%field_decl.4 [concrete = @Struct.%field_decl.4]
|
||||
// CHECK:STDOUT: %.loc8_29.1: ref %Optional.5b3 = class_element_access %s.ref.loc8_28, element3
|
||||
// CHECK:STDOUT: %.loc8_29.2: %Optional.5b3 = acquire_value %.loc8_29.1
|
||||
// CHECK:STDOUT: %.loc8_31: %Optional.Get.type.76f = specific_constant imports.%Core.import_ref.497, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Get.d19]
|
||||
@@ -283,7 +283,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: %.loc8_36.2: %ptr.d08 = converted %Optional.Get.call, %.loc8_36.1
|
||||
// CHECK:STDOUT: %.loc8_27.1: ref %i32 = deref %.loc8_36.2
|
||||
// CHECK:STDOUT: %s.ref.loc8_40: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %r.ref: %Struct.elem.6a0 = name_ref r, @Struct.%.6 [concrete = @Struct.%.6]
|
||||
// CHECK:STDOUT: %r.ref: %Struct.elem.6a0 = name_ref r, @Struct.%field_decl.5 [concrete = @Struct.%field_decl.5]
|
||||
// CHECK:STDOUT: %.loc8_41.1: ref %const.e2a = class_element_access %s.ref.loc8_40, element4
|
||||
// CHECK:STDOUT: %.loc8_41.2: %const.e2a = acquire_value %.loc8_41.1
|
||||
// CHECK:STDOUT: %.loc8_39.1: ref %i32 = deref %.loc8_41.2
|
||||
@@ -361,7 +361,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @F(%u.param: %Union) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %Union = name_ref u, %u
|
||||
// CHECK:STDOUT: %a.ref: %Union.elem.291 = name_ref a, @Union.%.1 [concrete = @Union.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %Union.elem.291 = name_ref a, @Union.%field_decl.1 [concrete = @Union.%field_decl.1]
|
||||
// CHECK:STDOUT: %.loc8_11.1: ref %i32 = class_element_access %u.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_11.2: %i32 = acquire_value %.loc8_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -375,7 +375,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @G(%u.param: %Union) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %Union = name_ref u, %u
|
||||
// CHECK:STDOUT: %b.ref: %Union.elem.291 = name_ref b, @Union.%.2 [concrete = @Union.%.2]
|
||||
// CHECK:STDOUT: %b.ref: %Union.elem.291 = name_ref b, @Union.%field_decl.2 [concrete = @Union.%field_decl.2]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %u.ref, element1
|
||||
// CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -389,7 +389,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @H(%u.param: %Union) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %Union = name_ref u, %u
|
||||
// CHECK:STDOUT: %p.ref: %Union.elem.d1f = name_ref p, @Union.%.3 [concrete = @Union.%.3]
|
||||
// CHECK:STDOUT: %p.ref: %Union.elem.d1f = name_ref p, @Union.%field_decl.3 [concrete = @Union.%field_decl.3]
|
||||
// CHECK:STDOUT: %.loc20_12.1: ref %ptr.d08 = class_element_access %u.ref, element2
|
||||
// CHECK:STDOUT: %.loc20_12.2: %ptr.d08 = acquire_value %.loc20_12.1
|
||||
// CHECK:STDOUT: %.loc20_10.1: ref %i32 = deref %.loc20_12.2
|
||||
@@ -432,7 +432,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @F(%s.param: %BitfieldStruct) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %BitfieldStruct = name_ref s, %s
|
||||
// CHECK:STDOUT: %a.ref: %BitfieldStruct.elem = name_ref a, @BitfieldStruct.%.1 [concrete = @BitfieldStruct.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %BitfieldStruct.elem = name_ref a, @BitfieldStruct.%field_decl [concrete = @BitfieldStruct.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_11.1: ref %i32 = class_element_access %s.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_11.2: %i32 = acquire_value %.loc8_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -446,7 +446,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @G(%s.param: %BitfieldUnion) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %BitfieldUnion = name_ref s, %s
|
||||
// CHECK:STDOUT: %c.ref: %BitfieldUnion.elem = name_ref c, @BitfieldUnion.%.1 [concrete = @BitfieldUnion.%.1]
|
||||
// CHECK:STDOUT: %c.ref: %BitfieldUnion.elem = name_ref c, @BitfieldUnion.%field_decl [concrete = @BitfieldUnion.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %s.ref, element0
|
||||
// CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -213,7 +213,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %bound_method.loc9: <bound method> = bound_method %x.ref.loc9, %f.ref
|
||||
// CHECK:STDOUT: %f__carbon_thunk.call: init %empty_tuple.type = call imports.%f__carbon_thunk.decl(%x.ref.loc9)
|
||||
// CHECK:STDOUT: %x.ref.loc10: %A.614 = name_ref x, %x
|
||||
// CHECK:STDOUT: %n.ref: %A.elem.708 = name_ref n, @A.1.%.2 [concrete = @A.1.%.2]
|
||||
// CHECK:STDOUT: %n.ref: %A.elem.708 = name_ref n, @A.1.%field_decl [concrete = @A.1.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_11.1: ref %i32 = class_element_access %x.ref.loc10, element1
|
||||
// CHECK:STDOUT: %.loc10_11.2: %i32 = acquire_value %.loc10_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -339,11 +339,11 @@ fn G() {
|
||||
// CHECK:STDOUT: %B.type: type = generic_class_type @B [concrete]
|
||||
// CHECK:STDOUT: %B.generic: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %B.60e: type = class_type @B, @B(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.ae6: @B.%.loc12_17.2 (@B.%.loc12_17.2) = splice_inst @B.%.loc12_17.1 [template]
|
||||
// CHECK:STDOUT: %.535: type = splice_inst @B.%.loc12_17.4 [template]
|
||||
// CHECK:STDOUT: %A.type: type = cpp_type_template_type A [concrete]
|
||||
// CHECK:STDOUT: %A.template: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.ae6: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst @B.%.loc12_17.3 [template]
|
||||
// CHECK:STDOUT: %.535: type = splice_inst @B.%.loc12_17.6 [template]
|
||||
// CHECK:STDOUT: %require_complete.01e: <witness> = require_complete_type %.535 [template]
|
||||
// CHECK:STDOUT: %pattern_type.281: type = pattern_type %.535 [template]
|
||||
// CHECK:STDOUT: %a.patt.438: %pattern_type.281 = ref_binding_pattern a [template]
|
||||
// CHECK:STDOUT: %B.elem.7af: type = unbound_element_type %B.60e, %.535 [template]
|
||||
// CHECK:STDOUT: %struct_type.a.be9: type = struct_type {.a: %.535} [template]
|
||||
// CHECK:STDOUT: %complete_type.7ab: <witness> = complete_type_witness %struct_type.a.be9 [template]
|
||||
@@ -365,8 +365,6 @@ fn G() {
|
||||
// CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [concrete]
|
||||
// CHECK:STDOUT: %.ae8: type = custom_layout_type {size=4, align=4, .t@0: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.ece: <witness> = complete_type_witness %.ae8 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.b78: type = pattern_type %A [concrete]
|
||||
// CHECK:STDOUT: %a.patt.fbf: %pattern_type.b78 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %B.elem.1e0: type = unbound_element_type %B.bd8, %A [concrete]
|
||||
// CHECK:STDOUT: %struct_type.a.b63: type = struct_type {.a: %A} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.594: <witness> = complete_type_witness %struct_type.a.b63 [concrete]
|
||||
@@ -388,6 +386,11 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
|
||||
// CHECK:STDOUT: .A = %A.template
|
||||
// CHECK:STDOUT: import Cpp//...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.template: %A.type = struct_value () [concrete = constants.%A.template]
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
@@ -422,37 +425,41 @@ fn G() {
|
||||
// CHECK:STDOUT: %T.loc11_10.1: type = symbolic_binding T, 0 [symbolic = %T.loc11_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc12_17.1: <instruction> = call_template_action clang_decl_id4C000002, (%T.loc11_10.1) [template]
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = type_of_inst %.loc12_17.1 [template]
|
||||
// CHECK:STDOUT: %.loc12_17.3: @B.%.loc12_17.2 (@B.%.loc12_17.2) = splice_inst %.loc12_17.1 [template = %.loc12_17.3 (constants.%.ae6)]
|
||||
// CHECK:STDOUT: %.loc12_17.4: <instruction> = convert_to_value_action <unexpected>.inst{{[0-9A-F]+}}.loc12_17, type [template]
|
||||
// CHECK:STDOUT: %.loc12_17.5: type = splice_inst %.loc12_17.4 [template = %.loc12_17.5 (constants.%.535)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %.loc12_17.5 [template = %require_complete (constants.%require_complete.01e)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %.loc12_17.5 [template = %pattern_type (constants.%pattern_type.281)]
|
||||
// CHECK:STDOUT: %a.patt: @B.%pattern_type (%pattern_type.281) = ref_binding_pattern a [template = %a.patt (constants.%a.patt.438)]
|
||||
// CHECK:STDOUT: %.loc12_17.3: <instruction> = call_template_action clang_decl_id4C000002, (%T.loc11_10.1) [template]
|
||||
// CHECK:STDOUT: %.loc12_17.4: type = type_of_inst %.loc12_17.3 [template]
|
||||
// CHECK:STDOUT: %.loc12_17.5: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst %.loc12_17.3 [template = %.loc12_17.5 (constants.%.ae6)]
|
||||
// CHECK:STDOUT: %.loc12_17.6: <instruction> = convert_to_value_action %.loc12_17.1, type [template]
|
||||
// CHECK:STDOUT: %.loc12_17.7: type = splice_inst %.loc12_17.6 [template = %.loc12_17.7 (constants.%.535)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %.loc12_17.7 [template = %require_complete (constants.%require_complete.01e)]
|
||||
// CHECK:STDOUT: %B: type = class_type @B, @B(%T.loc11_10.1) [symbolic = %B (constants.%B.60e)]
|
||||
// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %.loc12_17.5 [template = %B.elem (constants.%B.elem.7af)]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @B.%.loc12_17.5 (%.535)} [template = %struct_type.a (constants.%struct_type.a.be9)]
|
||||
// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %.loc12_17.7 [template = %B.elem (constants.%B.elem.7af)]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @B.%.loc12_17.7 (%.535)} [template = %struct_type.a (constants.%struct_type.a.be9)]
|
||||
// CHECK:STDOUT: %complete_type.loc13_1.2: <witness> = complete_type_witness %struct_type.a [template = %complete_type.loc13_1.2 (constants.%complete_type.7ab)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc12_8: @B.%B.elem (%B.elem.7af) = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @B.%B.elem (%B.elem.7af) = field_decl a, element0, %.loc12_17.2 in [concrete] {
|
||||
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%A.template [concrete = constants.%A.template]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_10.2 [symbolic = %T.loc11_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_17.1: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst %.loc12_17.3 [template = %.loc12_17.5 (constants.%.ae6)]
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = splice_inst %.loc12_17.6 [template = %.loc12_17.7 (constants.%.535)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc13_1.1: <witness> = complete_type_witness constants.%struct_type.a.be9 [template = %complete_type.loc13_1.2 (constants.%complete_type.7ab)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%B.60e
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc12_8
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F(%b.param: ref %B.bd8) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %b.ref: ref %B.bd8 = name_ref b, %b
|
||||
// CHECK:STDOUT: %a.ref: %B.elem.1e0 = name_ref a, @B.%.loc12_8 [concrete = @B.%.loc12_8]
|
||||
// CHECK:STDOUT: %a.ref: %B.elem.1e0 = name_ref a, @B.%field_decl [concrete = @B.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_4: ref %A = class_element_access %b.ref, element0
|
||||
// CHECK:STDOUT: %t.ref: %A.elem = name_ref t, @A.%.1 [concrete = @A.%.1]
|
||||
// CHECK:STDOUT: %t.ref: %A.elem = name_ref t, @A.%field_decl [concrete = @A.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_6: ref %i32 = class_element_access %.loc16_4, element0
|
||||
// CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff]
|
||||
// CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -475,14 +482,12 @@ fn G() {
|
||||
// CHECK:STDOUT: %T.loc11_10.1 => constants.%i32
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc12_17.1 => constants.%inst.splice_block.72d
|
||||
// CHECK:STDOUT: %.loc12_17.2 => type
|
||||
// CHECK:STDOUT: %.loc12_17.3 => constants.%A
|
||||
// CHECK:STDOUT: %.loc12_17.4 => constants.%inst.splice_block.c26
|
||||
// CHECK:STDOUT: %.loc12_17.3 => constants.%inst.splice_block.72d
|
||||
// CHECK:STDOUT: %.loc12_17.4 => type
|
||||
// CHECK:STDOUT: %.loc12_17.5 => constants.%A
|
||||
// CHECK:STDOUT: %.loc12_17.6 => constants.%inst.splice_block.c26
|
||||
// CHECK:STDOUT: %.loc12_17.7 => constants.%A
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.ece
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.b78
|
||||
// CHECK:STDOUT: %a.patt => constants.%a.patt.fbf
|
||||
// CHECK:STDOUT: %B => constants.%B.bd8
|
||||
// CHECK:STDOUT: %B.elem => constants.%B.elem.1e0
|
||||
// CHECK:STDOUT: %struct_type.a => constants.%struct_type.a.b63
|
||||
|
||||
@@ -395,7 +395,7 @@ fn MyF(bar: Cpp.TemplateBar(Cpp.X)*);
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %bar.ref: %ptr.ec1 = name_ref bar, %bar
|
||||
// CHECK:STDOUT: %.loc8_47.1: ref %DataMemberBar = deref %bar.ref
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%.1 [concrete = @DataMemberBar.%.1]
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%field_decl [concrete = @DataMemberBar.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_47.2: ref %ptr.ec1 = class_element_access %.loc8_47.1, element0
|
||||
// CHECK:STDOUT: %.loc8_47.3: %ptr.ec1 = acquire_value %.loc8_47.2
|
||||
// CHECK:STDOUT: %.loc8_40: type = splice_block %ptr.loc8 [concrete = constants.%ptr.ec1] {
|
||||
|
||||
@@ -251,7 +251,7 @@ let a: array(i32, F()) = (1, 2, 3);
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.3cc = value_binding_pattern c [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.ref: %ConstexprC = name_ref c, %c
|
||||
// CHECK:STDOUT: %a.ref: %ConstexprC.elem = name_ref a, @ConstexprC.%.1 [concrete = @ConstexprC.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %ConstexprC.elem = name_ref a, @ConstexprC.%field_decl [concrete = @ConstexprC.%field_decl]
|
||||
// CHECK:STDOUT: %.loc20_11.1: ref %i32 = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc20_11.2: %i32 = acquire_value %.loc20_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc20: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -2224,9 +2224,9 @@ let _: C(1) = {} as C(Cpp.COUNT);
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %b.ref: %SubA.elem = name_ref b, @SubA.%.1 [concrete = @SubA.%.1]
|
||||
// CHECK:STDOUT: %b.ref: %SubA.elem = name_ref b, @SubA.%field_decl [concrete = @SubA.%field_decl]
|
||||
// CHECK:STDOUT: %.loc17_6.1: ref %SubB = class_element_access imports.%a_obj.var, element0 [concrete = constants.%.d13]
|
||||
// CHECK:STDOUT: %c.ref: %SubB.elem = name_ref c, @SubB.%.1 [concrete = @SubB.%.1]
|
||||
// CHECK:STDOUT: %c.ref: %SubB.elem = name_ref c, @SubB.%field_decl [concrete = @SubB.%field_decl]
|
||||
// CHECK:STDOUT: %.loc17_6.2: ref %i32 = class_element_access %.loc17_6.1, element0 [concrete = constants.%.010]
|
||||
// CHECK:STDOUT: %m.ref: ref %i32 = name_ref m, constants.%.010 [concrete = constants.%.010]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
|
||||
Reference in New Issue
Block a user