Skip to content

Commit a233816

Browse files
committed
Revert "Fix Flambda 2 typing for immutable arrays (#1457)"
This reverts commit 4650c76.
1 parent f5b1d1b commit a233816

File tree

1 file changed

+5
-28
lines changed

1 file changed

+5
-28
lines changed

middle_end/flambda2/types/meet_and_join.ml

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,6 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
403403
let element_kind = meet_array_element_kinds element_kind1 element_kind2 in
404404
let<* contents, env_extension =
405405
meet_array_contents env array_contents1 array_contents2
406-
~meet_element_kind:element_kind
407406
in
408407
let<* length, env_extension' = meet env length1 length2 in
409408
(* CR-someday vlaviron: If the element kind is Bottom, we could meet the
@@ -422,8 +421,7 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
422421
Bottom
423422

424423
and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
425-
(array_contents2 : TG.array_contents Or_unknown.t)
426-
~(meet_element_kind : _ Or_unknown_or_bottom.t) =
424+
(array_contents2 : TG.array_contents Or_unknown.t) =
427425
meet_unknown
428426
(fun env (array_contents1 : TG.array_contents)
429427
(array_contents2 : TG.array_contents) :
@@ -442,20 +440,7 @@ and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
442440
let<* fields_rev, env_extension' =
443441
fields_rev_and_env_extension
444442
in
445-
let<* field, env_extension =
446-
match meet_element_kind with
447-
| Bottom -> Bottom
448-
| Unknown ->
449-
(* vlaviron: If the meet of the kinds is Unknown, then both
450-
inputs had Unknown kinds. I don't see how we could end up
451-
with an array type where the contents are known but we
452-
don't know the kind, but in that case we wouldn't be able
453-
to call meet because the two sides may have different
454-
kinds. So we'll just return the first input, which is
455-
guaranteed to be a correct approximation of the meet. *)
456-
Ok (field1, TEE.empty)
457-
| Ok _ -> meet env field1 field2
458-
in
443+
let<* field, env_extension = meet env field1 field2 in
459444
let<+ env_extension =
460445
meet_env_extension env env_extension env_extension'
461446
in
@@ -1224,10 +1209,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
12241209
} ) ->
12251210
let alloc_mode = join_alloc_mode alloc_mode1 alloc_mode2 in
12261211
let element_kind = join_array_element_kinds element_kind1 element_kind2 in
1227-
let contents =
1228-
join_array_contents env array_contents1 array_contents2
1229-
~joined_element_kind:element_kind
1230-
in
1212+
let contents = join_array_contents env array_contents1 array_contents2 in
12311213
let>+ length = join env length1 length2 in
12321214
TG.Head_of_kind_value.create_array_with_contents ~element_kind ~length
12331215
contents alloc_mode
@@ -1238,8 +1220,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
12381220
Unknown
12391221

12401222
and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
1241-
(array_contents2 : TG.array_contents Or_unknown.t)
1242-
~(joined_element_kind : _ Or_unknown_or_bottom.t) =
1223+
(array_contents2 : TG.array_contents Or_unknown.t) =
12431224
join_unknown
12441225
(fun env (array_contents1 : TG.array_contents)
12451226
(array_contents2 : TG.array_contents) : TG.array_contents Or_unknown.t ->
@@ -1254,11 +1235,7 @@ and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
12541235
List.fold_left2
12551236
(fun (fields_rev : _ Or_unknown.t) field1 field2 : _ Or_unknown.t ->
12561237
let>* fields_rev = fields_rev in
1257-
let>+ field =
1258-
match joined_element_kind with
1259-
| Bottom | Unknown -> Or_unknown.Unknown
1260-
| Ok _ -> join env field1 field2
1261-
in
1238+
let>+ field = join env field1 field2 in
12621239
field :: fields_rev)
12631240
(Or_unknown.Known []) fields1 fields2
12641241
in

0 commit comments

Comments
 (0)