Add evaluation for conversion instructions. (#3594)

Also some finessing of evaluation for other instruction kinds and some
additional testing.
This commit is contained in:
Richard Smith
2024-01-11 23:50:04 +00:00
committed by GitHub
parent 7553d864e1
commit a2012d4777
58 changed files with 232 additions and 171 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ fn F() {
// CHECK:STDOUT: %.loc12_17: i32* = addr_of %.loc12_19
// CHECK:STDOUT: assign %r.var, %.loc12_17
// CHECK:STDOUT: %.loc14_19.1: (type, type) = tuple_literal (i32, i32)
// CHECK:STDOUT: %.loc14_19.2: type = converted %.loc14_19.1, constants.%.loc14_19.2
// CHECK:STDOUT: %.loc14_19.2: type = converted %.loc14_19.1, constants.%.loc14_19.2, const = constants.%.loc14_19.2
// CHECK:STDOUT: %t.var: ref (i32, i32) = var t
// CHECK:STDOUT: %t: ref (i32, i32) = bind_name t, %t.var
// CHECK:STDOUT: %.loc14_24: i32 = int_literal 1, const = constants.%.loc14_24
@@ -202,7 +202,7 @@ fn AddressOfParam(param: i32) {
// CHECK:STDOUT: %.loc75_10.1: (i32, i32) = tuple_literal (%.loc75_6, %.loc75_9)
// CHECK:STDOUT: %.loc75_12: i32 = int_literal 0, const = constants.%.loc75_12
// CHECK:STDOUT: %.loc75_10.2: (i32, i32) = tuple_value (%.loc75_6, %.loc75_9), const = constants.%.loc75_10
// CHECK:STDOUT: %.loc75_10.3: (i32, i32) = converted %.loc75_10.1, %.loc75_10.2
// CHECK:STDOUT: %.loc75_10.3: (i32, i32) = converted %.loc75_10.1, %.loc75_10.2, const = constants.%.loc75_10
// CHECK:STDOUT: %.loc75_13: i32 = tuple_index %.loc75_10.3, %.loc75_12
// CHECK:STDOUT: %.loc75_3: i32* = addr_of %.loc75_13
// CHECK:STDOUT: return
@@ -39,11 +39,11 @@ fn Deref(n: i32) {
// CHECK:STDOUT: %.loc11: ref <error> = deref %n.ref
// CHECK:STDOUT: %.loc15_5.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc15_5.2: () = tuple_value (), const = constants.%.loc15_5.2
// CHECK:STDOUT: %.loc15_5.3: () = converted %.loc15_5.1, %.loc15_5.2
// CHECK:STDOUT: %.loc15_5.3: () = converted %.loc15_5.1, %.loc15_5.2, const = constants.%.loc15_5.2
// CHECK:STDOUT: %.loc15_3: ref <error> = deref %.loc15_5.3
// CHECK:STDOUT: %.loc19_5.1: {} = struct_literal ()
// CHECK:STDOUT: %.loc19_5.2: {} = struct_value (), const = constants.%.loc19_5.2
// CHECK:STDOUT: %.loc19_5.3: {} = converted %.loc19_5.1, %.loc19_5.2
// CHECK:STDOUT: %.loc19_5.3: {} = converted %.loc19_5.1, %.loc19_5.2, const = constants.%.loc19_5.2
// CHECK:STDOUT: %.loc19_3: ref <error> = deref %.loc19_5.3
// CHECK:STDOUT: return
// CHECK:STDOUT: }