mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 20:21:21 +01:00
Improve lowering for global variables. (#5492)
- Track the `VarPattern` instruction on the `VarStorage` instruction so that it's available for name mangling. - Mangle global variables based on the first binding name within their pattern. - Give global variables external rather than internal linkage, except if they have no bindings whatsoever in their pattern. - To support lowering references to bindings nested within a global var, such as for `var (x: i32, b: i32)`, add some basic initial support for reference constant expressions. Treat a global `var` as a reference constant, and treat an aggregate access into a reference constant as a reference constant.
This commit is contained in:
+60
-60
@@ -538,9 +538,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %.loc6_1: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -548,20 +548,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %.loc7_1: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc7_8: type = splice_block %i32.loc7 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc7: type = splice_block %i32.loc7 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.loc8_1: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc8_16: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -569,9 +569,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %.loc9_1: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc9_9.1: type = splice_block %.loc9_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc9_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc9_9.3: type = converted %.loc9_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -579,9 +579,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %.loc10_1: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -749,9 +749,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [concrete = constants.%E] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %.loc52_1: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -759,20 +759,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %.loc53_1: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc53_8: type = splice_block %i32.loc53 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc53: type = splice_block %i32.loc53 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.loc54_1: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc54_16: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc54: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc54: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -780,9 +780,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %.loc55_1: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -790,9 +790,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %.loc56_1: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -960,9 +960,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [concrete = constants.%E] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %.loc12_1: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc12_9.1: type = splice_block %.loc12_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -970,20 +970,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.501 = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %.loc13_1: %pattern_type.501 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.501 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc13_8: type = splice_block %i32.loc13 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc13: type = splice_block %i32.loc13 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.f5f = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.loc14_1: %pattern_type.f5f = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.f5f = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc14_16: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc14: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -991,9 +991,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %.loc15_1: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc15_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1001,9 +1001,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %.loc16_1: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc16_9.1: type = splice_block %.loc16_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc16_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc16_9.3: type = converted %.loc16_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1145,9 +1145,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %.loc52_1: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1155,20 +1155,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %.loc53_1: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc53_8: type = splice_block %i32.loc53 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc53: type = splice_block %i32.loc53 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.loc54_1: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc54_16: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc54: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc54: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -1176,9 +1176,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %.loc55_1: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1186,9 +1186,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %.loc56_1: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1330,9 +1330,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %.loc52_1: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1340,20 +1340,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %.loc53_1: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc53_8: type = splice_block %i32.loc53 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc53: type = splice_block %i32.loc53 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.loc54_1: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc54_16: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc54: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc54: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -1361,9 +1361,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %.loc55_1: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
@@ -1371,9 +1371,9 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %.loc56_1: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
|
||||
+2
-2
@@ -96,9 +96,9 @@ var f: () = F();
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %.loc6_1: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var f
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
|
||||
@@ -118,9 +118,9 @@ extern library "basic" fn F();
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %.loc4_1: %pattern_type = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x
|
||||
// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
|
||||
Reference in New Issue
Block a user