Skip to content

Commit 7a0d56d

Browse files
authored
Avoid sets of simples (#386)
A `Name.Set.t` or `'a Name.Map.t` is a fine thing, but a `Simple.Set.t` or `'a Simple.Map.t` is much sketchier, since whether we want to treat two simples that differ only in `Rec_info.t` as equivalent depends on context. Fortunately, we usually just need a set or map of names. The one place where this gets tricky is in the uses of `Aliases.get_alias`, so there's now `Aliases.Alias_set.t` to encapsulate the needed operations.
1 parent 241f4c1 commit 7a0d56d

17 files changed

+652
-384
lines changed

.depend

+26-22
Original file line numberDiff line numberDiff line change
@@ -2028,11 +2028,9 @@ asmcomp/afl_instrument.cmi : \
20282028
asmcomp/cmm.cmi
20292029
asmcomp/arch.cmo : \
20302030
utils/config.cmi \
2031-
asmcomp/cmm.cmi \
20322031
utils/clflags.cmi
20332032
asmcomp/arch.cmx : \
20342033
utils/config.cmx \
2035-
asmcomp/cmm.cmx \
20362034
utils/clflags.cmx
20372035
asmcomp/asmgen.cmo : \
20382036
middle_end/flambda/to_cmm/un_cps.cmi \
@@ -4424,17 +4422,20 @@ middle_end/flambda/basic/name.cmo : \
44244422
middle_end/flambda/compilenv_deps/symbol.cmi \
44254423
middle_end/flambda/compilenv_deps/reg_width_things.cmi \
44264424
utils/misc.cmi \
4425+
utils/identifiable.cmi \
44274426
middle_end/flambda/basic/name.cmi
44284427
middle_end/flambda/basic/name.cmx : \
44294428
middle_end/flambda/compilenv_deps/variable.cmx \
44304429
middle_end/flambda/compilenv_deps/symbol.cmx \
44314430
middle_end/flambda/compilenv_deps/reg_width_things.cmx \
44324431
utils/misc.cmx \
4432+
utils/identifiable.cmx \
44334433
middle_end/flambda/basic/name.cmi
44344434
middle_end/flambda/basic/name.cmi : \
44354435
middle_end/flambda/compilenv_deps/variable.cmi \
44364436
middle_end/flambda/compilenv_deps/symbol.cmi \
44374437
middle_end/flambda/compilenv_deps/reg_width_things.cmi \
4438+
utils/identifiable.cmi \
44384439
middle_end/flambda/compilenv_deps/compilation_unit.cmi
44394440
middle_end/flambda/basic/num_continuation_uses.cmo : \
44404441
middle_end/flambda/basic/num_continuation_uses.cmi
@@ -4974,23 +4975,27 @@ middle_end/flambda/from_lambda/closure_conversion_aux.cmi : \
49744975
middle_end/flambda/basic/closure_id.cmi \
49754976
middle_end/flambda/naming/bindable_let_bound.cmi
49764977
middle_end/flambda/from_lambda/cps_conversion.cmo : \
4978+
lambda/tag.cmi \
49774979
lambda/printlambda.cmi \
4978-
middle_end/flambda/from_lambda/prepare_lambda.cmi \
4980+
typing/primitive.cmi \
49794981
utils/numbers.cmi \
49804982
utils/misc.cmi \
49814983
parsing/location.cmi \
4984+
middle_end/flambda/from_lambda/lambda_conversions.cmi \
49824985
lambda/lambda.cmi \
49834986
middle_end/flambda/from_lambda/ilambda.cmi \
49844987
typing/ident.cmi \
49854988
middle_end/flambda/basic/continuation.cmi \
49864989
parsing/asttypes.cmi \
49874990
middle_end/flambda/from_lambda/cps_conversion.cmi
49884991
middle_end/flambda/from_lambda/cps_conversion.cmx : \
4992+
lambda/tag.cmx \
49894993
lambda/printlambda.cmx \
4990-
middle_end/flambda/from_lambda/prepare_lambda.cmx \
4994+
typing/primitive.cmx \
49914995
utils/numbers.cmx \
49924996
utils/misc.cmx \
49934997
parsing/location.cmx \
4998+
middle_end/flambda/from_lambda/lambda_conversions.cmx \
49944999
lambda/lambda.cmx \
49955000
middle_end/flambda/from_lambda/ilambda.cmx \
49965001
typing/ident.cmx \
@@ -5188,11 +5193,9 @@ middle_end/flambda/from_lambda/prepare_lambda.cmo : \
51885193
lambda/tag.cmi \
51895194
lambda/simplif.cmi \
51905195
lambda/printlambda.cmi \
5191-
typing/primitive.cmi \
51925196
utils/numbers.cmi \
51935197
utils/misc.cmi \
51945198
lambda/matching.cmi \
5195-
middle_end/flambda/from_lambda/lambda_conversions.cmi \
51965199
lambda/lambda.cmi \
51975200
typing/ident.cmi \
51985201
middle_end/flambda/compilenv_deps/compilation_unit.cmi \
@@ -5202,11 +5205,9 @@ middle_end/flambda/from_lambda/prepare_lambda.cmx : \
52025205
lambda/tag.cmx \
52035206
lambda/simplif.cmx \
52045207
lambda/printlambda.cmx \
5205-
typing/primitive.cmx \
52065208
utils/numbers.cmx \
52075209
utils/misc.cmx \
52085210
lambda/matching.cmx \
5209-
middle_end/flambda/from_lambda/lambda_conversions.cmx \
52105211
lambda/lambda.cmx \
52115212
typing/ident.cmx \
52125213
middle_end/flambda/compilenv_deps/compilation_unit.cmx \
@@ -6067,6 +6068,7 @@ middle_end/flambda/simplify/common_subexpression_elimination.cmo : \
60676068
middle_end/flambda/compilenv_deps/flambda_features.cmi \
60686069
middle_end/flambda/basic/continuation_extra_params_and_args.cmi \
60696070
middle_end/flambda/basic/apply_cont_rewrite_id.cmi \
6071+
middle_end/flambda/types/env/aliases.cmi \
60706072
middle_end/flambda/simplify/common_subexpression_elimination.cmi
60716073
middle_end/flambda/simplify/common_subexpression_elimination.cmx : \
60726074
middle_end/flambda/compilenv_deps/variable.cmx \
@@ -6084,6 +6086,7 @@ middle_end/flambda/simplify/common_subexpression_elimination.cmx : \
60846086
middle_end/flambda/compilenv_deps/flambda_features.cmx \
60856087
middle_end/flambda/basic/continuation_extra_params_and_args.cmx \
60866088
middle_end/flambda/basic/apply_cont_rewrite_id.cmx \
6089+
middle_end/flambda/types/env/aliases.cmx \
60876090
middle_end/flambda/simplify/common_subexpression_elimination.cmi
60886091
middle_end/flambda/simplify/common_subexpression_elimination.cmi : \
60896092
middle_end/flambda/basic/simple.cmi \
@@ -6629,6 +6632,7 @@ middle_end/flambda/simplify/simplify_import.cmo : \
66296632
middle_end/flambda/simplify/env/upwards_env.cmi \
66306633
middle_end/flambda/simplify/env/upwards_acc.cmi \
66316634
middle_end/flambda/simplify/simplify_simple.cmi \
6635+
middle_end/flambda/basic/reg_width_const.cmi \
66326636
middle_end/flambda/simplify/rebuilt_expr.cmi \
66336637
middle_end/flambda/naming/name_mode.cmi \
66346638
middle_end/flambda/lifting/lifted_constant_state.cmi \
@@ -6652,6 +6656,7 @@ middle_end/flambda/simplify/simplify_import.cmx : \
66526656
middle_end/flambda/simplify/env/upwards_env.cmx \
66536657
middle_end/flambda/simplify/env/upwards_acc.cmx \
66546658
middle_end/flambda/simplify/simplify_simple.cmx \
6659+
middle_end/flambda/basic/reg_width_const.cmx \
66556660
middle_end/flambda/simplify/rebuilt_expr.cmx \
66566661
middle_end/flambda/naming/name_mode.cmx \
66576662
middle_end/flambda/lifting/lifted_constant_state.cmx \
@@ -6675,6 +6680,7 @@ middle_end/flambda/simplify/simplify_import.cmi : \
66756680
middle_end/flambda/simplify/env/upwards_env.cmi \
66766681
middle_end/flambda/simplify/env/upwards_acc.cmi \
66776682
middle_end/flambda/simplify/simplify_simple.cmi \
6683+
middle_end/flambda/basic/reg_width_const.cmi \
66786684
middle_end/flambda/simplify/rebuilt_expr.cmi \
66796685
middle_end/flambda/naming/name_mode.cmi \
66806686
middle_end/flambda/lifting/lifted_constant_state.cmi \
@@ -9205,7 +9211,8 @@ middle_end/flambda/types/flambda_type.cmi : \
92059211
middle_end/flambda/basic/code_id.cmi \
92069212
middle_end/flambda/types/structures/code_age_relation.cmi \
92079213
middle_end/flambda/basic/closure_id.cmi \
9208-
middle_end/flambda/basic/apply_cont_rewrite_id.cmi
9214+
middle_end/flambda/basic/apply_cont_rewrite_id.cmi \
9215+
middle_end/flambda/types/env/aliases.cmi
92099216
middle_end/flambda/types/resolved_type.rec.cmo : \
92109217
middle_end/flambda/basic/reg_width_const.cmi \
92119218
middle_end/flambda/types/basic/or_unknown_or_bottom.cmi \
@@ -9233,6 +9240,7 @@ middle_end/flambda/types/type_descr.rec.cmo : \
92339240
middle_end/flambda/cmx/ids_for_export.cmi \
92349241
middle_end/flambda/compilenv_deps/flambda_colours.cmi \
92359242
utils/clflags.cmi \
9243+
middle_end/flambda/types/env/aliases.cmi \
92369244
middle_end/flambda/types/type_descr.rec.cmi
92379245
middle_end/flambda/types/type_descr.rec.cmx : \
92389246
middle_end/flambda/naming/with_delayed_permutation.cmx \
@@ -9250,6 +9258,7 @@ middle_end/flambda/types/type_descr.rec.cmx : \
92509258
middle_end/flambda/cmx/ids_for_export.cmx \
92519259
middle_end/flambda/compilenv_deps/flambda_colours.cmx \
92529260
utils/clflags.cmx \
9261+
middle_end/flambda/types/env/aliases.cmx \
92539262
middle_end/flambda/types/type_descr.rec.cmi
92549263
middle_end/flambda/types/type_descr.rec.cmi : \
92559264
middle_end/flambda/types/type_head_intf.cmo \
@@ -9517,21 +9526,25 @@ middle_end/flambda/types/env/aliases.cmo : \
95179526
middle_end/flambda/compilenv_deps/variable.cmi \
95189527
middle_end/flambda/basic/simple.cmi \
95199528
middle_end/flambda/naming/renaming.cmi \
9529+
middle_end/flambda/compilenv_deps/reg_width_things.cmi \
95209530
middle_end/flambda/naming/name_mode.cmi \
95219531
middle_end/flambda/basic/name.cmi \
95229532
utils/misc.cmi \
95239533
middle_end/flambda/cmx/ids_for_export.cmi \
9534+
middle_end/flambda/compilenv_deps/flambda_colours.cmi \
95249535
utils/clflags.cmi \
95259536
middle_end/flambda/types/env/binding_time.cmi \
95269537
middle_end/flambda/types/env/aliases.cmi
95279538
middle_end/flambda/types/env/aliases.cmx : \
95289539
middle_end/flambda/compilenv_deps/variable.cmx \
95299540
middle_end/flambda/basic/simple.cmx \
95309541
middle_end/flambda/naming/renaming.cmx \
9542+
middle_end/flambda/compilenv_deps/reg_width_things.cmx \
95319543
middle_end/flambda/naming/name_mode.cmx \
95329544
middle_end/flambda/basic/name.cmx \
95339545
utils/misc.cmx \
95349546
middle_end/flambda/cmx/ids_for_export.cmx \
9547+
middle_end/flambda/compilenv_deps/flambda_colours.cmx \
95359548
utils/clflags.cmx \
95369549
middle_end/flambda/types/env/binding_time.cmx \
95379550
middle_end/flambda/types/env/aliases.cmi
@@ -9567,10 +9580,12 @@ middle_end/flambda/types/env/join_env.rec.cmi : \
95679580
middle_end/flambda/basic/simple.cmi
95689581
middle_end/flambda/types/env/meet_env.rec.cmo : \
95699582
middle_end/flambda/basic/simple.cmi \
9583+
middle_end/flambda/basic/name.cmi \
95709584
utils/misc.cmi \
95719585
middle_end/flambda/types/env/meet_env.rec.cmi
95729586
middle_end/flambda/types/env/meet_env.rec.cmx : \
95739587
middle_end/flambda/basic/simple.cmx \
9588+
middle_end/flambda/basic/name.cmx \
95749589
utils/misc.cmx \
95759590
middle_end/flambda/types/env/meet_env.rec.cmi
95769591
middle_end/flambda/types/env/meet_env.rec.cmi : \
@@ -9639,7 +9654,8 @@ middle_end/flambda/types/env/typing_env.rec.cmi : \
96399654
middle_end/flambda/compilenv_deps/compilation_unit.cmi \
96409655
middle_end/flambda/basic/code_id.cmi \
96419656
middle_end/flambda/types/structures/code_age_relation.cmi \
9642-
middle_end/flambda/basic/apply_cont_rewrite_id.cmi
9657+
middle_end/flambda/basic/apply_cont_rewrite_id.cmi \
9658+
middle_end/flambda/types/env/aliases.cmi
96439659
middle_end/flambda/types/env/typing_env_extension.rec.cmo : \
96449660
middle_end/flambda/compilenv_deps/variable.cmi \
96459661
middle_end/flambda/naming/renaming.cmi \
@@ -10154,25 +10170,21 @@ middle_end/flambda/types/type_of_kind/boilerplate/type_of_kind_value.rec.cmi : \
1015410170
middle_end/flambda/types/type_descr_intf.cmo
1015510171
middle_end/flambda/unboxing/build_unboxing_denv.cmo : \
1015610172
middle_end/flambda/basic/var_within_closure.cmi \
10157-
middle_end/flambda/naming/var_in_binding_pos.cmi \
1015810173
middle_end/flambda/unboxing/unboxing_types.cmi \
1015910174
lambda/tag.cmi \
1016010175
middle_end/flambda/simplify/simplify_import.cmi \
1016110176
middle_end/flambda/basic/simple.cmi \
1016210177
middle_end/flambda/naming/name_mode.cmi \
1016310178
utils/misc.cmi \
10164-
middle_end/flambda/types/flambda_type.cmi \
1016510179
middle_end/flambda/unboxing/build_unboxing_denv.cmi
1016610180
middle_end/flambda/unboxing/build_unboxing_denv.cmx : \
1016710181
middle_end/flambda/basic/var_within_closure.cmx \
10168-
middle_end/flambda/naming/var_in_binding_pos.cmx \
1016910182
middle_end/flambda/unboxing/unboxing_types.cmx \
1017010183
lambda/tag.cmx \
1017110184
middle_end/flambda/simplify/simplify_import.cmx \
1017210185
middle_end/flambda/basic/simple.cmx \
1017310186
middle_end/flambda/naming/name_mode.cmx \
1017410187
utils/misc.cmx \
10175-
middle_end/flambda/types/flambda_type.cmx \
1017610188
middle_end/flambda/unboxing/build_unboxing_denv.cmi
1017710189
middle_end/flambda/unboxing/build_unboxing_denv.cmi : \
1017810190
middle_end/flambda/compilenv_deps/variable.cmi \
@@ -10207,7 +10219,6 @@ middle_end/flambda/unboxing/optimistic_unboxing_decision.cmo : \
1020710219
middle_end/flambda/naming/name_in_binding_pos.cmi \
1020810220
middle_end/flambda/basic/name.cmi \
1020910221
utils/misc.cmi \
10210-
middle_end/flambda/types/flambda_type.cmi \
1021110222
middle_end/flambda/unboxing/optimistic_unboxing_decision.cmi
1021210223
middle_end/flambda/unboxing/optimistic_unboxing_decision.cmx : \
1021310224
middle_end/flambda/basic/var_within_closure.cmx \
@@ -10222,7 +10233,6 @@ middle_end/flambda/unboxing/optimistic_unboxing_decision.cmx : \
1022210233
middle_end/flambda/naming/name_in_binding_pos.cmx \
1022310234
middle_end/flambda/basic/name.cmx \
1022410235
utils/misc.cmx \
10225-
middle_end/flambda/types/flambda_type.cmx \
1022610236
middle_end/flambda/unboxing/optimistic_unboxing_decision.cmi
1022710237
middle_end/flambda/unboxing/optimistic_unboxing_decision.cmi : \
1022810238
middle_end/flambda/unboxing/unboxing_types.cmi \
@@ -10256,7 +10266,6 @@ middle_end/flambda/unboxing/unbox_continuation_params.cmi : \
1025610266
middle_end/flambda/simplify/env/continuation_env_and_param_types.cmi \
1025710267
middle_end/flambda/basic/apply_cont_rewrite_id.cmi
1025810268
middle_end/flambda/unboxing/unboxers.cmo : \
10259-
middle_end/flambda/unboxing/unboxing_types.cmi \
1026010269
utils/targetint.cmi \
1026110270
middle_end/flambda/compilenv_deps/target_imm.cmi \
1026210271
middle_end/flambda/simplify/simplify_import.cmi \
@@ -10265,7 +10274,6 @@ middle_end/flambda/unboxing/unboxers.cmo : \
1026510274
middle_end/flambda/naming/name_mode.cmi \
1026610275
middle_end/flambda/unboxing/unboxers.cmi
1026710276
middle_end/flambda/unboxing/unboxers.cmx : \
10268-
middle_end/flambda/unboxing/unboxing_types.cmx \
1026910277
utils/targetint.cmx \
1027010278
middle_end/flambda/compilenv_deps/target_imm.cmx \
1027110279
middle_end/flambda/simplify/simplify_import.cmx \
@@ -10275,7 +10283,6 @@ middle_end/flambda/unboxing/unboxers.cmx : \
1027510283
middle_end/flambda/unboxing/unboxers.cmi
1027610284
middle_end/flambda/unboxing/unboxers.cmi : \
1027710285
middle_end/flambda/basic/var_within_closure.cmi \
10278-
middle_end/flambda/unboxing/unboxing_types.cmi \
1027910286
middle_end/flambda/compilenv_deps/target_imm.cmi \
1028010287
middle_end/flambda/simplify/simplify_import.cmi \
1028110288
middle_end/flambda/basic/simple.cmi \
@@ -10325,7 +10332,6 @@ middle_end/flambda/unboxing/unboxing_types.cmo : \
1032510332
middle_end/flambda/basic/var_within_closure.cmi \
1032610333
lambda/tag.cmi \
1032710334
middle_end/flambda/simplify/simplify_import.cmi \
10328-
middle_end/flambda/compilenv_deps/reg_width_things.cmi \
1032910335
middle_end/flambda/types/kinds/flambda_kind.cmi \
1033010336
middle_end/flambda/basic/closure_id.cmi \
1033110337
middle_end/flambda/basic/apply_cont_rewrite_id.cmi \
@@ -10335,7 +10341,6 @@ middle_end/flambda/unboxing/unboxing_types.cmx : \
1033510341
middle_end/flambda/basic/var_within_closure.cmx \
1033610342
lambda/tag.cmx \
1033710343
middle_end/flambda/simplify/simplify_import.cmx \
10338-
middle_end/flambda/compilenv_deps/reg_width_things.cmx \
1033910344
middle_end/flambda/types/kinds/flambda_kind.cmx \
1034010345
middle_end/flambda/basic/closure_id.cmx \
1034110346
middle_end/flambda/basic/apply_cont_rewrite_id.cmx \
@@ -10345,7 +10350,6 @@ middle_end/flambda/unboxing/unboxing_types.cmi : \
1034510350
middle_end/flambda/basic/var_within_closure.cmi \
1034610351
lambda/tag.cmi \
1034710352
middle_end/flambda/simplify/simplify_import.cmi \
10348-
middle_end/flambda/compilenv_deps/reg_width_things.cmi \
1034910353
middle_end/flambda/types/kinds/flambda_kind.cmi \
1035010354
middle_end/flambda/basic/closure_id.cmi \
1035110355
middle_end/flambda/basic/apply_cont_rewrite_id.cmi

middle_end/flambda/basic/kinded_parameter.ml

-2
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,6 @@ module List = struct
111111

112112
let name_set t = Name.Set.of_list (List.map Name.var (vars t))
113113

114-
let simple_set t = Simple.Set.of_list (simples t)
115-
116114
let rename t = List.map (fun t -> rename t) t
117115

118116
let arity t = List.map (fun t -> Flambda_kind.With_subkind.kind (kind t)) t

middle_end/flambda/basic/kinded_parameter.mli

-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ module List : sig
6868
(** As for [var_set] but returns a set of [Name]s. *)
6969
val name_set : t -> Name.Set.t
7070

71-
val simple_set : t -> Simple.Set.t
72-
7371
val equal_vars : t -> Variable.t list -> bool
7472

7573
val rename : t -> t

middle_end/flambda/basic/name.ml

+8
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,11 @@ let must_be_symbol_opt t =
104104
pattern_match t
105105
~var:(fun _ -> None)
106106
~symbol:(fun sym -> Some sym)
107+
108+
module Pair = struct
109+
include Identifiable.Make_pair
110+
(Reg_width_things.Name)
111+
(Reg_width_things.Name)
112+
113+
type nonrec t = t * t
114+
end

middle_end/flambda/basic/name.mli

+7
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,10 @@ val must_be_var_opt : t -> Variable.t option
5555
val must_be_symbol_opt : t -> Symbol.t option
5656

5757
val rename : t -> t
58+
59+
module Pair : sig
60+
type nonrec t = t * t
61+
62+
include Identifiable.S with type t := t
63+
end
64+

middle_end/flambda/basic/simple.ml

-8
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,6 @@ module List = struct
158158
else result
159159
end
160160

161-
module Pair = struct
162-
include Identifiable.Make_pair
163-
(Reg_width_things.Simple)
164-
(Reg_width_things.Simple)
165-
166-
type nonrec t = t * t
167-
end
168-
169161
module With_kind = struct
170162
type nonrec t = t * Flambda_kind.t
171163

middle_end/flambda/basic/simple.mli

-6
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,6 @@ module List : sig
9494
include Identifiable.S with type t := t
9595
end
9696

97-
module Pair : sig
98-
type nonrec t = t * t
99-
100-
include Identifiable.S with type t := t
101-
end
102-
10397
module With_kind : sig
10498
type nonrec t = t * Flambda_kind.t
10599

middle_end/flambda/cmx/flambda_cmx_format.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ let create ~final_typing_env ~all_code ~exported_offsets ~used_closure_vars =
6262
Variable.Map.empty
6363
in
6464
let simples =
65-
Simple.Set.fold (fun simple simples ->
65+
Reg_width_things.Simple.Set.fold (fun simple simples ->
6666
Simple.Map.add simple (Simple.export simple) simples)
6767
exported_ids.simples
6868
Simple.Map.empty

0 commit comments

Comments
 (0)