Skip to content

Commit 36020e6

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

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
@@ -393,7 +393,6 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
393393
let element_kind = meet_array_element_kinds element_kind1 element_kind2 in
394394
let<* contents, env_extension =
395395
meet_array_contents env array_contents1 array_contents2
396-
~meet_element_kind:element_kind
397396
in
398397
let<* length, env_extension' = meet env length1 length2 in
399398
(* CR-someday vlaviron: If the element kind is Bottom, we could meet the
@@ -411,8 +410,7 @@ and meet_head_of_kind_value env (head1 : TG.head_of_kind_value)
411410
Bottom
412411

413412
and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
414-
(array_contents2 : TG.array_contents Or_unknown.t)
415-
~(meet_element_kind : _ Or_unknown_or_bottom.t) =
413+
(array_contents2 : TG.array_contents Or_unknown.t) =
416414
meet_unknown
417415
(fun env (array_contents1 : TG.array_contents)
418416
(array_contents2 : TG.array_contents) :
@@ -431,20 +429,7 @@ and meet_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
431429
let<* fields_rev, env_extension' =
432430
fields_rev_and_env_extension
433431
in
434-
let<* field, env_extension =
435-
match meet_element_kind with
436-
| Bottom -> Bottom
437-
| Unknown ->
438-
(* vlaviron: If the meet of the kinds is Unknown, then both
439-
inputs had Unknown kinds. I don't see how we could end up
440-
with an array type where the contents are known but we
441-
don't know the kind, but in that case we wouldn't be able
442-
to call meet because the two sides may have different
443-
kinds. So we'll just return the first input, which is
444-
guaranteed to be a correct approximation of the meet. *)
445-
Ok (field1, TEE.empty)
446-
| Ok _ -> meet env field1 field2
447-
in
432+
let<* field, env_extension = meet env field1 field2 in
448433
let<+ env_extension =
449434
meet_env_extension env env_extension env_extension'
450435
in
@@ -1201,10 +1186,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
12011186
} ) ->
12021187
let alloc_mode = join_alloc_mode alloc_mode1 alloc_mode2 in
12031188
let element_kind = join_array_element_kinds element_kind1 element_kind2 in
1204-
let contents =
1205-
join_array_contents env array_contents1 array_contents2
1206-
~joined_element_kind:element_kind
1207-
in
1189+
let contents = join_array_contents env array_contents1 array_contents2 in
12081190
let>+ length = join env length1 length2 in
12091191
TG.Head_of_kind_value.create_array_with_contents ~element_kind ~length
12101192
contents alloc_mode
@@ -1214,8 +1196,7 @@ and join_head_of_kind_value env (head1 : TG.head_of_kind_value)
12141196
Unknown
12151197

12161198
and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
1217-
(array_contents2 : TG.array_contents Or_unknown.t)
1218-
~(joined_element_kind : _ Or_unknown_or_bottom.t) =
1199+
(array_contents2 : TG.array_contents Or_unknown.t) =
12191200
join_unknown
12201201
(fun env (array_contents1 : TG.array_contents)
12211202
(array_contents2 : TG.array_contents) : TG.array_contents Or_unknown.t ->
@@ -1230,11 +1211,7 @@ and join_array_contents env (array_contents1 : TG.array_contents Or_unknown.t)
12301211
List.fold_left2
12311212
(fun (fields_rev : _ Or_unknown.t) field1 field2 : _ Or_unknown.t ->
12321213
let>* fields_rev = fields_rev in
1233-
let>+ field =
1234-
match joined_element_kind with
1235-
| Bottom | Unknown -> Or_unknown.Unknown
1236-
| Ok _ -> join env field1 field2
1237-
in
1214+
let>+ field = join env field1 field2 in
12381215
field :: fields_rev)
12391216
(Or_unknown.Known []) fields1 fields2
12401217
in

0 commit comments

Comments
 (0)