mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 13:41:06 +01:00
Model the return slot as an output parameter (#4432)
Also fix `Param` insts to have meaningful names in pretty-printing, to help clarify relationship with return slot.
This commit is contained in:
+9
-6
@@ -39,7 +39,7 @@ var arr: [i32; Add(1, 2)];
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -54,6 +54,8 @@ var arr: [i32; Add(1, 2)];
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_11: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11_11 [template = i32]
|
||||
@@ -64,11 +66,12 @@ var arr: [i32; Add(1, 2)];
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_27: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_27.1: type = value_of_initializer %int.make_type_32.loc11_27 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_27.2: type = converted %int.make_type_32.loc11_27, %.loc11_27.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, %Add.decl [template = constants.%Add]
|
||||
|
||||
@@ -32,7 +32,7 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -46,6 +46,8 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_11: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32.loc11_11 [template = i32]
|
||||
@@ -56,11 +58,12 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_27: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_27.1: type = value_of_initializer %int.make_type_32.loc11_27 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_27.2: type = converted %int.make_type_32.loc11_27, %.loc11_27.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+49
-31
@@ -63,7 +63,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -79,6 +79,8 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %m.patt: i32 = binding_pattern m
|
||||
// CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32.loc11_9 [template = i32]
|
||||
@@ -89,17 +91,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_25: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_25.1: type = value_of_initializer %int.make_type_32.loc11_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_25.2: type = converted %int.make_type_32.loc11_25, %.loc11_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %return.var.loc11: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc11: i32 = bind_name n, %param.loc11_7
|
||||
// CHECK:STDOUT: %param.loc11_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc11: i32 = bind_name m, %param.loc11_15
|
||||
// CHECK:STDOUT: %n.param.loc11: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc11: i32 = bind_name n, %n.param.loc11
|
||||
// CHECK:STDOUT: %m.param.loc11: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc11: i32 = bind_name m, %m.param.loc11
|
||||
// CHECK:STDOUT: %return.param.loc11: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %.loc11_22: ref i32 = return_slot %return.param.loc11
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl.loc19: %A.type = fn_decl @A [template = constants.%A] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %m.patt: i32 = binding_pattern m
|
||||
// CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc19_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc19_9.1: type = value_of_initializer %int.make_type_32.loc19_9 [template = i32]
|
||||
@@ -110,17 +115,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc19_25: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc19_25.1: type = value_of_initializer %int.make_type_32.loc19_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc19_25.2: type = converted %int.make_type_32.loc19_25, %.loc19_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc19_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc19: i32 = bind_name n, %param.loc19_7
|
||||
// CHECK:STDOUT: %param.loc19_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc19: i32 = bind_name m, %param.loc19_15
|
||||
// CHECK:STDOUT: %n.param.loc19: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc19: i32 = bind_name n, %n.param.loc19
|
||||
// CHECK:STDOUT: %m.param.loc19: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc19: i32 = bind_name m, %m.param.loc19
|
||||
// CHECK:STDOUT: %return.param.loc19: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc19
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl.loc21: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %m.patt: i32 = binding_pattern m
|
||||
// CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc21_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc21_9.1: type = value_of_initializer %int.make_type_32.loc21_9 [template = i32]
|
||||
@@ -131,17 +139,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc21_25: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc21_25.1: type = value_of_initializer %int.make_type_32.loc21_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc21_25.2: type = converted %int.make_type_32.loc21_25, %.loc21_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %return.var.loc21: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc21_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc21: i32 = bind_name n, %param.loc21_7
|
||||
// CHECK:STDOUT: %param.loc21_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc21: i32 = bind_name m, %param.loc21_15
|
||||
// CHECK:STDOUT: %n.param.loc21: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc21: i32 = bind_name n, %n.param.loc21
|
||||
// CHECK:STDOUT: %m.param.loc21: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc21: i32 = bind_name m, %m.param.loc21
|
||||
// CHECK:STDOUT: %return.param.loc21: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %.loc21_22: ref i32 = return_slot %return.param.loc21
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl.loc29: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %m.patt: i32 = binding_pattern m
|
||||
// CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc29_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc29_9.1: type = value_of_initializer %int.make_type_32.loc29_9 [template = i32]
|
||||
@@ -152,17 +163,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc29_25: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc29_25.1: type = value_of_initializer %int.make_type_32.loc29_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc29_25.2: type = converted %int.make_type_32.loc29_25, %.loc29_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc29_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc29: i32 = bind_name n, %param.loc29_7
|
||||
// CHECK:STDOUT: %param.loc29_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc29: i32 = bind_name m, %param.loc29_15
|
||||
// CHECK:STDOUT: %n.param.loc29: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc29: i32 = bind_name n, %n.param.loc29
|
||||
// CHECK:STDOUT: %m.param.loc29: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc29: i32 = bind_name m, %m.param.loc29
|
||||
// CHECK:STDOUT: %return.param.loc29: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc29
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl.loc31: %C.type = fn_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %m.patt: i32 = binding_pattern m
|
||||
// CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc31_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc31_9.1: type = value_of_initializer %int.make_type_32.loc31_9 [template = i32]
|
||||
@@ -173,17 +187,20 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc31_25: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc31_25.1: type = value_of_initializer %int.make_type_32.loc31_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc31_25.2: type = converted %int.make_type_32.loc31_25, %.loc31_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %return.var.loc31: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc31_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc31: i32 = bind_name n, %param.loc31_7
|
||||
// CHECK:STDOUT: %param.loc31_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc31: i32 = bind_name m, %param.loc31_15
|
||||
// CHECK:STDOUT: %n.param.loc31: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc31: i32 = bind_name n, %n.param.loc31
|
||||
// CHECK:STDOUT: %m.param.loc31: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc31: i32 = bind_name m, %m.param.loc31
|
||||
// CHECK:STDOUT: %return.param.loc31: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %.loc31_22: ref i32 = return_slot %return.param.loc31
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl.loc38: %C.type = fn_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %m.patt: i32 = binding_pattern m
|
||||
// CHECK:STDOUT: %m.param_patt: i32 = param_pattern %m.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc38_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc38_9.1: type = value_of_initializer %int.make_type_32.loc38_9 [template = i32]
|
||||
@@ -194,11 +211,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc38_25: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc38_25.1: type = value_of_initializer %int.make_type_32.loc38_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc38_25.2: type = converted %int.make_type_32.loc38_25, %.loc38_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc38_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc38: i32 = bind_name n, %param.loc38_7
|
||||
// CHECK:STDOUT: %param.loc38_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc38: i32 = bind_name m, %param.loc38_15
|
||||
// CHECK:STDOUT: %n.param.loc38: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc38: i32 = bind_name n, %n.param.loc38
|
||||
// CHECK:STDOUT: %m.param.loc38: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %m.loc38: i32 = bind_name m, %m.param.loc38
|
||||
// CHECK:STDOUT: %return.param.loc38: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param.loc38
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+17
-11
@@ -53,7 +53,7 @@ var arr: [i32; 1.(I.F)(2)];
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -92,6 +92,8 @@ var arr: [i32; 1.(I.F)(2)];
|
||||
// CHECK:STDOUT: %self.param_patt: @F.1.%Self (%Self) = param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: @F.1.%Self (%Self) = binding_pattern other
|
||||
// CHECK:STDOUT: %other.param_patt: @F.1.%Self (%Self) = param_pattern %other.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: @F.1.%Self (%Self) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.1.%Self (%Self) = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc12_14: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %.loc12_14.1: type = facet_type_access %Self.ref.loc12_14 [symbolic = %Self (constants.%Self)]
|
||||
@@ -102,11 +104,12 @@ var arr: [i32; 1.(I.F)(2)];
|
||||
// CHECK:STDOUT: %Self.ref.loc12_36: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %.loc12_36.1: type = facet_type_access %Self.ref.loc12_36 [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %.loc12_36.2: type = converted %Self.ref.loc12_36, %.loc12_36.1 [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %return: ref @F.1.%Self (%Self) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc12_12: @F.1.%Self (%Self) = param runtime_param0
|
||||
// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %param.loc12_12
|
||||
// CHECK:STDOUT: %param.loc12_25: @F.1.%Self (%Self) = param runtime_param1
|
||||
// CHECK:STDOUT: %other: @F.1.%Self (%Self) = bind_name other, %param.loc12_25
|
||||
// CHECK:STDOUT: %self.param: @F.1.%Self (%Self) = param runtime_param0
|
||||
// CHECK:STDOUT: %self: @F.1.%Self (%Self) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %other.param: @F.1.%Self (%Self) = param runtime_param1
|
||||
// CHECK:STDOUT: %other: @F.1.%Self (%Self) = bind_name other, %other.param
|
||||
// CHECK:STDOUT: %return.param: @F.1.%Self (%Self) = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @F.1.%Self (%Self) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
@@ -122,6 +125,8 @@ var arr: [i32; 1.(I.F)(2)];
|
||||
// CHECK:STDOUT: %self.param_patt: i32 = param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: i32 = binding_pattern other
|
||||
// CHECK:STDOUT: %other.param_patt: i32 = param_pattern %other.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc16_14: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_14.1: type = value_of_initializer %int.make_type_32.loc16_14 [template = i32]
|
||||
@@ -132,11 +137,12 @@ var arr: [i32; 1.(I.F)(2)];
|
||||
// CHECK:STDOUT: %int.make_type_32.loc16_34: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_34.1: type = value_of_initializer %int.make_type_32.loc16_34 [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_34.2: type = converted %int.make_type_32.loc16_34, %.loc16_34.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc16_12: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %self: i32 = bind_name self, %param.loc16_12
|
||||
// CHECK:STDOUT: %param.loc16_24: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %other: i32 = bind_name other, %param.loc16_24
|
||||
// CHECK:STDOUT: %self.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %self: i32 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %other.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %other: i32 = bind_name other, %other.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15_15: <witness> = interface_witness (%F.decl) [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+28
-18
@@ -49,8 +49,12 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
|
||||
// CHECK:STDOUT: .Int32 = %Int32.decl
|
||||
// CHECK:STDOUT: .Add = %Add.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} {
|
||||
// CHECK:STDOUT: %return: ref type = var <return slot>
|
||||
// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {
|
||||
// CHECK:STDOUT: %return.patt: type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %return.param: type = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%Add.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -62,6 +66,8 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
|
||||
// CHECK:STDOUT: %self.param_patt: @Op.%Self (%Self) = param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: @Op.%Self (%Self) = binding_pattern other
|
||||
// CHECK:STDOUT: %other.param_patt: @Op.%Self (%Self) = param_pattern %other.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: @Op.%Self (%Self) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Op.%Self (%Self) = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc7_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %.loc7_15.1: type = facet_type_access %Self.ref.loc7_15 [symbolic = %Self (constants.%Self)]
|
||||
@@ -72,11 +78,12 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
|
||||
// CHECK:STDOUT: %Self.ref.loc7_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %.loc7_37.1: type = facet_type_access %Self.ref.loc7_37 [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %.loc7_37.2: type = converted %Self.ref.loc7_37, %.loc7_37.1 [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %return: ref @Op.%Self (%Self) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc7_13: @Op.%Self (%Self) = param runtime_param0
|
||||
// CHECK:STDOUT: %self: @Op.%Self (%Self) = bind_name self, %param.loc7_13
|
||||
// CHECK:STDOUT: %param.loc7_26: @Op.%Self (%Self) = param runtime_param1
|
||||
// CHECK:STDOUT: %other: @Op.%Self (%Self) = bind_name other, %param.loc7_26
|
||||
// CHECK:STDOUT: %self.param: @Op.%Self (%Self) = param runtime_param0
|
||||
// CHECK:STDOUT: %self: @Op.%Self (%Self) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %other.param: @Op.%Self (%Self) = param runtime_param1
|
||||
// CHECK:STDOUT: %other: @Op.%Self (%Self) = bind_name other, %other.param
|
||||
// CHECK:STDOUT: %return.param: @Op.%Self (%Self) = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @Op.%Self (%Self) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc7: %.2 = assoc_entity element0, %Op.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
@@ -133,12 +140,12 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
|
||||
// CHECK:STDOUT: .Add = %import_ref.2
|
||||
// CHECK:STDOUT: import Core//default
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//default, inst+2, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref Core//default, inst+6, loaded [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Core//default, inst+8, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//default, inst+33, loaded [template = constants.%.6]
|
||||
// CHECK:STDOUT: %import_ref.5: %Op.type.2 = import_ref Core//default, inst+28, loaded [template = constants.%Op.2]
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//default, inst+28, unloaded
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//default, inst+5, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref Core//default, inst+9, loaded [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Core//default, inst+11, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4: %.5 = import_ref Core//default, inst+39, loaded [template = constants.%.6]
|
||||
// CHECK:STDOUT: %import_ref.5: %Op.type.2 = import_ref Core//default, inst+34, loaded [template = constants.%Op.2]
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//default, inst+34, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -181,15 +188,18 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
|
||||
// CHECK:STDOUT: %self.param_patt: i32 = param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: i32 = binding_pattern other
|
||||
// CHECK:STDOUT: %other.param_patt: i32 = param_pattern %other.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @impl.%.loc6_6.2 [template = i32]
|
||||
// CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @impl.%.loc6_6.2 [template = i32]
|
||||
// CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @impl.%.loc6_6.2 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc7_13: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %self: i32 = bind_name self, %param.loc7_13
|
||||
// CHECK:STDOUT: %param.loc7_26: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %other: i32 = bind_name other, %param.loc7_26
|
||||
// CHECK:STDOUT: %self.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %self: i32 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %other.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %other: i32 = bind_name other, %other.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc6_22: <witness> = interface_witness (%Op.decl) [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -36,14 +36,20 @@ var arr: [i32; Core.TestAdd(1, 2)] = (1, 2, 3);
|
||||
// CHECK:STDOUT: .Int32 = %Int32.decl
|
||||
// CHECK:STDOUT: .TestAdd = %TestAdd.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {} {
|
||||
// CHECK:STDOUT: %return: ref type = var <return slot>
|
||||
// CHECK:STDOUT: %Int32.decl: %Int32.type = fn_decl @Int32 [template = constants.%Int32] {
|
||||
// CHECK:STDOUT: %return.patt: type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: type = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %return.param: type = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestAdd.decl: %TestAdd.type = fn_decl @TestAdd [template = constants.%TestAdd] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_15: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_15.1: type = value_of_initializer %int.make_type_32.loc5_15 [template = i32]
|
||||
@@ -54,11 +60,12 @@ var arr: [i32; Core.TestAdd(1, 2)] = (1, 2, 3);
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_31: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_31.1: type = value_of_initializer %int.make_type_32.loc5_31 [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_31.2: type = converted %int.make_type_32.loc5_31, %.loc5_31.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc5_13: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc5_13
|
||||
// CHECK:STDOUT: %param.loc5_21: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc5_21
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -90,8 +97,8 @@ var arr: [i32; Core.TestAdd(1, 2)] = (1, 2, 3);
|
||||
// CHECK:STDOUT: .TestAdd = %import_ref.2
|
||||
// CHECK:STDOUT: import Core//core
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//core, inst+2, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %TestAdd.type = import_ref Core//core, inst+24, loaded [template = constants.%TestAdd]
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//core, inst+5, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %TestAdd.type = import_ref Core//core, inst+30, loaded [template = constants.%TestAdd]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
|
||||
@@ -39,7 +39,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
|
||||
@@ -94,7 +94,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -114,8 +114,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc12_12.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc12_12.2: type = converted %int.make_type_32, %.loc12_12.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Run2.decl: %Run2.type = fn_decl @Run2 [template = constants.%Run2] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
@@ -129,10 +129,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc13_20: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc13_20.1: type = value_of_initializer %int.make_type_32.loc13_20 [template = i32]
|
||||
// CHECK:STDOUT: %.loc13_20.2: type = converted %int.make_type_32.loc13_20, %.loc13_20.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc13_10: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc13_10
|
||||
// CHECK:STDOUT: %param.loc13_18: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc13_18
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -66,13 +66,13 @@ fn F() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+52, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)]
|
||||
// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+64, unloaded
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+55, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)]
|
||||
// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -89,8 +89,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_9.2: type = converted %int.make_type_32, %.loc11_9.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -67,14 +67,14 @@ fn Run() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+42, loaded [template = constants.%Float]
|
||||
// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.3: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+46, loaded [template = constants.%ImplicitAs]
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+52, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+71, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)]
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+64, unloaded
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+64, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+64, unloaded
|
||||
// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Core//prelude/types, inst+57, loaded [template = constants.%Float]
|
||||
// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.3: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs]
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+55, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%.1 (%.4) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.8)]
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -84,12 +84,16 @@ fn Run() {
|
||||
// CHECK:STDOUT: .Run = %Run.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} {
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] {
|
||||
// CHECK:STDOUT: %return.patt: f64 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: f64 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11_13.1: i32 = int_literal 64 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%.loc11_13.1) [template = f64]
|
||||
// CHECK:STDOUT: %.loc11_13.2: type = value_of_initializer %float.make_type [template = f64]
|
||||
// CHECK:STDOUT: %.loc11_13.3: type = converted %float.make_type, %.loc11_13.2 [template = f64]
|
||||
// CHECK:STDOUT: %return: ref f64 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: f64 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref f64 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+7
-4
@@ -41,7 +41,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -54,6 +54,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [template = constants.%Echo] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_12: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_12.1: type = value_of_initializer %int.make_type_32.loc11_12 [template = i32]
|
||||
@@ -61,9 +63,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_20: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_20.1: type = value_of_initializer %int.make_type_32.loc11_20 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_20.2: type = converted %int.make_type_32.loc11_20, %.loc11_20.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -46,7 +46,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -68,10 +68,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -33,10 +33,14 @@ fn Main() {
|
||||
// CHECK:STDOUT: .B = %B
|
||||
// CHECK:STDOUT: .Main = %Main.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} {
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11_12.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc11_12.2: type = converted %.loc11_12.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, %A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %B: %A.type = bind_alias B, %A.decl [template = constants.%A]
|
||||
|
||||
@@ -36,14 +36,17 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [template = constants.%Echo] {
|
||||
// CHECK:STDOUT: %a.patt: %.1 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %.1 = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11_13.1: %.1 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc11_13.2: type = converted %.loc11_13.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc11_20.1: %.1 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc11_20.2: type = converted %.loc11_20.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.1 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.1 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: %.1 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -35,14 +35,17 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [template = constants.%Echo] {
|
||||
// CHECK:STDOUT: %a.patt: %.1 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %.1 = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11_13.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc11_13.2: type = converted %.loc11_13.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc11_20.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc11_20.2: type = converted %.loc11_20.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.1 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.1 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: %.1 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+2
-2
@@ -39,8 +39,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc14_13.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc14_13.2: type = converted %.loc14_13.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %self: %.1 = bind_name self, %param
|
||||
// CHECK:STDOUT: %self.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %self: %.1 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -39,7 +39,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -56,8 +56,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -40,7 +40,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -57,8 +57,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -40,7 +40,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -62,10 +62,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -41,7 +41,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -63,10 +63,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -35,7 +35,7 @@ fn F(n: i32, a: [i32; n]*);
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -56,10 +56,10 @@ fn F(n: i32, a: [i32; n]*);
|
||||
// CHECK:STDOUT: %int.make_type_32.loc14_18: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %n.ref: i32 = name_ref n, %n
|
||||
// CHECK:STDOUT: %.loc14_25: type = ptr_type <error> [template = <error>]
|
||||
// CHECK:STDOUT: %param.loc14_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n: i32 = bind_name n, %param.loc14_7
|
||||
// CHECK:STDOUT: %param.loc14_15: <error> = param runtime_param1
|
||||
// CHECK:STDOUT: %a: <error> = bind_name a, %param.loc14_15
|
||||
// CHECK:STDOUT: %n.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %a.param: <error> = param runtime_param1
|
||||
// CHECK:STDOUT: %a: <error> = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -38,7 +38,7 @@ fn F(n: i32, n: i32);
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -59,10 +59,10 @@ fn F(n: i32, n: i32);
|
||||
// CHECK:STDOUT: %int.make_type_32.loc17_17: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc17_17.1: type = value_of_initializer %int.make_type_32.loc17_17 [template = i32]
|
||||
// CHECK:STDOUT: %.loc17_17.2: type = converted %int.make_type_32.loc17_17, %.loc17_17.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc17_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc17_6: i32 = bind_name n, %param.loc17_7
|
||||
// CHECK:STDOUT: %param.loc17_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %n.loc17_14: i32 = bind_name n, %param.loc17_15
|
||||
// CHECK:STDOUT: %n.param.loc17_7: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n.loc17_6: i32 = bind_name n, %n.param.loc17_7
|
||||
// CHECK:STDOUT: %n.param.loc17_15: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %n.loc17_14: i32 = bind_name n, %n.param.loc17_15
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+90
-74
@@ -288,7 +288,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -305,6 +305,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_9.1: type = value_of_initializer %int.make_type_32.loc5_9 [template = i32]
|
||||
@@ -312,13 +314,16 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_17: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_17.1: type = value_of_initializer %int.make_type_32.loc5_17 [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_17.2: type = converted %int.make_type_32.loc5_17, %.loc5_17.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %c.patt: %.3 = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %.3 = param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6_10: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_14.1: %.2 = tuple_literal (%int.make_type_32.loc6_10)
|
||||
@@ -329,9 +334,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %.loc6_25.1: type = value_of_initializer %int.make_type_32.loc6_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_25.2: type = converted %int.make_type_32.loc6_25, %.loc6_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_28: type = struct_type {.c: i32} [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %param
|
||||
// CHECK:STDOUT: %c.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace [template] {
|
||||
@@ -385,7 +391,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -402,6 +408,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_44: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_44.1: type = value_of_initializer %int.make_type_32.loc5_44 [template = i32]
|
||||
@@ -409,13 +417,16 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_52: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_52.1: type = value_of_initializer %int.make_type_32.loc5_52 [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_52.2: type = converted %int.make_type_32.loc5_52, %.loc5_52.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %c.patt: %.3 = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %.3 = param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6_45: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_49.1: %.2 = tuple_literal (%int.make_type_32.loc6_45)
|
||||
@@ -426,9 +437,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %.loc6_60.1: type = value_of_initializer %int.make_type_32.loc6_60 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_60.2: type = converted %int.make_type_32.loc6_60, %.loc6_60.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_63: type = struct_type {.c: i32} [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %param
|
||||
// CHECK:STDOUT: %c.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace [template] {
|
||||
@@ -473,14 +485,14 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+23, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+45, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+48, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+26, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+51, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+54, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = %import_ref.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+52, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+58, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.7
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -492,7 +504,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -599,14 +611,14 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+23, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+45, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+48, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+26, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+51, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+54, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = file.%E.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+52, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+58, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.7
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -618,7 +630,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -645,9 +657,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc23_24: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc23_24.1: type = value_of_initializer %int.make_type_32.loc23_24 [template = i32]
|
||||
// CHECK:STDOUT: %.loc23_24.2: type = converted %int.make_type_32.loc23_24, %.loc23_24.1 [template = i32]
|
||||
// CHECK:STDOUT: %return.var: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc23_21: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc32_17: init type = call constants.%Int32() [template = i32]
|
||||
@@ -659,9 +672,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %.loc32_32.1: type = value_of_initializer %int.make_type_32.loc32_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc32_32.2: type = converted %int.make_type_32.loc32_32, %.loc32_32.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc32_35: type = struct_type {.c: i32} [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return.var: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %param
|
||||
// CHECK:STDOUT: %c.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc32_24: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} {}
|
||||
@@ -753,14 +767,14 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//extern_api, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+23, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+45, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+48, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//extern_api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+26, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+51, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+54, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//extern_api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = file.%E.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+52, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+58, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.7
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -772,7 +786,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.7: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -799,9 +813,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int.make_type_32.loc7_24: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc7_24.1: type = value_of_initializer %int.make_type_32.loc7_24 [template = i32]
|
||||
// CHECK:STDOUT: %.loc7_24.2: type = converted %int.make_type_32.loc7_24, %.loc7_24.1 [template = i32]
|
||||
// CHECK:STDOUT: %return.var: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc7_21: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc8_17: init type = call constants.%Int32() [template = i32]
|
||||
@@ -813,9 +828,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %.loc8_32.1: type = value_of_initializer %int.make_type_32.loc8_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc8_32.2: type = converted %int.make_type_32.loc8_32, %.loc8_32.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc8_35: type = struct_type {.c: i32} [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return.var: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %param
|
||||
// CHECK:STDOUT: %c.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc8_24: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} {}
|
||||
@@ -906,19 +922,19 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+23, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+45, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+48, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, inst+26, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, inst+51, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, inst+54, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = %import_ref.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+52, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, inst+58, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Main//extern_api, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Main//extern_api, inst+23, unloaded
|
||||
// CHECK:STDOUT: %import_ref.9 = import_ref Main//extern_api, inst+45, unloaded
|
||||
// CHECK:STDOUT: %import_ref.10 = import_ref Main//extern_api, inst+48, unloaded
|
||||
// CHECK:STDOUT: %import_ref.11 = import_ref Main//extern_api, inst+52, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Main//extern_api, inst+26, unloaded
|
||||
// CHECK:STDOUT: %import_ref.9 = import_ref Main//extern_api, inst+51, unloaded
|
||||
// CHECK:STDOUT: %import_ref.10 = import_ref Main//extern_api, inst+54, unloaded
|
||||
// CHECK:STDOUT: %import_ref.11 = import_ref Main//extern_api, inst+58, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.12
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -930,7 +946,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1036,19 +1052,19 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//extern_api, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+23, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+45, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+48, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//extern_api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, inst+26, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, inst+51, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, inst+54, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//extern_api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = %import_ref.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+52, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, inst+58, loaded [template = constants.%E]
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Main//api, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Main//api, inst+23, unloaded
|
||||
// CHECK:STDOUT: %import_ref.9 = import_ref Main//api, inst+45, unloaded
|
||||
// CHECK:STDOUT: %import_ref.10 = import_ref Main//api, inst+48, unloaded
|
||||
// CHECK:STDOUT: %import_ref.11 = import_ref Main//api, inst+52, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Main//api, inst+26, unloaded
|
||||
// CHECK:STDOUT: %import_ref.9 = import_ref Main//api, inst+51, unloaded
|
||||
// CHECK:STDOUT: %import_ref.10 = import_ref Main//api, inst+54, unloaded
|
||||
// CHECK:STDOUT: %import_ref.11 = import_ref Main//api, inst+58, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.12
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -1060,7 +1076,7 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.12: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1146,14 +1162,14 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1 = import_ref Main//api, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//api, inst+23, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//api, inst+45, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//api, inst+48, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//api, inst+26, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//api, inst+51, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//api, inst+54, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = %import_ref.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Main//api, inst+52, unloaded
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Main//api, inst+58, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/operators
|
||||
@@ -1183,14 +1199,14 @@ import library "extern_api";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_api, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//extern_api, inst+23, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//extern_api, inst+45, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//extern_api, inst+48, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//extern_api, inst+51, loaded
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//extern_api, inst+26, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//extern_api, inst+51, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//extern_api, inst+54, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref Main//extern_api, inst+57, loaded
|
||||
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
|
||||
// CHECK:STDOUT: .E = %import_ref.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Main//extern_api, inst+52, unloaded
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Main//extern_api, inst+58, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/operators
|
||||
|
||||
@@ -178,8 +178,8 @@ class C {
|
||||
// CHECK:STDOUT: %self.param_patt: %C = param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %self: %C = bind_name self, %param
|
||||
// CHECK:STDOUT: %self.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %self: %C = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc14: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Vendored
+29
-13
@@ -115,21 +115,37 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl.loc5: type = class_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [template = constants.%ReturnCUnused] {} {
|
||||
// CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [template = constants.%ReturnCUnused] {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ReturnCUsed.decl: %ReturnCUsed.type = fn_decl @ReturnCUsed [template = constants.%ReturnCUsed] {} {
|
||||
// CHECK:STDOUT: %ReturnCUsed.decl: %ReturnCUsed.type = fn_decl @ReturnCUsed [template = constants.%ReturnCUsed] {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ReturnDUnused.decl: %ReturnDUnused.type = fn_decl @ReturnDUnused [template = constants.%ReturnDUnused] {} {
|
||||
// CHECK:STDOUT: %ReturnDUnused.decl: %ReturnDUnused.type = fn_decl @ReturnDUnused [template = constants.%ReturnDUnused] {
|
||||
// CHECK:STDOUT: %return.patt: %D = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [template = constants.%D]
|
||||
// CHECK:STDOUT: %return: ref %D = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %D = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %D = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ReturnDUsed.decl: %ReturnDUsed.type = fn_decl @ReturnDUsed [template = constants.%ReturnDUsed] {} {
|
||||
// CHECK:STDOUT: %ReturnDUsed.decl: %ReturnDUsed.type = fn_decl @ReturnDUsed [template = constants.%ReturnDUsed] {
|
||||
// CHECK:STDOUT: %return.patt: %D = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %D = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [template = constants.%D]
|
||||
// CHECK:STDOUT: %return: ref %D = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %D = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %D = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] {} {}
|
||||
// CHECK:STDOUT: %D.decl.loc37: type = class_decl @D [template = constants.%D] {} {}
|
||||
@@ -185,11 +201,11 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1 = import_ref Main//incomplete_return, inst+1, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//incomplete_return, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3: %ReturnCUnused.type = import_ref Main//incomplete_return, inst+7, loaded [template = constants.%ReturnCUnused]
|
||||
// CHECK:STDOUT: %import_ref.4: %ReturnCUsed.type = import_ref Main//incomplete_return, inst+13, loaded [template = constants.%ReturnCUsed]
|
||||
// CHECK:STDOUT: %import_ref.5: %ReturnDUnused.type = import_ref Main//incomplete_return, inst+18, loaded [template = constants.%ReturnDUnused]
|
||||
// CHECK:STDOUT: %import_ref.6: %ReturnDUsed.type = import_ref Main//incomplete_return, inst+23, loaded [template = constants.%ReturnDUsed]
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Main//incomplete_return, inst+26, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3: %ReturnCUnused.type = import_ref Main//incomplete_return, inst+10, loaded [template = constants.%ReturnCUnused]
|
||||
// CHECK:STDOUT: %import_ref.4: %ReturnCUsed.type = import_ref Main//incomplete_return, inst+19, loaded [template = constants.%ReturnCUsed]
|
||||
// CHECK:STDOUT: %import_ref.5: %ReturnDUnused.type = import_ref Main//incomplete_return, inst+27, loaded [template = constants.%ReturnDUnused]
|
||||
// CHECK:STDOUT: %import_ref.6: %ReturnDUsed.type = import_ref Main//incomplete_return, inst+35, loaded [template = constants.%ReturnDUsed]
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref Main//incomplete_return, inst+38, unloaded
|
||||
// CHECK:STDOUT: %import_ref.8 = import_ref Main//incomplete_return, inst+4, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+6
-6
@@ -91,8 +91,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc21_10.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc21_10.2: type = converted %.loc21_10.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param.loc21: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc21: %.1 = bind_name x, %param.loc21
|
||||
// CHECK:STDOUT: %x.param.loc21: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc21: %.1 = bind_name x, %x.param.loc21
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl.loc29: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %x.patt: %.1 = binding_pattern x
|
||||
@@ -100,8 +100,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc29_10.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc29_10.2: type = converted %.loc29_10.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param.loc29: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc29: %.1 = bind_name x, %param.loc29
|
||||
// CHECK:STDOUT: %x.param.loc29: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc29: %.1 = bind_name x, %x.param.loc29
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.2] {
|
||||
@@ -110,8 +110,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc39_10.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc39_10.2: type = converted %.loc39_10.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl.loc41: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %D.decl.loc49: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
|
||||
@@ -36,7 +36,7 @@ fn G(a: i32);
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -53,8 +53,8 @@ fn G(a: i32);
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_9.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_9.2: type = converted %int.make_type_32, %.loc11_9.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
@@ -63,8 +63,8 @@ fn G(a: i32);
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc13_9.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc13_9.2: type = converted %int.make_type_32, %.loc13_9.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+28
-21
@@ -141,7 +141,7 @@ fn D() {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -157,6 +157,8 @@ fn D() {}
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: i32 = param_pattern %b.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_9: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_9.1: type = value_of_initializer %int.make_type_32.loc5_9 [template = i32]
|
||||
@@ -164,13 +166,16 @@ fn D() {}
|
||||
// CHECK:STDOUT: %int.make_type_32.loc5_17: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_17.1: type = value_of_initializer %int.make_type_32.loc5_17 [template = i32]
|
||||
// CHECK:STDOUT: %.loc5_17.2: type = converted %int.make_type_32.loc5_17, %.loc5_17.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %c.patt: %.3 = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %.3 = param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6_10: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_14.1: %.2 = tuple_literal (%int.make_type_32.loc6_10)
|
||||
@@ -181,9 +186,10 @@ fn D() {}
|
||||
// CHECK:STDOUT: %.loc6_25.1: type = value_of_initializer %int.make_type_32.loc6_25 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_25.2: type = converted %int.make_type_32.loc6_25, %.loc6_25.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_28: type = struct_type {.c: i32} [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %param
|
||||
// CHECK:STDOUT: %c.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %c: %.3 = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -266,9 +272,9 @@ fn D() {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//fns, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+24, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//fns, inst+48, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+60, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+27, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//fns, inst+54, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+66, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.5
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -280,7 +286,7 @@ fn D() {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -354,9 +360,9 @@ fn D() {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//fns, inst+3, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+24, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+48, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+60, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, inst+27, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+54, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, inst+66, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: .Int32 = %import_ref.5
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -368,7 +374,7 @@ fn D() {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.5: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -389,9 +395,10 @@ fn D() {}
|
||||
// CHECK:STDOUT: %int.make_type_32.loc23_17: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc23_17.1: type = value_of_initializer %int.make_type_32.loc23_17 [template = i32]
|
||||
// CHECK:STDOUT: %.loc23_17.2: type = converted %int.make_type_32.loc23_17, %.loc23_17.1 [template = i32]
|
||||
// CHECK:STDOUT: %return.var: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc23_14: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -452,9 +459,9 @@ fn D() {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1 = import_ref Main//fns, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//fns, inst+24, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+48, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//fns, inst+60, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Main//fns, inst+27, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, inst+54, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//fns, inst+66, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/operators
|
||||
|
||||
+32
-16
@@ -113,8 +113,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc19_10.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc19_10.2: type = converted %.loc19_10.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %.1 = binding_pattern x
|
||||
@@ -122,8 +122,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc21_10.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc21_10.2: type = converted %.loc21_10.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc29: %.type.2 = fn_decl @.2 [template = constants.%.3] {} {}
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {
|
||||
@@ -132,37 +132,53 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc31_10.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc31_10.2: type = converted %.loc31_10.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %.1 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc36: %.type.3 = fn_decl @.3 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %x.patt: <error> = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: <error> = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: <error> = param runtime_param0
|
||||
// CHECK:STDOUT: %x: <error> = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: <error> = param runtime_param0
|
||||
// CHECK:STDOUT: %x: <error> = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: %I.type = fn_decl @I [template = constants.%I] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc46: %.type.4 = fn_decl @.4 [template = constants.%.5] {} {
|
||||
// CHECK:STDOUT: %.decl.loc46: %.type.4 = fn_decl @.4 [template = constants.%.5] {
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc46_12.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc46_12.2: type = converted %.loc46_12.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [template = constants.%J] {} {
|
||||
// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [template = constants.%J] {
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc48_12.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc48_12.2: type = converted %.loc48_12.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc56: %.type.5 = fn_decl @.5 [template = constants.%.6] {} {}
|
||||
// CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [template = constants.%K] {} {
|
||||
// CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [template = constants.%K] {
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc58_12.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc58_12.2: type = converted %.loc58_12.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc65: %.type.6 = fn_decl @.6 [template = constants.%.8] {} {
|
||||
// CHECK:STDOUT: %.decl.loc65: %.type.6 = fn_decl @.6 [template = constants.%.8] {
|
||||
// CHECK:STDOUT: %return.patt: %.7 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.7 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc65_12.1: %.7 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc65_12.2: type = converted %.loc65_12.1, constants.%.7 [template = constants.%.7]
|
||||
// CHECK:STDOUT: %return: ref %.7 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.7 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.7 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+60
-52
@@ -197,32 +197,32 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_name a, %param.loc7
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_name a, %a.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [template = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc8: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc8: %C = bind_name a, %param.loc8
|
||||
// CHECK:STDOUT: %a.param.loc8: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc8: %C = bind_name a, %a.param.loc8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl.loc10: %Bar.type = fn_decl @Bar [template = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc10: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc10: %C = bind_name a, %param.loc10
|
||||
// CHECK:STDOUT: %a.param.loc10: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc10: %C = bind_name a, %a.param.loc10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl.loc11: %Bar.type = fn_decl @Bar [template = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc11: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc11: %C = bind_name a, %param.loc11
|
||||
// CHECK:STDOUT: %a.param.loc11: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc11: %C = bind_name a, %a.param.loc11
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -266,16 +266,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc6: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc6: %C = bind_name a, %param.loc6
|
||||
// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc6: %C = bind_name a, %a.param.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_name a, %param.loc7
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_name a, %a.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -316,16 +316,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -366,16 +366,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc6: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc6: %C = bind_name a, %param.loc6
|
||||
// CHECK:STDOUT: %a.param.loc6: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc6: %C = bind_name a, %a.param.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_name a, %param.loc7
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_name a, %a.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -419,16 +419,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -479,16 +479,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -535,16 +535,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %b.patt: %C = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: %C = param_pattern %b.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %b: %C = bind_name b, %param
|
||||
// CHECK:STDOUT: %b.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %b: %C = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -590,16 +590,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %a.patt: %C = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -648,16 +648,16 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc7_8.1, runtime_param<invalid> [symbolic = %a.patt.loc7_8.2 (constants.%a.patt.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc7_8.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc7_8.2 (constants.%a)]
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc7_8.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_8.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %a.patt.loc15_8.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_8.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt.loc15_8.1, runtime_param<invalid> [symbolic = %a.patt.loc15_8.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc15_8.1: %C = bind_symbolic_name a, 0, %param [symbolic = %a.loc15_8.2 (constants.%a)]
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc15_8.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_8.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -719,13 +719,21 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} {
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [template = constants.%Foo] {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return.var.loc7: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %return.param.loc7: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %.loc7: ref %C = return_slot %return.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} {
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [template = constants.%Foo] {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %return.param.loc8: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param.loc8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -766,8 +774,8 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -813,8 +821,8 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param_patt: %C = param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -855,8 +863,8 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc6: type = const_type %C [template = constants.%.3]
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.3 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.3 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.5] {
|
||||
// CHECK:STDOUT: %a.patt: %.3 = binding_pattern a
|
||||
@@ -865,8 +873,8 @@ fn Foo(a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc17_18: type = const_type %C [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc17_11: type = const_type %.3 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.3 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: %.3 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: %.3 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -32,7 +32,7 @@ fn Foo(a: i32) {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -48,8 +48,8 @@ fn Foo(a: i32) {}
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -32,7 +32,7 @@ fn Foo(a: i32,) {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -48,8 +48,8 @@ fn Foo(a: i32,) {}
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_11.2: type = converted %int.make_type_32, %.loc11_11.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -32,7 +32,7 @@ fn Foo(a: i32, b: i32) {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -53,10 +53,10 @@ fn Foo(a: i32, b: i32) {}
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -32,7 +32,7 @@ fn Foo(a: i32, b: i32,) {}
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -53,10 +53,10 @@ fn Foo(a: i32, b: i32,) {}
|
||||
// CHECK:STDOUT: %int.make_type_32.loc11_19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.1: type = value_of_initializer %int.make_type_32.loc11_19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc11_19.2: type = converted %int.make_type_32.loc11_19, %.loc11_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %param.loc11_9: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %param.loc11_9
|
||||
// CHECK:STDOUT: %param.loc11_17: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %param.loc11_17
|
||||
// CHECK:STDOUT: %a.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %a: i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: i32 = param runtime_param1
|
||||
// CHECK:STDOUT: %b: i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+89
-57
@@ -165,7 +165,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -179,30 +179,40 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param<invalid> [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_39.1: type = ptr_type %T [symbolic = %.loc4_39.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] {} {
|
||||
// CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] {
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_37.1: type = value_of_initializer %int.make_type_32.loc6 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_37.2: type = converted %int.make_type_32.loc6, %.loc6_37.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_37.3: type = ptr_type i32 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg.decl: %CallExplicitGenericParamWithGenericArg.type = fn_decl @CallExplicitGenericParamWithGenericArg [template = constants.%CallExplicitGenericParamWithGenericArg] {
|
||||
// CHECK:STDOUT: %T.patt.loc10_43.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_43.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10_43.1, runtime_param<invalid> [symbolic = %T.patt.loc10_43.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc10: type = name_ref T, %T.loc10_43.1 [symbolic = %T.loc10_43.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc10_62.1: type = struct_type {.a: %T} [symbolic = %.loc10_62.2 (constants.%.6)]
|
||||
// CHECK:STDOUT: %.loc10_63.1: type = ptr_type %.6 [symbolic = %.loc10_63.2 (constants.%.7)]
|
||||
// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = var <return slot>
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc10_43.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_43.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param: @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%.loc10_63.2 (%.7) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -350,26 +360,29 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param<invalid> [symbolic = %T.patt.loc4_25.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_39.1: type = ptr_type %T [symbolic = %.loc4_39.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param: @ExplicitGenericParam.%.loc4_39.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%.loc4_39.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParamConst.decl: %CallExplicitGenericParamConst.type = fn_decl @CallExplicitGenericParamConst [template = constants.%CallExplicitGenericParamConst] {
|
||||
// CHECK:STDOUT: %T.patt.loc6_34.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_34.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_34.1, runtime_param<invalid> [symbolic = %T.patt.loc6_34.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_34.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc6_34.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_34.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_34.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitGenericParamNonConst.decl: %CallExplicitGenericParamNonConst.type = fn_decl @CallExplicitGenericParamNonConst [template = constants.%CallExplicitGenericParamNonConst] {
|
||||
// CHECK:STDOUT: %T.patt: type = binding_pattern T
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param0
|
||||
// CHECK:STDOUT: %T: type = bind_name T, %param
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param0
|
||||
// CHECK:STDOUT: %T: type = bind_name T, %T.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -492,20 +505,27 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6_27.1, runtime_param<invalid> [symbolic = %T.patt.loc6_27.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc6_40: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc6_46: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc6_47.1: type = ptr_type %T [symbolic = %.loc6_47.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc6_28: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %param.loc6_28 [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc6_38: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %param.loc6_38
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_27.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%.loc6_47.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] {} {
|
||||
// CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] {
|
||||
// CHECK:STDOUT: %return.patt: %.6 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.6 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %A.ref.loc10: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %.loc10: type = ptr_type %A [template = constants.%.6]
|
||||
// CHECK:STDOUT: %return: ref %.6 = var <return slot>
|
||||
// CHECK:STDOUT: %.loc10_37: type = ptr_type %A [template = constants.%.6]
|
||||
// CHECK:STDOUT: %return.param: %.6 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.6 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -608,7 +628,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -623,19 +643,24 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_25.1, runtime_param<invalid> [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitGenericParam.%.loc4_45.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitGenericParam.%.loc4_45.2 (%.1) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_45.1: type = ptr_type %T [symbolic = %.loc4_45.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%.loc4_45.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_26: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param.loc4_26 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_36: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %param.loc4_36
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @ImplicitGenericParam.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @ImplicitGenericParam.%.loc4_45.2 (%.1) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%.loc4_45.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImplicitGenericParam.decl: %CallImplicitGenericParam.type = fn_decl @CallImplicitGenericParam [template = constants.%CallImplicitGenericParam] {
|
||||
// CHECK:STDOUT: %n.patt: i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: i32 = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %.4 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.4 = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32.loc6_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_32.1: type = value_of_initializer %int.make_type_32.loc6_32 [template = i32]
|
||||
@@ -644,9 +669,10 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %.loc6_43.1: type = value_of_initializer %int.make_type_32.loc6_40 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_43.2: type = converted %int.make_type_32.loc6_40, %.loc6_43.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_43.3: type = ptr_type i32 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %return: ref %.4 = var <return slot>
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n: i32 = bind_name n, %param
|
||||
// CHECK:STDOUT: %n.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %n: i32 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: %.4 = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %.4 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -742,7 +768,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -764,10 +790,10 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %.loc4_35.2: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_35.3: type = converted %int.make_type_32, %.loc4_35.2 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_35.4: type = converted %.loc4_35.1, constants.%.3 [symbolic = %.loc4_35.5 (constants.%.3)]
|
||||
// CHECK:STDOUT: %param.loc4_16: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %param.loc4_16 [symbolic = %T.loc4_15.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_26: @TupleParam.%.loc4_35.5 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @TupleParam.%.loc4_35.5 (%.3) = bind_name x, %param.loc4_26
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @TupleParam.%.loc4_35.5 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @TupleParam.%.loc4_35.5 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallTupleParam.decl: %CallTupleParam.type = fn_decl @CallTupleParam [template = constants.%CallTupleParam] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -845,7 +871,7 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -866,10 +892,10 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %.loc4_41.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_41.2: type = converted %int.make_type_32, %.loc4_41.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_44.1: type = struct_type {.a: %T, .b: i32} [symbolic = %.loc4_44.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %param.loc4_17 [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_27: @StructParam.%.loc4_44.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @StructParam.%.loc4_44.2 (%.2) = bind_name x, %param.loc4_27
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @StructParam.%.loc4_44.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @StructParam.%.loc4_44.2 (%.2) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallStructParam.decl: %CallStructParam.type = fn_decl @CallStructParam [template = constants.%CallStructParam] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -946,16 +972,19 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc6_35.1, runtime_param<invalid> [symbolic = %U.patt.loc6_35.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_25.1 [symbolic = %T.loc6_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc6_35.1 [symbolic = %U.loc6_35.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%U.loc6_35.2 (%U) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc6_26: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_25.1: type = bind_symbolic_name T, 0, %param.loc6_26 [symbolic = %T.loc6_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc6_36: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc6_35.1: type = bind_symbolic_name U, 1, %param.loc6_36 [symbolic = %U.loc6_35.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %param.loc6_46: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = bind_name x, %param.loc6_46
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc6_35.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc6_35.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc6_25.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @ImplicitNotDeducible.%U.loc6_35.2 (%U) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%U.loc6_35.2 (%U) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImplicitNotDeducible.decl: %CallImplicitNotDeducible.type = fn_decl @CallImplicitNotDeducible [template = constants.%CallImplicitNotDeducible] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1025,17 +1054,20 @@ fn CallImplicitNotDeducible() {
|
||||
// CHECK:STDOUT: %x.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %y.patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = binding_pattern y
|
||||
// CHECK:STDOUT: %y.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %y.patt, runtime_param1
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_50: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%T.loc4_25.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_26: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %param.loc4_26 [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_36: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name x, %param.loc4_36
|
||||
// CHECK:STDOUT: %param.loc4_42: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %y: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name y, %param.loc4_42
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %y.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %y: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = bind_name y, %y.param
|
||||
// CHECK:STDOUT: %return.param: @ImplicitNotDeducible.%T.loc4_25.2 (%T) = param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @ImplicitNotDeducible.%T.loc4_25.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImplicitNotDeducible.decl: %CallImplicitNotDeducible.type = fn_decl @CallImplicitNotDeducible [template = constants.%CallImplicitNotDeducible] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -37,7 +37,7 @@ fn F(N:! i32, a: [i32; N]*);
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -61,10 +61,10 @@ fn F(N:! i32, a: [i32; N]*);
|
||||
// CHECK:STDOUT: %.loc14_19.2: type = converted %int.make_type_32.loc14_19, %.loc14_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc14_25: type = array_type %N.ref, i32 [template = <error>]
|
||||
// CHECK:STDOUT: %.loc14_26: type = ptr_type <error> [template = <error>]
|
||||
// CHECK:STDOUT: %param.loc14_7: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc14_6.1: i32 = bind_symbolic_name N, 0, %param.loc14_7 [symbolic = %N.loc14_6.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %param.loc14_16: <error> = param runtime_param0
|
||||
// CHECK:STDOUT: %a: <error> = bind_name a, %param.loc14_16
|
||||
// CHECK:STDOUT: %N.param: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc14_6.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_6.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %a.param: <error> = param runtime_param0
|
||||
// CHECK:STDOUT: %a: <error> = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -91,55 +91,67 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param<invalid> [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Function.%T.loc4_13.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_26: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_32: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_14: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_24: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %param.loc4_24
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Function.%T.loc4_13.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [template = constants.%CallGeneric] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_16.1, runtime_param<invalid> [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGeneric.%T.loc8_16.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGeneric.%T.loc8_16.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc8_29: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc8_35: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc8_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %param.loc8_17 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc8_27: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %param.loc8_27
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_19.1, runtime_param<invalid> [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc12_20: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %param.loc12_20 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc12_30: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %param.loc12_30
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] {
|
||||
// CHECK:STDOUT: %x.patt: %C = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc18_20: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc18_26: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: %C = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -211,8 +223,8 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %x.ref: %C = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc19: <specific function> = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.8]
|
||||
// CHECK:STDOUT: %.loc18: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18
|
||||
// CHECK:STDOUT: %.loc18_23.2: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18_23.2
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -297,55 +309,67 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_13.1, runtime_param<invalid> [symbolic = %T.patt.loc4_13.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Function.%T.loc4_13.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%T.loc4_13.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_26: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_32: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_14: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %param.loc4_14 [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_24: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %param.loc4_24
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Function.%T.loc4_13.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Function.%T.loc4_13.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Function.%T.loc4_13.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Function.%T.loc4_13.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGeneric.decl: %CallGeneric.type = fn_decl @CallGeneric [template = constants.%CallGeneric] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc8_16.1, runtime_param<invalid> [symbolic = %T.patt.loc8_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGeneric.%T.loc8_16.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGeneric.%T.loc8_16.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGeneric.%T.loc8_16.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc8_29: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc8_35: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc8_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %param.loc8_17 [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc8_27: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %param.loc8_27
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc8_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGeneric.%T.loc8_16.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGeneric.%T.loc8_16.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGeneric.%T.loc8_16.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc12_19.1, runtime_param<invalid> [symbolic = %T.patt.loc12_19.2 (constants.%T.patt.3)]
|
||||
// CHECK:STDOUT: %x.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%.loc12_33.2 (%.3) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_33.1: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_40: type = ptr_type %T [symbolic = %.loc12_33.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc12_20: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %param.loc12_20 [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc12_30: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %param.loc12_30
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @CallGenericPtr.%.loc12_33.2 (%.3) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @CallGenericPtr.%.loc12_33.2 (%.3) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @CallGenericPtr.%.loc12_33.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] {
|
||||
// CHECK:STDOUT: %x.patt: %C = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %C = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc18_20: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc18_26: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %return: ref %C = var <return slot>
|
||||
// CHECK:STDOUT: %param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %param
|
||||
// CHECK:STDOUT: %x.param: %C = param runtime_param0
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: %C = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -413,8 +437,8 @@ fn CallSpecific(x: C) -> C {
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: %C = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc19: <specific function> = specific_function %Function.ref, @Function(constants.%C) [template = constants.%.8]
|
||||
// CHECK:STDOUT: %.loc18: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18
|
||||
// CHECK:STDOUT: %.loc18_23.2: ref %C = splice_block %return {}
|
||||
// CHECK:STDOUT: %Function.call: init %C = call %.loc19(%x.ref) to %.loc18_23.2
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+4
-4
@@ -39,10 +39,10 @@ fn F(T:! type, U:! type) {
|
||||
// CHECK:STDOUT: %U.patt.loc11_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc11_16.1, runtime_param<invalid> [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param.loc11_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc11_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1, %param.loc11_17 [symbolic = %U.loc11_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc11_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -28,8 +28,8 @@ fn F(T:! type);
|
||||
// CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+8
-5
@@ -33,17 +33,20 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %p.patt: @F.%.loc11_21.2 (%.2) = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: @F.%.loc11_21.2 (%.2) = param_pattern %p.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc11_20.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc11_20.2 (%.1) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc11_20.1: type = ptr_type %T [symbolic = %.loc11_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc11_21.1: type = ptr_type %.1 [symbolic = %.loc11_21.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %T.ref.loc11_27: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc11_28: type = ptr_type %T [symbolic = %.loc11_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc11_20.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc11_17: @F.%.loc11_21.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %p: @F.%.loc11_21.2 (%.2) = bind_name p, %param.loc11_17
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %p.param: @F.%.loc11_21.2 (%.2) = param runtime_param0
|
||||
// CHECK:STDOUT: %p: @F.%.loc11_21.2 (%.2) = bind_name p, %p.param
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc11_20.2 (%.1) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc11_20.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -32,8 +32,8 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+8
-5
@@ -32,14 +32,17 @@ fn F(T:! type, n: T) -> T {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_6.1, runtime_param<invalid> [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %n.patt: @F.%T.loc11_6.2 (%T) = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: @F.%T.loc11_6.2 (%T) = param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.%T.loc11_6.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%T.loc11_6.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc11_25: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @F.%T.loc11_6.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc11_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %param.loc11_7 [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc11_17: @F.%T.loc11_6.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %param.loc11_17
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %n.param: @F.%T.loc11_6.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %n: @F.%T.loc11_6.2 (%T) = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: @F.%T.loc11_6.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%T.loc11_6.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+61
-37
@@ -124,22 +124,28 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %F.decl.loc4: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_20.1: type = ptr_type %T [symbolic = %.loc4_20.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return.var.loc4: ref @F.%.loc4_20.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param.loc4: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.param.loc4: @F.%.loc4_20.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %.loc4_16: ref @F.%.loc4_20.2 (%.1) = return_slot %return.param.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc6: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc6: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc6, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %return.patt: %.1 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %.1 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc6: type = name_ref T, %T.loc6 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %.loc6: type = ptr_type %T [symbolic = constants.%.1]
|
||||
// CHECK:STDOUT: %return: ref %.1 = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc6: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %param.loc6 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %.loc6_20: type = ptr_type %T [symbolic = constants.%.1]
|
||||
// CHECK:STDOUT: %T.param.loc6: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc6: type = bind_symbolic_name T, 0, %T.param.loc6 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %return.param.loc6: %.1 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %.1 = return_slot %return.param.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -220,28 +226,34 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param<invalid> [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param<invalid> [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T [symbolic = %.loc4_30.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %T.patt.loc13_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_6.1, runtime_param<invalid> [symbolic = %T.patt.loc13_6.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %U.patt.loc13_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_16.1, runtime_param<invalid> [symbolic = %U.patt.loc13_16.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: type = ptr_type %U [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc13_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %param.loc13_7 [symbolic = %T.loc13_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc13_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %param.loc13_17 [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc13_16.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -332,28 +344,34 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param<invalid> [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param<invalid> [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T.1 [symbolic = %.loc4_30.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_6.1, runtime_param<invalid> [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_16.1, runtime_param<invalid> [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: type = ptr_type %T.2 [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc13_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %param.loc13_7 [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %param.loc13_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %param.loc13_17 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -444,28 +462,34 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_6.1, runtime_param<invalid> [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc4_16.1, runtime_param<invalid> [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)]
|
||||
// CHECK:STDOUT: %return.patt: @F.%.loc4_30.2 (%.1) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%.loc4_30.2 (%.1) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: type = ptr_type %T.1 [symbolic = %.loc4_30.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %param.loc4_7 [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %param.loc4_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %param.loc4_17 [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)]
|
||||
// CHECK:STDOUT: %return.param: @F.%.loc4_30.2 (%.1) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%.loc4_30.2 (%.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = param_pattern %U.patt.loc13_6.1, runtime_param<invalid> [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc13_16.1, runtime_param<invalid> [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %return.patt: @.1.%.loc13_30.2 (%.3) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @.1.%.loc13_30.2 (%.3) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_6.1 [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: type = ptr_type %U.2 [symbolic = %.loc13_30.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc13_7: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %param.loc13_7 [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %param.loc13_17: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %param.loc13_17 [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %U.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %return.param: @.1.%.loc13_30.2 (%.3) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @.1.%.loc13_30.2 (%.3) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -59,8 +59,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+20, loaded [template = constants.%Int]
|
||||
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types, inst+29, loaded [template = constants.%Int]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -77,8 +77,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_23.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc4_23.2: type = converted %int.make_type_32, %.loc4_23.1 [template = i32]
|
||||
// CHECK:STDOUT: %param: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %param [symbolic = %N.loc4_19.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %N.param: i32 = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %N.loc4_19.1: i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_19.2 (constants.%N)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallNegative.decl: %CallNegative.type = fn_decl @CallNegative [template = constants.%CallNegative] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -74,7 +74,7 @@ fn G() {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -89,8 +89,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T.patt.loc11_12.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc11_12.1, runtime_param<invalid> [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_12.1: type = bind_symbolic_name T, 0, %param [symbolic = %T.loc11_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {}
|
||||
@@ -105,9 +105,13 @@ fn G() {
|
||||
// CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] {} {
|
||||
// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] {
|
||||
// CHECK:STDOUT: %return.patt: @Make.%T (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Make.%T (%T) = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc11_12.1 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Make.%T (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: @Make.%T (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @Make.%T (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+53
-29
@@ -78,7 +78,7 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -93,20 +93,27 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_12.1, runtime_param<invalid> [symbolic = %T.patt.loc4_12.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @Defined.%T.loc4_12.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Defined.%T.loc4_12.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Defined.%T.loc4_12.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Defined.%T.loc4_12.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_25: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_31: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Defined.%T.loc4_12.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_13: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %param.loc4_13 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_23: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Defined.%T.loc4_12.2 (%T) = bind_name x, %param.loc4_23
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Defined.%T.loc4_12.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Defined.%T.loc4_12.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Defined.%T.loc4_12.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {} {
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc8_21.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc8_21.2: type = converted %int.make_type_32, %.loc8_21.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -177,7 +184,7 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -192,34 +199,44 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %x.patt: %T = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %T = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %T = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_25: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_31: type = name_ref T, %T.loc4_12.1 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return.var.loc4: ref @Defined.%T.loc4_12.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_13: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %param.loc4_13 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_23: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc4: @Defined.%T.loc4_12.2 (%T) = bind_name x, %param.loc4_23
|
||||
// CHECK:STDOUT: %T.param.loc4: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_12.1: type = bind_symbolic_name T, 0, %T.param.loc4 [symbolic = %T.loc4_12.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param.loc4: @Defined.%T.loc4_12.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc4: @Defined.%T.loc4_12.2 (%T) = bind_name x, %x.param.loc4
|
||||
// CHECK:STDOUT: %return.param.loc4: @Defined.%T.loc4_12.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %.loc4: ref @Defined.%T.loc4_12.2 (%T) = return_slot %return.param.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {} {
|
||||
// CHECK:STDOUT: %CallDefined.decl: %CallDefined.type = fn_decl @CallDefined [template = constants.%CallDefined] {
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_21.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_21.2: type = converted %int.make_type_32, %.loc6_21.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Defined.decl.loc10: %Defined.type = fn_decl @Defined [template = constants.%Defined] {
|
||||
// CHECK:STDOUT: %T.patt.loc10: type = symbolic_binding_pattern T, 0 [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc10, runtime_param<invalid> [symbolic = constants.%T.patt.2]
|
||||
// CHECK:STDOUT: %x.patt: %T = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %T = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %T = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %T = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc10_25: type = name_ref T, %T.loc10 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %T.ref.loc10_31: type = name_ref T, %T.loc10 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %return: ref %T = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc10_13: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %param.loc10_13 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %param.loc10_23: %T = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc10: %T = bind_name x, %param.loc10_23
|
||||
// CHECK:STDOUT: %T.param.loc10: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %T.param.loc10 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %x.param.loc10: %T = param runtime_param0
|
||||
// CHECK:STDOUT: %x.loc10: %T = bind_name x, %x.param.loc10
|
||||
// CHECK:STDOUT: %return.param.loc10: %T = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %T = return_slot %return.param.loc10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -289,7 +306,7 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude/operators/comparison
|
||||
// CHECK:STDOUT: import Core//prelude/types/bool
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+9, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -304,20 +321,27 @@ fn CallUndefined() -> i32 {
|
||||
// CHECK:STDOUT: %T.param_patt: type = param_pattern %T.patt.loc4_14.1, runtime_param<invalid> [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @Undefined.%T.loc4_14.2 (%T) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @Undefined.%T.loc4_14.2 (%T) = param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @Undefined.%T.loc4_14.2 (%T) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Undefined.%T.loc4_14.2 (%T) = param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4_27: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.ref.loc4_33: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %return: ref @Undefined.%T.loc4_14.2 (%T) = var <return slot>
|
||||
// CHECK:STDOUT: %param.loc4_15: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %param.loc4_15 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %param.loc4_25: @Undefined.%T.loc4_14.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Undefined.%T.loc4_14.2 (%T) = bind_name x, %param.loc4_25
|
||||
// CHECK:STDOUT: %T.param: type = param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %x.param: @Undefined.%T.loc4_14.2 (%T) = param runtime_param0
|
||||
// CHECK:STDOUT: %x: @Undefined.%T.loc4_14.2 (%T) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: @Undefined.%T.loc4_14.2 (%T) = param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @Undefined.%T.loc4_14.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallUndefined.decl: %CallUndefined.type = fn_decl @CallUndefined [template = constants.%CallUndefined] {} {
|
||||
// CHECK:STDOUT: %CallUndefined.decl: %CallUndefined.type = fn_decl @CallUndefined [template = constants.%CallUndefined] {
|
||||
// CHECK:STDOUT: %return.patt: i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: i32 = param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int.make_type_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_23.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc6_23.2: type = converted %int.make_type_32, %.loc6_23.1 [template = i32]
|
||||
// CHECK:STDOUT: %return: ref i32 = var <return slot>
|
||||
// CHECK:STDOUT: %return.param: i32 = param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user