summaryrefslogtreecommitdiff
path: root/asmcomp/cmmgen.ml
diff options
context:
space:
mode:
authorTom Kelly <ctk21@cl.cam.ac.uk>2021-03-08 14:33:11 +0000
committerTom Kelly <ctk21@cl.cam.ac.uk>2021-03-08 14:33:11 +0000
commitaabb079c278e1dbcffcf73ab2805c535cb4744fa (patch)
tree4ef3f0bec55d393b8755d01be97ebae55620bca5 /asmcomp/cmmgen.ml
parent0633a271333df34e8a841bae1d0aa1c6f21c056d (diff)
parenteb342da8a9cdbce0760b91c9b9d5e682ed0d4496 (diff)
downloadocaml-aabb079c278e1dbcffcf73ab2805c535cb4744fa.tar.gz
Merge commit 'eb342da8a9cdbce0760b91c9b9d5e682ed0d4496' into parallel_minor_gc_4_12
Diffstat (limited to 'asmcomp/cmmgen.ml')
-rw-r--r--asmcomp/cmmgen.ml43
1 files changed, 23 insertions, 20 deletions
diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml
index bea15d0b3f..d7254d4d01 100644
--- a/asmcomp/cmmgen.ml
+++ b/asmcomp/cmmgen.ml
@@ -178,7 +178,10 @@ let rec expr_size env = function
let transl_constant dbg = function
| Uconst_int n ->
int_const dbg n
- | Uconst_ref (label, _) ->
+ | Uconst_ref (label, def_opt) ->
+ Option.iter
+ (fun def -> Cmmgen_state.add_structured_constant label def)
+ def_opt;
Cconst_symbol (label, dbg)
let emit_constant cst cont =
@@ -992,17 +995,17 @@ and transl_prim_2 env p arg1 arg2 dbg =
(* Boxed integers *)
| Paddbint bi ->
- box_int dbg bi (Cop(Caddi,
- [transl_unbox_int_low dbg env bi arg1;
- transl_unbox_int_low dbg env bi arg2], dbg))
+ box_int dbg bi (add_int
+ (transl_unbox_int_low dbg env bi arg1)
+ (transl_unbox_int_low dbg env bi arg2) dbg)
| Psubbint bi ->
- box_int dbg bi (Cop(Csubi,
- [transl_unbox_int_low dbg env bi arg1;
- transl_unbox_int_low dbg env bi arg2], dbg))
+ box_int dbg bi (sub_int
+ (transl_unbox_int_low dbg env bi arg1)
+ (transl_unbox_int_low dbg env bi arg2) dbg)
| Pmulbint bi ->
- box_int dbg bi (Cop(Cmuli,
- [transl_unbox_int_low dbg env bi arg1;
- transl_unbox_int_low dbg env bi arg2], dbg))
+ box_int dbg bi (mul_int
+ (transl_unbox_int_low dbg env bi arg1)
+ (transl_unbox_int_low dbg env bi arg2) dbg)
| Pdivbint { size = bi; is_safe } ->
box_int dbg bi (safe_div_bi is_safe
(transl_unbox_int dbg env bi arg1)
@@ -1026,18 +1029,18 @@ and transl_prim_2 env p arg1 arg2 dbg =
[transl_unbox_int_low dbg env bi arg1;
transl_unbox_int_low dbg env bi arg2], dbg))
| Plslbint bi ->
- box_int dbg bi (Cop(Clsl,
- [transl_unbox_int_low dbg env bi arg1;
- untag_int(transl env arg2) dbg], dbg))
+ box_int dbg bi (lsl_int
+ (transl_unbox_int_low dbg env bi arg1)
+ (untag_int(transl env arg2) dbg) dbg)
| Plsrbint bi ->
- box_int dbg bi (Cop(Clsr,
- [make_unsigned_int bi (transl_unbox_int dbg env bi arg1)
- dbg;
- untag_int(transl env arg2) dbg], dbg))
+ box_int dbg bi (lsr_int
+ (make_unsigned_int bi (transl_unbox_int dbg env bi arg1)
+ dbg)
+ (untag_int(transl env arg2) dbg) dbg)
| Pasrbint bi ->
- box_int dbg bi (Cop(Casr,
- [transl_unbox_int dbg env bi arg1;
- untag_int(transl env arg2) dbg], dbg))
+ box_int dbg bi (asr_int
+ (transl_unbox_int dbg env bi arg1)
+ (untag_int(transl env arg2) dbg) dbg)
| Pbintcomp(bi, cmp) ->
tag_int (Cop(Ccmpi cmp,
[transl_unbox_int dbg env bi arg1;