Skip to content

Commit c3cda96

Browse files
authored
flambda-backend: Add two new methods to targetint for dwarf (#560)
1 parent e6f1fed commit c3cda96

File tree

3 files changed

+52
-5
lines changed

3 files changed

+52
-5
lines changed

.depend

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,15 @@ utils/target_system.cmx : \
140140
utils/target_system.cmi
141141
utils/target_system.cmi :
142142
utils/targetint.cmo : \
143+
utils/numbers.cmi \
143144
utils/misc.cmi \
144145
utils/targetint.cmi
145146
utils/targetint.cmx : \
147+
utils/numbers.cmx \
146148
utils/misc.cmx \
147149
utils/targetint.cmi
148-
utils/targetint.cmi :
150+
utils/targetint.cmi : \
151+
utils/numbers.cmi
149152
utils/terminfo.cmo : \
150153
utils/terminfo.cmi
151154
utils/terminfo.cmx : \
@@ -340,13 +343,15 @@ parsing/lexer.cmo : \
340343
utils/misc.cmi \
341344
parsing/location.cmi \
342345
parsing/docstrings.cmi \
346+
utils/clflags.cmi \
343347
parsing/lexer.cmi
344348
parsing/lexer.cmx : \
345349
utils/warnings.cmx \
346350
parsing/parser.cmx \
347351
utils/misc.cmx \
348352
parsing/location.cmx \
349353
parsing/docstrings.cmx \
354+
utils/clflags.cmx \
350355
parsing/lexer.cmi
351356
parsing/lexer.cmi : \
352357
parsing/parser.cmi \
@@ -522,6 +527,7 @@ typing/ctype.cmo : \
522527
typing/types.cmi \
523528
typing/type_immediacy.cmi \
524529
typing/subst.cmi \
530+
typing/primitive.cmi \
525531
typing/predef.cmi \
526532
typing/path.cmi \
527533
utils/misc.cmi \
@@ -538,6 +544,7 @@ typing/ctype.cmx : \
538544
typing/types.cmx \
539545
typing/type_immediacy.cmx \
540546
typing/subst.cmx \
547+
typing/primitive.cmx \
541548
typing/predef.cmx \
542549
typing/path.cmx \
543550
utils/misc.cmx \
@@ -553,6 +560,7 @@ typing/ctype.cmx : \
553560
typing/ctype.cmi : \
554561
typing/types.cmi \
555562
typing/type_immediacy.cmi \
563+
typing/primitive.cmi \
556564
typing/path.cmi \
557565
parsing/longident.cmi \
558566
typing/ident.cmi \
@@ -690,6 +698,7 @@ typing/includecore.cmo : \
690698
typing/typedtree.cmi \
691699
typing/type_immediacy.cmi \
692700
typing/printtyp.cmi \
701+
typing/primitive.cmi \
693702
typing/path.cmi \
694703
typing/ident.cmi \
695704
typing/env.cmi \
@@ -703,6 +712,7 @@ typing/includecore.cmx : \
703712
typing/typedtree.cmx \
704713
typing/type_immediacy.cmx \
705714
typing/printtyp.cmx \
715+
typing/primitive.cmx \
706716
typing/path.cmx \
707717
typing/ident.cmx \
708718
typing/env.cmx \
@@ -1051,6 +1061,7 @@ typing/printtyped.cmo : \
10511061
parsing/location.cmi \
10521062
typing/ident.cmi \
10531063
utils/clflags.cmi \
1064+
typing/btype.cmi \
10541065
parsing/asttypes.cmi \
10551066
typing/printtyped.cmi
10561067
typing/printtyped.cmx : \
@@ -1063,6 +1074,7 @@ typing/printtyped.cmx : \
10631074
parsing/location.cmx \
10641075
typing/ident.cmx \
10651076
utils/clflags.cmx \
1077+
typing/btype.cmx \
10661078
parsing/asttypes.cmi \
10671079
typing/printtyped.cmi
10681080
typing/printtyped.cmi : \
@@ -1260,6 +1272,7 @@ typing/typecore.cmo : \
12601272
utils/misc.cmi \
12611273
parsing/longident.cmi \
12621274
parsing/location.cmi \
1275+
utils/local_store.cmi \
12631276
typing/ident.cmi \
12641277
parsing/extensions.cmi \
12651278
typing/env.cmi \
@@ -1291,6 +1304,7 @@ typing/typecore.cmx : \
12911304
utils/misc.cmx \
12921305
parsing/longident.cmx \
12931306
parsing/location.cmx \
1307+
utils/local_store.cmx \
12941308
typing/ident.cmx \
12951309
parsing/extensions.cmx \
12961310
typing/env.cmx \
@@ -1313,6 +1327,7 @@ typing/typecore.cmi : \
13131327
typing/env.cmi \
13141328
typing/ctype.cmi \
13151329
utils/clflags.cmi \
1330+
typing/btype.cmi \
13161331
parsing/asttypes.cmi
13171332
typing/typedecl.cmo : \
13181333
utils/warnings.cmi \
@@ -1562,6 +1577,7 @@ typing/typemod.cmo : \
15621577
utils/load_path.cmi \
15631578
typing/includemod.cmi \
15641579
typing/ident.cmi \
1580+
typing/envaux.cmi \
15651581
typing/env.cmi \
15661582
typing/ctype.cmi \
15671583
utils/config.cmi \
@@ -1594,6 +1610,7 @@ typing/typemod.cmx : \
15941610
utils/load_path.cmx \
15951611
typing/includemod.cmx \
15961612
typing/ident.cmx \
1613+
typing/envaux.cmx \
15971614
typing/env.cmx \
15981615
typing/ctype.cmx \
15991616
utils/config.cmx \
@@ -2369,7 +2386,6 @@ asmcomp/cmm_helpers.cmo : \
23692386
asmcomp/strmatch.cmi \
23702387
asmcomp/proc.cmi \
23712388
typing/primitive.cmi \
2372-
utils/numbers.cmi \
23732389
utils/misc.cmi \
23742390
lambda/lambda.cmi \
23752391
lambda/debuginfo.cmi \
@@ -2392,7 +2408,6 @@ asmcomp/cmm_helpers.cmx : \
23922408
asmcomp/strmatch.cmx \
23932409
asmcomp/proc.cmx \
23942410
typing/primitive.cmx \
2395-
utils/numbers.cmx \
23962411
utils/misc.cmx \
23972412
lambda/lambda.cmx \
23982413
lambda/debuginfo.cmx \
@@ -2501,13 +2516,15 @@ asmcomp/coloring.cmi :
25012516
asmcomp/comballoc.cmo : \
25022517
asmcomp/reg.cmi \
25032518
asmcomp/mach.cmi \
2519+
lambda/lambda.cmi \
25042520
lambda/debuginfo.cmi \
25052521
utils/config.cmi \
25062522
asmcomp/arch.cmo \
25072523
asmcomp/comballoc.cmi
25082524
asmcomp/comballoc.cmx : \
25092525
asmcomp/reg.cmx \
25102526
asmcomp/mach.cmx \
2527+
lambda/lambda.cmx \
25112528
lambda/debuginfo.cmx \
25122529
utils/config.cmx \
25132530
asmcomp/arch.cmx \
@@ -3162,6 +3179,7 @@ middle_end/compilenv.cmi : \
31623179
middle_end/flambda/simple_value_approx.cmi \
31633180
middle_end/flambda/base_types/set_of_closures_id.cmi \
31643181
middle_end/linkage_name.cmi \
3182+
lambda/lambda.cmi \
31653183
typing/ident.cmi \
31663184
middle_end/flambda/export_info.cmi \
31673185
middle_end/compilation_unit.cmi \
@@ -3240,9 +3258,11 @@ middle_end/printclambda_primitives.cmx : \
32403258
middle_end/printclambda_primitives.cmi : \
32413259
middle_end/clambda_primitives.cmi
32423260
middle_end/semantics_of_primitives.cmo : \
3261+
lambda/lambda.cmi \
32433262
middle_end/clambda_primitives.cmi \
32443263
middle_end/semantics_of_primitives.cmi
32453264
middle_end/semantics_of_primitives.cmx : \
3265+
lambda/lambda.cmx \
32463266
middle_end/clambda_primitives.cmx \
32473267
middle_end/semantics_of_primitives.cmi
32483268
middle_end/semantics_of_primitives.cmi : \
@@ -3556,6 +3576,7 @@ lambda/translcore.cmo : \
35563576
typing/ident.cmi \
35573577
typing/env.cmi \
35583578
lambda/debuginfo.cmi \
3579+
typing/ctype.cmi \
35593580
utils/config.cmi \
35603581
utils/clflags.cmi \
35613582
typing/btype.cmi \
@@ -3584,12 +3605,14 @@ lambda/translcore.cmx : \
35843605
typing/ident.cmx \
35853606
typing/env.cmx \
35863607
lambda/debuginfo.cmx \
3608+
typing/ctype.cmx \
35873609
utils/config.cmx \
35883610
utils/clflags.cmx \
35893611
typing/btype.cmx \
35903612
parsing/asttypes.cmi \
35913613
lambda/translcore.cmi
35923614
lambda/translcore.cmi : \
3615+
typing/types.cmi \
35933616
typing/typedtree.cmi \
35943617
typing/path.cmi \
35953618
parsing/location.cmi \
@@ -3654,6 +3677,7 @@ lambda/translobj.cmo : \
36543677
lambda/lambda.cmi \
36553678
typing/ident.cmi \
36563679
typing/env.cmi \
3680+
lambda/debuginfo.cmi \
36573681
utils/config.cmi \
36583682
utils/clflags.cmi \
36593683
typing/btype.cmi \
@@ -3665,6 +3689,7 @@ lambda/translobj.cmx : \
36653689
lambda/lambda.cmx \
36663690
typing/ident.cmx \
36673691
typing/env.cmx \
3692+
lambda/debuginfo.cmx \
36683693
utils/config.cmx \
36693694
utils/clflags.cmx \
36703695
typing/btype.cmx \
@@ -3681,7 +3706,6 @@ lambda/translprim.cmo : \
36813706
typing/primitive.cmi \
36823707
typing/predef.cmi \
36833708
typing/path.cmi \
3684-
utils/misc.cmi \
36853709
lambda/matching.cmi \
36863710
parsing/location.cmi \
36873711
lambda/lambda.cmi \
@@ -3699,7 +3723,6 @@ lambda/translprim.cmx : \
36993723
typing/primitive.cmx \
37003724
typing/predef.cmx \
37013725
typing/path.cmx \
3702-
utils/misc.cmx \
37033726
lambda/matching.cmx \
37043727
parsing/location.cmx \
37053728
lambda/lambda.cmx \
@@ -3773,6 +3796,7 @@ file_formats/cmt_format.cmi : \
37733796
file_formats/cmi_format.cmi
37743797
file_formats/cmx_format.cmi : \
37753798
utils/misc.cmi \
3799+
lambda/lambda.cmi \
37763800
middle_end/flambda/export_info.cmi \
37773801
middle_end/clambda.cmi
37783802
file_formats/cmxs_format.cmi : \
@@ -3910,6 +3934,7 @@ middle_end/flambda/augment_specialised_args.cmo : \
39103934
middle_end/flambda/pass_wrapper.cmi \
39113935
middle_end/flambda/parameter.cmi \
39123936
utils/misc.cmi \
3937+
lambda/lambda.cmi \
39133938
middle_end/internal_variable_names.cmi \
39143939
utils/int_replace_polymorphic_compare.cmi \
39153940
middle_end/flambda/inlining_cost.cmi \
@@ -3929,6 +3954,7 @@ middle_end/flambda/augment_specialised_args.cmx : \
39293954
middle_end/flambda/pass_wrapper.cmx \
39303955
middle_end/flambda/parameter.cmx \
39313956
utils/misc.cmx \
3957+
lambda/lambda.cmx \
39323958
middle_end/internal_variable_names.cmx \
39333959
utils/int_replace_polymorphic_compare.cmx \
39343960
middle_end/flambda/inlining_cost.cmx \
@@ -4573,6 +4599,7 @@ middle_end/flambda/flambda_utils.cmi : \
45734599
middle_end/flambda/base_types/set_of_closures_id.cmi \
45744600
middle_end/flambda/projection.cmi \
45754601
middle_end/flambda/parameter.cmi \
4602+
lambda/lambda.cmi \
45764603
middle_end/internal_variable_names.cmi \
45774604
middle_end/flambda/flambda.cmi \
45784605
middle_end/flambda/base_types/closure_id.cmi
@@ -4711,6 +4738,7 @@ middle_end/flambda/inline_and_simplify.cmo : \
47114738
middle_end/flambda/base_types/static_exception.cmi \
47124739
middle_end/flambda/simplify_primitives.cmi \
47134740
middle_end/flambda/simple_value_approx.cmi \
4741+
middle_end/semantics_of_primitives.cmi \
47144742
middle_end/flambda/remove_unused_arguments.cmi \
47154743
middle_end/flambda/remove_free_vars_equal_to_args.cmi \
47164744
middle_end/flambda/projection.cmi \
@@ -4754,6 +4782,7 @@ middle_end/flambda/inline_and_simplify.cmx : \
47544782
middle_end/flambda/base_types/static_exception.cmx \
47554783
middle_end/flambda/simplify_primitives.cmx \
47564784
middle_end/flambda/simple_value_approx.cmx \
4785+
middle_end/semantics_of_primitives.cmx \
47574786
middle_end/flambda/remove_unused_arguments.cmx \
47584787
middle_end/flambda/remove_free_vars_equal_to_args.cmx \
47594788
middle_end/flambda/projection.cmx \
@@ -5128,16 +5157,19 @@ middle_end/flambda/lift_let_to_initialize_symbol.cmi : \
51285157
middle_end/backend_intf.cmi
51295158
middle_end/flambda/parameter.cmo : \
51305159
middle_end/variable.cmi \
5160+
lambda/lambda.cmi \
51315161
utils/int_replace_polymorphic_compare.cmi \
51325162
utils/identifiable.cmi \
51335163
middle_end/flambda/parameter.cmi
51345164
middle_end/flambda/parameter.cmx : \
51355165
middle_end/variable.cmx \
5166+
lambda/lambda.cmx \
51365167
utils/int_replace_polymorphic_compare.cmx \
51375168
utils/identifiable.cmx \
51385169
middle_end/flambda/parameter.cmi
51395170
middle_end/flambda/parameter.cmi : \
51405171
middle_end/variable.cmi \
5172+
lambda/lambda.cmi \
51415173
utils/identifiable.cmi \
51425174
middle_end/compilation_unit.cmi
51435175
middle_end/flambda/pass_wrapper.cmo : \

utils/targetint.ml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,12 @@ include (val
102102
| 64 -> (module Int64)
103103
| _ -> assert false
104104
) : S)
105+
106+
let size_in_bytes_as_targetint =
107+
match size with 32 -> of_int32 4l | 64 -> of_int64 8L | _ -> assert false
108+
109+
let nonnegative_to_uint64_exn t =
110+
match repr t with
111+
| Int32 t -> Numbers.Uint64.of_nonnegative_int32_exn t
112+
| Int64 t -> Numbers.Uint64.of_nonnegative_int64_exn t
113+

utils/targetint.mli

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,3 +205,9 @@ val repr : t -> repr
205205

206206
val print : Format.formatter -> t -> unit
207207
(** Print a target integer to a formatter. *)
208+
209+
val size_in_bytes_as_targetint : t
210+
(** The width of a target integer in bytes, expressed as a value of type [t]. *)
211+
212+
val nonnegative_to_uint64_exn : t -> Numbers.Uint64.t
213+
(** Convert the non-negative given target integer to an unsigned 64-bit integer. *)

0 commit comments

Comments
 (0)