Skip to content

Right-to-left evaluation of arguments of String.get and friends #354

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Oct 29, 2021

Conversation

gretay-js
Copy link
Contributor

A few string-related primitives handled in cmmgen have they arguments evaluated from left to right.
For example, each of the following lines

String.get (print_endline "hello"; "foo") (print_endline "world"; 0) ;;
Bigstring_unix.get (print_endline "hello"; Bigstring_unix.of_string "foo") (print_endline "world"; 0);;
Bytes.get (print_endline "hello"; Bytes.make 10 '\x00') (print_endline "world"; 0);;

prints

hello
world

instead of

world
hello

This PR fixes it to match with the order of evaluation of bytecode and other functions.

Testing: I cannot come up with a test for the change in arrayref_unsafe. I added a test for other functions affected by this PR.

If this change is approved, I'll apply the same fix to cmm_helpers.ml under ocaml/asmcomp and submit a PR upstream.

Copy link
Collaborator

@mshinwell mshinwell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ugh, well spotted

@gretay-js gretay-js added bug Something isn't working backend labels Oct 27, 2021
@mshinwell
Copy link
Collaborator

(For the record this does not affect Flambda 2, which bypasses Cmmgen.)

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

I think there are other occurrences of the same problem in
Cmm_helpers. In particular see mk_compare_ints_untagged
or mk_compare_floats_untagged.

For instance:

% cat s.ml
let[@inline never] f (x : int) (y : int) =
  print_int (compare (print_endline "A"; x) (print_endline "B"; y));
  print_newline ()

let () = f 2 3
% ocaml s.ml
B
A
-1

% ocamlopt s.ml && ./a.out
A
B
-1

@mshinwell
Copy link
Collaborator

(For the record this does not affect Flambda 2, which bypasses Cmmgen.)

Oh but in fact these functions are in Cmm_helpers. I think Flambda 2 should be ok though.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

After some superficial grepping, I think we should look
at the following funtions (in addition to the ones already
mentioned):

  • mk_compare_floats;
  • safe_divmod_bi;
  • send;
  • bytesset_safe;
  • bytes_set;
  • bigstring_set;
  • bigstring_prefetch.

@gretay-js
Copy link
Contributor Author

@xclerc thank you! let me try to fix them.
bigarray_get/set are fine, right?

@mshinwell mshinwell added the to upstream PR should be sent to upstream OCaml label Oct 27, 2021
@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

My grepping was too superficial to yield bigarray_{g,s}et,
but the binding order looks suspicious indeed. And slightly
harder to fix.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

Some bigarrays are indeed affected:

% cat t.ml
let[@inline never] f
    (b : (Complex.t, Bigarray.complex32_elt, Bigarray.c_layout) Bigarray.Array1.t)
    (i : int) =
  print_float (Bigarray.Array1.unsafe_get (print_endline "A"; b) (print_endline "B"; i)).Complex.re;
  print_newline ()

let () = f (Bigarray.(Array1.create complex32 c_layout 3 )) 0
% ocaml t.ml && ocamlopt t.ml && ./a.out
B
A
0.

A
B
0.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

Testing: I cannot come up with a test for the change in arrayref_unsafe. I added a test for other functions affected by this PR.

Here is one:

% cat a.ml && ocaml a.ml && ocamlopt a.ml && ./a.out
let[@inline never] f : type t . t array -> int -> (t -> string) -> unit =
  fun a i c ->
  print_endline (c (Array.unsafe_get (print_endline "A"; a) (print_endline "B"; i)))

let () = f Sys.argv 0 Fun.id
B
A
a.ml

A
B
./a.out

@gretay-js
Copy link
Contributor Author

Fixed all the above except send and bigarray_get/set.
@xclerc Thanks for the tests, I've added them to the PR.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

I don't think the tests should be reused as-is: Bigarray's
create functions do not initialize the arrays, so the tests
will be quite flaky.

@gretay-js
Copy link
Contributor Author

I don't think the tests should be reused as-is: Bigarray's create functions do not initialize the arrays, so the tests will be quite flaky.

I fixed the initialization.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

Indeed, I was misled by the surviving call to create,
but the test does not read from that particular array.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

I think there is still a problem with send:

% cat m.ml && ocaml m.ml && ocamlopt m.ml && ./a.out
let[@inline never] f o x =
  (print_endline "A"; o)#m (print_endline "B"; x)

let () = f (object method m (_ : int) = print_endline "m" end) 1
B
A
m

A
B
m

But maybe it is annoying to fix, like for bigarrays.

@gretay-js
Copy link
Contributor Author

Yeas, I wasn't sure how to fix send and bigarrays. Let's see what upstream response would be - I think it's ready enough to make a PR upstream.

@xclerc
Copy link
Contributor

xclerc commented Oct 27, 2021

Since we have tests to record the issue for bigarrays even
though we delay the fix, I would suggest to do the same for
send. For the sake of consistency/completeness.

@xclerc
Copy link
Contributor

xclerc commented Oct 28, 2021

The following patch appears to fix the issue for bigarray_get,
but it is very lightly tested and not particularly elegant. The idea
is to use a variant of bind to simply collect beforehand what
would be bound and create the let bindings later.

(The same could of course by applied to bigarray_set, and
quite probably to send.)

diff --git a/backend/cmm_helpers.ml b/backend/cmm_helpers.ml
index b2de73b34..6b07400ca 100644
--- a/backend/cmm_helpers.ml
+++ b/backend/cmm_helpers.ml
@@ -986,23 +986,43 @@ let bigarray_word_kind : Lambda.bigarray_kind -> memory_chunk = function
   | Pbigarray_complex32 -> Single
   | Pbigarray_complex64 -> Double
 
+let bind_info name arg =
+  match arg with
+    Cvar _ | Cconst_int _ | Cconst_natint _ | Cconst_symbol _ -> None, arg
+  | _ -> let id = V.create_local name in (Some (VP.create id, arg)), Cvar id
+
+let bind_info args =
+  List.fold_right (fun hd tl -> bind_info "bi" hd :: tl) args []
+
+let rec wrap_with_bind_info bind_info body =
+  match bind_info with
+  | [] -> body
+  | (None, _) :: tl ->
+    wrap_with_bind_info tl body
+  | (Some (vp, e), _) :: tl ->
+    Clet (vp, e, (wrap_with_bind_info tl body))
+
 let bigarray_get unsafe elt_kind layout b args dbg =
-  bind "ba" b (fun b ->
+  let args = bind_info args in
     match (elt_kind : Lambda.bigarray_kind) with
       Pbigarray_complex32 | Pbigarray_complex64 ->
         let kind = bigarray_word_kind elt_kind in
         let sz = bigarray_elt_size_in_bytes elt_kind / 2 in
+        wrap_with_bind_info args @@
+        bind "ba" b (fun b ->
         bind "addr"
-          (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr ->
+          (bigarray_indexing unsafe elt_kind layout b (List.map snd args) dbg) (fun addr ->
             bind "reval"
               (Cop(Cload (kind, Mutable), [addr], dbg)) (fun reval ->
                 bind "imval"
                   (Cop(Cload (kind, Mutable),
                        [Cop(Cadda, [addr; Cconst_int (sz, dbg)], dbg)], dbg))
-                  (fun imval -> box_complex dbg reval imval)))
+                  (fun imval -> box_complex dbg reval imval))))
     | _ ->
+        wrap_with_bind_info args @@
+        bind "ba" b (fun b ->
         Cop(Cload (bigarray_word_kind elt_kind, Mutable),
-            [bigarray_indexing unsafe elt_kind layout b args dbg],
+            [bigarray_indexing unsafe elt_kind layout b (List.map snd args) dbg],
             dbg))
 
 let bigarray_set unsafe elt_kind layout b args newval dbg =

@gretay-js
Copy link
Contributor Author

The following patch appears to fix the issue for bigarray_get, but it is very lightly tested and not particularly elegant. The idea is to use a variant of bind to simply collect beforehand what would be bound and create the let bindings later.

(The same could of course by applied to bigarray_set, and quite probably to send.)

Great! Would you like to make a separate PR with it?

@lthls
Copy link
Contributor

lthls commented Oct 28, 2021

I might be missing something, but wouldn't it be simpler to define a bind_list function and use it to systematically bind everything at the toplevel of these functions ?

For example:

let bind_list name args fn =
  let rec aux bound_args = function
    | [] -> fn bound_args
    | arg :: args ->
      bind name arg (fun bound_arg -> aux (bound_arg :: bound_args) args)
  in
  aux [] (List.rev args)

let bigarray_get unsafe elt_kind layout b args dbg =
  bind_list "idx" args (fun args ->
  bind "ba" b (fun b ->
    match (elt_kind : Lambda.bigarray_kind) with
      Pbigarray_complex32 | Pbigarray_complex64 ->
        let kind = bigarray_word_kind elt_kind in
        let sz = bigarray_elt_size_in_bytes elt_kind / 2 in
        bind "addr"
          (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr ->
            bind "reval"
              (Cop(Cload (kind, Mutable), [addr], dbg)) (fun reval ->
                bind "imval"
                  (Cop(Cload (kind, Mutable),
                       [Cop(Cadda, [addr; Cconst_int (sz, dbg)], dbg)], dbg))
                  (fun imval -> box_complex dbg reval imval)))
    | _ ->
        Cop(Cload (bigarray_word_kind elt_kind, Mutable),
            [bigarray_indexing unsafe elt_kind layout b args dbg],
            dbg)))

@gretay-js
Copy link
Contributor Author

gretay-js commented Oct 28, 2021

I might be missing something, but wouldn't it be simpler to define a bind_list function and use it to systematically bind everything at the toplevel of these functions ?

Yes, it's simpler, and would simplify bigarray_indexing too, I think, as it won't need to handle the order of argument evaluation any more.

@gretay-js
Copy link
Contributor Author

I'm merging this and will make a separate PR for bigarray_get/set and send, with additional tests.

@gretay-js gretay-js merged commit f5c37fe into ocaml-flambda:main Oct 29, 2021
mshinwell pushed a commit that referenced this pull request Oct 29, 2021
* Fix argument evaluation order in the following functions in Cmm_helpers:

mk_compare_ints
mk_compare_floats
safe_divmod_bi
stringref_safe
string_load
bigstring_load
arrayref_unsafe
bytesset_safe
bytes_set
bigstring_set

* Apply the fix to asmcomp

* Add tests for all the above

* Add tests for bigarray_get/set and send that are not yet fixed
stedolan added a commit to stedolan/flambda-backend that referenced this pull request Nov 11, 2021
5ff04aa1b Merge flambda-backend changes
1a8a32fd4 junk
3620c58 flambda-backend: Four small inliner fixes (ocaml-flambda#379)
2d165d2 flambda-backend: Regenerate ocaml/configure
3838b56 flambda-backend: Bump Menhir to version 20210419 (ocaml-flambda#362)
43c14d6 flambda-backend: Re-enable -flambda2-join-points (ocaml-flambda#374)
5cd2520 flambda-backend: Disable inlining of recursive functions by default (ocaml-flambda#372)
e98b277 flambda-backend: Import #10736 (stack limit increases) (ocaml-flambda#373)
82c8086 flambda-backend: Use hooks for type tree and parse tree (ocaml-flambda#363)
33bbc93 flambda-backend: Fix parsecmm.mly in ocaml subdirectory (ocaml-flambda#357)
9650034 flambda-backend: Right-to-left evaluation of arguments of String.get and friends (ocaml-flambda#354)
f7d3775 flambda-backend: Revert "Magic numbers" (ocaml-flambda#360)
0bd2fa6 flambda-backend: Add [@inline ready] attribute and remove [@inline hint] (not [@inlined hint]) (ocaml-flambda#351)
cee74af flambda-backend: Ensure that functions are evaluated after their arguments (ocaml-flambda#353)
954be59 flambda-backend: Bootstrap
dd5c299 flambda-backend: Change prefix of all magic numbers to avoid clashes with upstream.
c2b1355 flambda-backend: Fix wrong shift generation in Cmm_helpers (ocaml-flambda#347)
739243b flambda-backend: Add flambda_oclassic attribute (ocaml-flambda#348)
dc9b7fd flambda-backend: Only speculate during inlining if argument types have useful information (ocaml-flambda#343)
aa190ec flambda-backend: Backport fix from PR#10719 (ocaml-flambda#342)
c53a574 flambda-backend: Reduce max inlining depths at -O2 and -O3 (ocaml-flambda#334)
a2493dc flambda-backend: Tweak error messages in Compenv.
1c7b580 flambda-backend: Change Name_abstraction to use a parameterized type (ocaml-flambda#326)
07e0918 flambda-backend: Save cfg to file (ocaml-flambda#257)
9427a8d flambda-backend: Make inlining parameters more aggressive (ocaml-flambda#332)
fe0610f flambda-backend: Do not cache young_limit in a processor register (upstream PR 9876) (ocaml-flambda#315)
56f28b8 flambda-backend: Fix an overflow bug in major GC work computation (ocaml-flambda#310)
8e43a49 flambda-backend: Cmm invariants (port upstream PR 1400) (ocaml-flambda#258)
e901f16 flambda-backend: Add attributes effects and coeffects (ocaml-flambda#18)
aaa1cdb flambda-backend: Expose Flambda 2 flags via OCAMLPARAM (ocaml-flambda#304)
62db54f flambda-backend: Fix freshening substitutions
57231d2 flambda-backend: Evaluate signature substitutions lazily (upstream PR 10599) (ocaml-flambda#280)
a1a07de flambda-backend: Keep Sys.opaque_identity in Cmm and Mach (port upstream PR 9412) (ocaml-flambda#238)
faaf149 flambda-backend: Rename Un_cps -> To_cmm (ocaml-flambda#261)
ecb0201 flambda-backend: Add "-dcfg" flag to ocamlopt (ocaml-flambda#254)
32ec58a flambda-backend: Bypass Simplify (ocaml-flambda#162)
bd4ce4a flambda-backend: Revert "Semaphore without probes: dummy notes (ocaml-flambda#142)" (ocaml-flambda#242)
c98530f flambda-backend: Semaphore without probes: dummy notes (ocaml-flambda#142)
c9b6a04 flambda-backend: Remove hack for .depend from runtime/dune  (ocaml-flambda#170)
6e5d4cf flambda-backend: Build and install Semaphore (ocaml-flambda#183)
924eb60 flambda-backend: Special constructor for %sys_argv primitive (ocaml-flambda#166)
2ac6334 flambda-backend: Build ocamldoc (ocaml-flambda#157)
c6f7267 flambda-backend: Add -mbranches-within-32B to major_gc.c compilation (where supported)
a99fdee flambda-backend: Merge pull request ocaml#10195 from stedolan/mark-prefetching
bd72dcb flambda-backend: Prefetching optimisations for sweeping (ocaml#9934)
27fed7e flambda-backend: Add missing index param for Obj.field (ocaml-flambda#145)
cd48b2f flambda-backend: Fix camlinternalOO at -O3 with Flambda 2 (ocaml-flambda#132)
9d85430 flambda-backend: Fix testsuite execution (ocaml-flambda#125)
ac964ca flambda-backend: Comment out `[@inlined]` annotation. (ocaml-flambda#136)
ad4afce flambda-backend: Fix magic numbers (test suite) (ocaml-flambda#135)
9b033c7 flambda-backend: Disable the comparison of bytecode programs (`ocamltest`) (ocaml-flambda#128)
e650abd flambda-backend: Import flambda2 changes (`Asmpackager`) (ocaml-flambda#127)
14dcc38 flambda-backend: Fix error with Record_unboxed (bug in block kind patch) (ocaml-flambda#119)
2d35761 flambda-backend: Resurrect [@inline never] annotations in camlinternalMod (ocaml-flambda#121)
f5985ad flambda-backend: Magic numbers for cmx and cmxa files (ocaml-flambda#118)
0e8b9f0 flambda-backend: Extend conditions to include flambda2 (ocaml-flambda#115)
99870c8 flambda-backend: Fix Translobj assertions for Flambda 2 (ocaml-flambda#112)
5106317 flambda-backend: Minor fix for "lazy" compilation in Matching with Flambda 2 (ocaml-flambda#110)
dba922b flambda-backend: Oclassic/O2/O3 etc (ocaml-flambda#104)
f88af3e flambda-backend: Wire in the remaining Flambda 2 flags (ocaml-flambda#103)
678d647 flambda-backend: Wire in the Flambda 2 inlining flags (ocaml-flambda#100)
1a8febb flambda-backend: Formatting of help text for some Flambda 2 options (ocaml-flambda#101)
9ae1c7a flambda-backend: First set of command-line flags for Flambda 2 (ocaml-flambda#98)
bc0bc5e flambda-backend: Add config variables flambda_backend, flambda2 and probes (ocaml-flambda#99)
efb8304 flambda-backend: Build our own ocamlobjinfo from tools/objinfo/ at the root (ocaml-flambda#95)
d2cfaca flambda-backend: Add mutability annotations to Pfield etc. (ocaml-flambda#88)
5532555 flambda-backend: Lambda block kinds (ocaml-flambda#86)
0c597ba flambda-backend: Revert VERSION, etc. back to 4.12.0 (mostly reverts 822d0a0 from upstream 4.12) (ocaml-flambda#93)
037c3d0 flambda-backend: Float blocks
7a9d190 flambda-backend: Allow --enable-middle-end=flambda2 etc (ocaml-flambda#89)
9057474 flambda-backend: Root scanning fixes for Flambda 2 (ocaml-flambda#87)
08e02a3 flambda-backend: Ensure that Lifthenelse has a boolean-valued condition (ocaml-flambda#63)
77214b7 flambda-backend: Obj changes for Flambda 2 (ocaml-flambda#71)
ecfdd72 flambda-backend: Cherry-pick 9432cfd (ocaml-flambda#84)
d1a4396 flambda-backend: Add a `returns` field to `Cmm.Cextcall` (ocaml-flambda#74)
575dff5 flambda-backend: CMM traps (ocaml-flambda#72)
8a87272 flambda-backend: Remove Obj.set_tag and Obj.truncate (ocaml-flambda#73)
d9017ae flambda-backend: Merge pull request ocaml-flambda#80 from mshinwell/fb-backport-pr10205
3a4824e flambda-backend: Backport PR#10205 from upstream: Avoid overwriting closures while initialising recursive modules
f31890e flambda-backend: Install missing headers of ocaml/runtime/caml (ocaml-flambda#77)
83516f8 flambda-backend: Apply node created for probe should not be annotated as tailcall (ocaml-flambda#76)
bc430cb flambda-backend: Add Clflags.is_flambda2 (ocaml-flambda#62)
ed87247 flambda-backend: Preallocation of blocks in Translmod for value let rec w/ flambda2 (ocaml-flambda#59)
a4b04d5 flambda-backend: inline never on Gc.create_alarm (ocaml-flambda#56)
cef0bb6 flambda-backend: Config.flambda2 (ocaml-flambda#58)
ff0e4f7 flambda-backend: Pun labelled arguments with type constraint in function applications (ocaml-flambda#53)
d72c5fb flambda-backend: Remove Cmm.memory_chunk.Double_u (ocaml-flambda#42)
9d34d99 flambda-backend: Install missing artifacts
10146f2 flambda-backend: Add ocamlcfg (ocaml-flambda#34)
819d38a flambda-backend: Use OC_CFLAGS, OC_CPPFLAGS, and SHAREDLIB_CFLAGS for foreign libs (ocaml-flambda#30)
f98b564 flambda-backend: Pass -function-sections iff supported. (ocaml-flambda#29)
e0eef5e flambda-backend: Bootstrap (ocaml-flambda#11 part 2)
17374b4 flambda-backend: Add [@@Builtin] attribute to Primitives (ocaml-flambda#11 part 1)
85127ad flambda-backend: Add builtin, effects and coeffects fields to Cextcall (ocaml-flambda#12)
b670bcf flambda-backend: Replace tuple with record in Cextcall (ocaml-flambda#10)
db451b5 flambda-backend: Speedups in Asmlink (ocaml-flambda#8)
2fe489d flambda-backend: Cherry-pick upstream PR#10184 from upstream, dynlink invariant removal (rev 3dc3cd7 upstream)
d364bfa flambda-backend: Local patch against upstream: enable function sections in the Dune build
886b800 flambda-backend: Local patch against upstream: remove Raw_spacetime_lib (does not build with -m32)
1a7db7c flambda-backend: Local patch against upstream: make dune ignore ocamldoc/ directory
e411dd3 flambda-backend: Local patch against upstream: remove ocaml/testsuite/tests/tool-caml-tex/
1016d03 flambda-backend: Local patch against upstream: remove ocaml/dune-project and ocaml/ocaml-variants.opam
93785e3 flambda-backend: To upstream: export-dynamic for otherlibs/dynlink/ via the natdynlinkops files (still needs .gitignore + way of generating these files)
63db8c1 flambda-backend: To upstream: stop using -O3 in otherlibs/Makefile.otherlibs.common
eb2f1ed flambda-backend: To upstream: stop using -O3 for dynlink/
6682f8d flambda-backend: To upstream: use flambda_o3 attribute instead of -O3 in the Makefile for systhreads/
de197df flambda-backend: To upstream: renamed ocamltest_unix.xxx files for dune
bf3773d flambda-backend: To upstream: dune build fixes (depends on previous to-upstream patches)
6fbc80e flambda-backend: To upstream: refactor otherlibs/dynlink/, removing byte/ and native/
71a03ef flambda-backend: To upstream: fix to Ocaml_modifiers in ocamltest
686d6e3 flambda-backend: To upstream: fix dependency problem with Instruct
c311155 flambda-backend: To upstream: remove threadUnix
52e6e78 flambda-backend: To upstream: stabilise filenames used in backtraces: stdlib/, otherlibs/systhreads/, toplevel/toploop.ml
7d08e0e flambda-backend: To upstream: use flambda_o3 attribute in stdlib
403b82e flambda-backend: To upstream: flambda_o3 attribute support (includes bootstrap)
65032b1 flambda-backend: To upstream: use nolabels attribute instead of -nolabels for otherlibs/unix/
f533fad flambda-backend: To upstream: remove Compflags, add attributes, etc.
49fc1b5 flambda-backend: To upstream: Add attributes and bootstrap compiler
a4b9e0d flambda-backend: Already upstreamed: stdlib capitalisation patch
4c1c259 flambda-backend: ocaml#9748 from xclerc/share-ev_defname (cherry-pick 3e937fcb562)
00027c4 flambda-backend: permanent/default-to-best-fit (cherry-pick 64240fd716a9d0db57d779ebe5b6f1a67704cdec)
2561dd9 flambda-backend: permanent/reraise-by-default (cherry-pick 50e94902ca6bb84c33982db858b74322eefd9af8)
c0aa4f4 flambda-backend: permanent/gc-tuning (cherry-pick e9d6d2f145438dd6a82b56e9b41c8a01e752d81d)

git-subtree-dir: ocaml
git-subtree-split: 5ff04aa1b5f40bf1de19a10717bff62ee8d75ec1
stedolan added a commit to stedolan/flambda-backend that referenced this pull request Jan 18, 2022
23a7f73 flambda-backend: Fix some Debuginfo.t scopes in the frontend (ocaml-flambda#248)
33a04a6 flambda-backend: Attempt to shrink the heap before calling the assembler (ocaml-flambda#429)
8a36a16 flambda-backend: Fix to allow stage 2 builds in Flambda 2 -Oclassic mode (ocaml-flambda#442)
d828db6 flambda-backend: Rename -no-extensions flag to -disable-all-extensions (ocaml-flambda#425)
68c39d5 flambda-backend: Fix mistake with extension records (ocaml-flambda#423)
423f312 flambda-backend: Refactor -extension and -standard flags (ocaml-flambda#398)
585e023 flambda-backend: Improved simplification of array operations (ocaml-flambda#384)
faec6b1 flambda-backend: Typos (ocaml-flambda#407)
8914940 flambda-backend: Ensure allocations are initialised, even dead ones (ocaml-flambda#405)
6b58001 flambda-backend: Move compiler flag -dcfg out of ocaml/ subdirectory (ocaml-flambda#400)
4fd57cf flambda-backend: Use ghost loc for extension to avoid expressions with overlapping locations (ocaml-flambda#399)
8d993c5 flambda-backend: Let's fix instead of reverting flambda_backend_args (ocaml-flambda#396)
d29b133 flambda-backend: Revert "Move flambda-backend specific flags out of ocaml/ subdirectory (ocaml-flambda#382)" (ocaml-flambda#395)
d0cda93 flambda-backend: Revert ocaml-flambda#373 (ocaml-flambda#393)
1c6eee1 flambda-backend: Fix "make check_all_arches" in ocaml/ subdirectory (ocaml-flambda#388)
a7960dd flambda-backend: Move flambda-backend specific flags out of ocaml/ subdirectory (ocaml-flambda#382)
bf7b1a8 flambda-backend: List and Array Comprehensions (ocaml-flambda#147)
f2547de flambda-backend: Compile more stdlib files with -O3 (ocaml-flambda#380)
3620c58 flambda-backend: Four small inliner fixes (ocaml-flambda#379)
2d165d2 flambda-backend: Regenerate ocaml/configure
3838b56 flambda-backend: Bump Menhir to version 20210419 (ocaml-flambda#362)
43c14d6 flambda-backend: Re-enable -flambda2-join-points (ocaml-flambda#374)
5cd2520 flambda-backend: Disable inlining of recursive functions by default (ocaml-flambda#372)
e98b277 flambda-backend: Import #10736 (stack limit increases) (ocaml-flambda#373)
82c8086 flambda-backend: Use hooks for type tree and parse tree (ocaml-flambda#363)
33bbc93 flambda-backend: Fix parsecmm.mly in ocaml subdirectory (ocaml-flambda#357)
9650034 flambda-backend: Right-to-left evaluation of arguments of String.get and friends (ocaml-flambda#354)
f7d3775 flambda-backend: Revert "Magic numbers" (ocaml-flambda#360)
0bd2fa6 flambda-backend: Add [@inline ready] attribute and remove [@inline hint] (not [@inlined hint]) (ocaml-flambda#351)
cee74af flambda-backend: Ensure that functions are evaluated after their arguments (ocaml-flambda#353)
954be59 flambda-backend: Bootstrap
dd5c299 flambda-backend: Change prefix of all magic numbers to avoid clashes with upstream.
c2b1355 flambda-backend: Fix wrong shift generation in Cmm_helpers (ocaml-flambda#347)
739243b flambda-backend: Add flambda_oclassic attribute (ocaml-flambda#348)
dc9b7fd flambda-backend: Only speculate during inlining if argument types have useful information (ocaml-flambda#343)
aa190ec flambda-backend: Backport fix from PR#10719 (ocaml-flambda#342)
c53a574 flambda-backend: Reduce max inlining depths at -O2 and -O3 (ocaml-flambda#334)
a2493dc flambda-backend: Tweak error messages in Compenv.
1c7b580 flambda-backend: Change Name_abstraction to use a parameterized type (ocaml-flambda#326)
07e0918 flambda-backend: Save cfg to file (ocaml-flambda#257)
9427a8d flambda-backend: Make inlining parameters more aggressive (ocaml-flambda#332)
fe0610f flambda-backend: Do not cache young_limit in a processor register (upstream PR 9876) (ocaml-flambda#315)
56f28b8 flambda-backend: Fix an overflow bug in major GC work computation (ocaml-flambda#310)
8e43a49 flambda-backend: Cmm invariants (port upstream PR 1400) (ocaml-flambda#258)
e901f16 flambda-backend: Add attributes effects and coeffects (ocaml-flambda#18)
aaa1cdb flambda-backend: Expose Flambda 2 flags via OCAMLPARAM (ocaml-flambda#304)
62db54f flambda-backend: Fix freshening substitutions
57231d2 flambda-backend: Evaluate signature substitutions lazily (upstream PR 10599) (ocaml-flambda#280)
a1a07de flambda-backend: Keep Sys.opaque_identity in Cmm and Mach (port upstream PR 9412) (ocaml-flambda#238)
faaf149 flambda-backend: Rename Un_cps -> To_cmm (ocaml-flambda#261)
ecb0201 flambda-backend: Add "-dcfg" flag to ocamlopt (ocaml-flambda#254)
32ec58a flambda-backend: Bypass Simplify (ocaml-flambda#162)
bd4ce4a flambda-backend: Revert "Semaphore without probes: dummy notes (ocaml-flambda#142)" (ocaml-flambda#242)
c98530f flambda-backend: Semaphore without probes: dummy notes (ocaml-flambda#142)
c9b6a04 flambda-backend: Remove hack for .depend from runtime/dune  (ocaml-flambda#170)
6e5d4cf flambda-backend: Build and install Semaphore (ocaml-flambda#183)
924eb60 flambda-backend: Special constructor for %sys_argv primitive (ocaml-flambda#166)
2ac6334 flambda-backend: Build ocamldoc (ocaml-flambda#157)
c6f7267 flambda-backend: Add -mbranches-within-32B to major_gc.c compilation (where supported)
a99fdee flambda-backend: Merge pull request ocaml#10195 from stedolan/mark-prefetching
bd72dcb flambda-backend: Prefetching optimisations for sweeping (ocaml#9934)
27fed7e flambda-backend: Add missing index param for Obj.field (ocaml-flambda#145)
cd48b2f flambda-backend: Fix camlinternalOO at -O3 with Flambda 2 (ocaml-flambda#132)
9d85430 flambda-backend: Fix testsuite execution (ocaml-flambda#125)
ac964ca flambda-backend: Comment out `[@inlined]` annotation. (ocaml-flambda#136)
ad4afce flambda-backend: Fix magic numbers (test suite) (ocaml-flambda#135)
9b033c7 flambda-backend: Disable the comparison of bytecode programs (`ocamltest`) (ocaml-flambda#128)
e650abd flambda-backend: Import flambda2 changes (`Asmpackager`) (ocaml-flambda#127)
14dcc38 flambda-backend: Fix error with Record_unboxed (bug in block kind patch) (ocaml-flambda#119)
2d35761 flambda-backend: Resurrect [@inline never] annotations in camlinternalMod (ocaml-flambda#121)
f5985ad flambda-backend: Magic numbers for cmx and cmxa files (ocaml-flambda#118)
0e8b9f0 flambda-backend: Extend conditions to include flambda2 (ocaml-flambda#115)
99870c8 flambda-backend: Fix Translobj assertions for Flambda 2 (ocaml-flambda#112)
5106317 flambda-backend: Minor fix for "lazy" compilation in Matching with Flambda 2 (ocaml-flambda#110)
dba922b flambda-backend: Oclassic/O2/O3 etc (ocaml-flambda#104)
f88af3e flambda-backend: Wire in the remaining Flambda 2 flags (ocaml-flambda#103)
678d647 flambda-backend: Wire in the Flambda 2 inlining flags (ocaml-flambda#100)
1a8febb flambda-backend: Formatting of help text for some Flambda 2 options (ocaml-flambda#101)
9ae1c7a flambda-backend: First set of command-line flags for Flambda 2 (ocaml-flambda#98)
bc0bc5e flambda-backend: Add config variables flambda_backend, flambda2 and probes (ocaml-flambda#99)
efb8304 flambda-backend: Build our own ocamlobjinfo from tools/objinfo/ at the root (ocaml-flambda#95)
d2cfaca flambda-backend: Add mutability annotations to Pfield etc. (ocaml-flambda#88)
5532555 flambda-backend: Lambda block kinds (ocaml-flambda#86)
0c597ba flambda-backend: Revert VERSION, etc. back to 4.12.0 (mostly reverts 822d0a0 from upstream 4.12) (ocaml-flambda#93)
037c3d0 flambda-backend: Float blocks
7a9d190 flambda-backend: Allow --enable-middle-end=flambda2 etc (ocaml-flambda#89)
9057474 flambda-backend: Root scanning fixes for Flambda 2 (ocaml-flambda#87)
08e02a3 flambda-backend: Ensure that Lifthenelse has a boolean-valued condition (ocaml-flambda#63)
77214b7 flambda-backend: Obj changes for Flambda 2 (ocaml-flambda#71)
ecfdd72 flambda-backend: Cherry-pick 9432cfd (ocaml-flambda#84)
d1a4396 flambda-backend: Add a `returns` field to `Cmm.Cextcall` (ocaml-flambda#74)
575dff5 flambda-backend: CMM traps (ocaml-flambda#72)
8a87272 flambda-backend: Remove Obj.set_tag and Obj.truncate (ocaml-flambda#73)
d9017ae flambda-backend: Merge pull request ocaml-flambda#80 from mshinwell/fb-backport-pr10205
3a4824e flambda-backend: Backport PR#10205 from upstream: Avoid overwriting closures while initialising recursive modules
f31890e flambda-backend: Install missing headers of ocaml/runtime/caml (ocaml-flambda#77)
83516f8 flambda-backend: Apply node created for probe should not be annotated as tailcall (ocaml-flambda#76)
bc430cb flambda-backend: Add Clflags.is_flambda2 (ocaml-flambda#62)
ed87247 flambda-backend: Preallocation of blocks in Translmod for value let rec w/ flambda2 (ocaml-flambda#59)
a4b04d5 flambda-backend: inline never on Gc.create_alarm (ocaml-flambda#56)
cef0bb6 flambda-backend: Config.flambda2 (ocaml-flambda#58)
ff0e4f7 flambda-backend: Pun labelled arguments with type constraint in function applications (ocaml-flambda#53)
d72c5fb flambda-backend: Remove Cmm.memory_chunk.Double_u (ocaml-flambda#42)
9d34d99 flambda-backend: Install missing artifacts
10146f2 flambda-backend: Add ocamlcfg (ocaml-flambda#34)
819d38a flambda-backend: Use OC_CFLAGS, OC_CPPFLAGS, and SHAREDLIB_CFLAGS for foreign libs (ocaml-flambda#30)
f98b564 flambda-backend: Pass -function-sections iff supported. (ocaml-flambda#29)
e0eef5e flambda-backend: Bootstrap (ocaml-flambda#11 part 2)
17374b4 flambda-backend: Add [@@Builtin] attribute to Primitives (ocaml-flambda#11 part 1)
85127ad flambda-backend: Add builtin, effects and coeffects fields to Cextcall (ocaml-flambda#12)
b670bcf flambda-backend: Replace tuple with record in Cextcall (ocaml-flambda#10)
db451b5 flambda-backend: Speedups in Asmlink (ocaml-flambda#8)
2fe489d flambda-backend: Cherry-pick upstream PR#10184 from upstream, dynlink invariant removal (rev 3dc3cd7 upstream)
d364bfa flambda-backend: Local patch against upstream: enable function sections in the Dune build
886b800 flambda-backend: Local patch against upstream: remove Raw_spacetime_lib (does not build with -m32)
1a7db7c flambda-backend: Local patch against upstream: make dune ignore ocamldoc/ directory
e411dd3 flambda-backend: Local patch against upstream: remove ocaml/testsuite/tests/tool-caml-tex/
1016d03 flambda-backend: Local patch against upstream: remove ocaml/dune-project and ocaml/ocaml-variants.opam
93785e3 flambda-backend: To upstream: export-dynamic for otherlibs/dynlink/ via the natdynlinkops files (still needs .gitignore + way of generating these files)
63db8c1 flambda-backend: To upstream: stop using -O3 in otherlibs/Makefile.otherlibs.common
eb2f1ed flambda-backend: To upstream: stop using -O3 for dynlink/
6682f8d flambda-backend: To upstream: use flambda_o3 attribute instead of -O3 in the Makefile for systhreads/
de197df flambda-backend: To upstream: renamed ocamltest_unix.xxx files for dune
bf3773d flambda-backend: To upstream: dune build fixes (depends on previous to-upstream patches)
6fbc80e flambda-backend: To upstream: refactor otherlibs/dynlink/, removing byte/ and native/
71a03ef flambda-backend: To upstream: fix to Ocaml_modifiers in ocamltest
686d6e3 flambda-backend: To upstream: fix dependency problem with Instruct
c311155 flambda-backend: To upstream: remove threadUnix
52e6e78 flambda-backend: To upstream: stabilise filenames used in backtraces: stdlib/, otherlibs/systhreads/, toplevel/toploop.ml
7d08e0e flambda-backend: To upstream: use flambda_o3 attribute in stdlib
403b82e flambda-backend: To upstream: flambda_o3 attribute support (includes bootstrap)
65032b1 flambda-backend: To upstream: use nolabels attribute instead of -nolabels for otherlibs/unix/
f533fad flambda-backend: To upstream: remove Compflags, add attributes, etc.
49fc1b5 flambda-backend: To upstream: Add attributes and bootstrap compiler
a4b9e0d flambda-backend: Already upstreamed: stdlib capitalisation patch
4c1c259 flambda-backend: ocaml#9748 from xclerc/share-ev_defname (cherry-pick 3e937fcb562)
00027c4 flambda-backend: permanent/default-to-best-fit (cherry-pick 64240fd716a9d0db57d779ebe5b6f1a67704cdec)
2561dd9 flambda-backend: permanent/reraise-by-default (cherry-pick 50e94902ca6bb84c33982db858b74322eefd9af8)
c0aa4f4 flambda-backend: permanent/gc-tuning (cherry-pick e9d6d2f145438dd6a82b56e9b41c8a01e752d81d)

git-subtree-dir: ocaml
git-subtree-split: 23a7f73
stedolan added a commit that referenced this pull request Jan 25, 2022
23a7f73 flambda-backend: Fix some Debuginfo.t scopes in the frontend (#248)
33a04a6 flambda-backend: Attempt to shrink the heap before calling the assembler (#429)
8a36a16 flambda-backend: Fix to allow stage 2 builds in Flambda 2 -Oclassic mode (#442)
d828db6 flambda-backend: Rename -no-extensions flag to -disable-all-extensions (#425)
68c39d5 flambda-backend: Fix mistake with extension records (#423)
423f312 flambda-backend: Refactor -extension and -standard flags (#398)
585e023 flambda-backend: Improved simplification of array operations (#384)
faec6b1 flambda-backend: Typos (#407)
8914940 flambda-backend: Ensure allocations are initialised, even dead ones (#405)
6b58001 flambda-backend: Move compiler flag -dcfg out of ocaml/ subdirectory (#400)
4fd57cf flambda-backend: Use ghost loc for extension to avoid expressions with overlapping locations (#399)
8d993c5 flambda-backend: Let's fix instead of reverting flambda_backend_args (#396)
d29b133 flambda-backend: Revert "Move flambda-backend specific flags out of ocaml/ subdirectory (#382)" (#395)
d0cda93 flambda-backend: Revert #373 (#393)
1c6eee1 flambda-backend: Fix "make check_all_arches" in ocaml/ subdirectory (#388)
a7960dd flambda-backend: Move flambda-backend specific flags out of ocaml/ subdirectory (#382)
bf7b1a8 flambda-backend: List and Array Comprehensions (#147)
f2547de flambda-backend: Compile more stdlib files with -O3 (#380)
3620c58 flambda-backend: Four small inliner fixes (#379)
2d165d2 flambda-backend: Regenerate ocaml/configure
3838b56 flambda-backend: Bump Menhir to version 20210419 (#362)
43c14d6 flambda-backend: Re-enable -flambda2-join-points (#374)
5cd2520 flambda-backend: Disable inlining of recursive functions by default (#372)
e98b277 flambda-backend: Import #10736 (stack limit increases) (#373)
82c8086 flambda-backend: Use hooks for type tree and parse tree (#363)
33bbc93 flambda-backend: Fix parsecmm.mly in ocaml subdirectory (#357)
9650034 flambda-backend: Right-to-left evaluation of arguments of String.get and friends (#354)
f7d3775 flambda-backend: Revert "Magic numbers" (#360)
0bd2fa6 flambda-backend: Add [@inline ready] attribute and remove [@inline hint] (not [@inlined hint]) (#351)
cee74af flambda-backend: Ensure that functions are evaluated after their arguments (#353)
954be59 flambda-backend: Bootstrap
dd5c299 flambda-backend: Change prefix of all magic numbers to avoid clashes with upstream.
c2b1355 flambda-backend: Fix wrong shift generation in Cmm_helpers (#347)
739243b flambda-backend: Add flambda_oclassic attribute (#348)
dc9b7fd flambda-backend: Only speculate during inlining if argument types have useful information (#343)
aa190ec flambda-backend: Backport fix from PR#10719 (#342)
c53a574 flambda-backend: Reduce max inlining depths at -O2 and -O3 (#334)
a2493dc flambda-backend: Tweak error messages in Compenv.
1c7b580 flambda-backend: Change Name_abstraction to use a parameterized type (#326)
07e0918 flambda-backend: Save cfg to file (#257)
9427a8d flambda-backend: Make inlining parameters more aggressive (#332)
fe0610f flambda-backend: Do not cache young_limit in a processor register (upstream PR 9876) (#315)
56f28b8 flambda-backend: Fix an overflow bug in major GC work computation (#310)
8e43a49 flambda-backend: Cmm invariants (port upstream PR 1400) (#258)
e901f16 flambda-backend: Add attributes effects and coeffects (#18)
aaa1cdb flambda-backend: Expose Flambda 2 flags via OCAMLPARAM (#304)
62db54f flambda-backend: Fix freshening substitutions
57231d2 flambda-backend: Evaluate signature substitutions lazily (upstream PR 10599) (#280)
a1a07de flambda-backend: Keep Sys.opaque_identity in Cmm and Mach (port upstream PR 9412) (#238)
faaf149 flambda-backend: Rename Un_cps -> To_cmm (#261)
ecb0201 flambda-backend: Add "-dcfg" flag to ocamlopt (#254)
32ec58a flambda-backend: Bypass Simplify (#162)
bd4ce4a flambda-backend: Revert "Semaphore without probes: dummy notes (#142)" (#242)
c98530f flambda-backend: Semaphore without probes: dummy notes (#142)
c9b6a04 flambda-backend: Remove hack for .depend from runtime/dune  (#170)
6e5d4cf flambda-backend: Build and install Semaphore (#183)
924eb60 flambda-backend: Special constructor for %sys_argv primitive (#166)
2ac6334 flambda-backend: Build ocamldoc (#157)
c6f7267 flambda-backend: Add -mbranches-within-32B to major_gc.c compilation (where supported)
a99fdee flambda-backend: Merge pull request ocaml#10195 from stedolan/mark-prefetching
bd72dcb flambda-backend: Prefetching optimisations for sweeping (ocaml#9934)
27fed7e flambda-backend: Add missing index param for Obj.field (#145)
cd48b2f flambda-backend: Fix camlinternalOO at -O3 with Flambda 2 (#132)
9d85430 flambda-backend: Fix testsuite execution (#125)
ac964ca flambda-backend: Comment out `[@inlined]` annotation. (#136)
ad4afce flambda-backend: Fix magic numbers (test suite) (#135)
9b033c7 flambda-backend: Disable the comparison of bytecode programs (`ocamltest`) (#128)
e650abd flambda-backend: Import flambda2 changes (`Asmpackager`) (#127)
14dcc38 flambda-backend: Fix error with Record_unboxed (bug in block kind patch) (#119)
2d35761 flambda-backend: Resurrect [@inline never] annotations in camlinternalMod (#121)
f5985ad flambda-backend: Magic numbers for cmx and cmxa files (#118)
0e8b9f0 flambda-backend: Extend conditions to include flambda2 (#115)
99870c8 flambda-backend: Fix Translobj assertions for Flambda 2 (#112)
5106317 flambda-backend: Minor fix for "lazy" compilation in Matching with Flambda 2 (#110)
dba922b flambda-backend: Oclassic/O2/O3 etc (#104)
f88af3e flambda-backend: Wire in the remaining Flambda 2 flags (#103)
678d647 flambda-backend: Wire in the Flambda 2 inlining flags (#100)
1a8febb flambda-backend: Formatting of help text for some Flambda 2 options (#101)
9ae1c7a flambda-backend: First set of command-line flags for Flambda 2 (#98)
bc0bc5e flambda-backend: Add config variables flambda_backend, flambda2 and probes (#99)
efb8304 flambda-backend: Build our own ocamlobjinfo from tools/objinfo/ at the root (#95)
d2cfaca flambda-backend: Add mutability annotations to Pfield etc. (#88)
5532555 flambda-backend: Lambda block kinds (#86)
0c597ba flambda-backend: Revert VERSION, etc. back to 4.12.0 (mostly reverts 822d0a0 from upstream 4.12) (#93)
037c3d0 flambda-backend: Float blocks
7a9d190 flambda-backend: Allow --enable-middle-end=flambda2 etc (#89)
9057474 flambda-backend: Root scanning fixes for Flambda 2 (#87)
08e02a3 flambda-backend: Ensure that Lifthenelse has a boolean-valued condition (#63)
77214b7 flambda-backend: Obj changes for Flambda 2 (#71)
ecfdd72 flambda-backend: Cherry-pick 9432cfd (#84)
d1a4396 flambda-backend: Add a `returns` field to `Cmm.Cextcall` (#74)
575dff5 flambda-backend: CMM traps (#72)
8a87272 flambda-backend: Remove Obj.set_tag and Obj.truncate (#73)
d9017ae flambda-backend: Merge pull request #80 from mshinwell/fb-backport-pr10205
3a4824e flambda-backend: Backport PR#10205 from upstream: Avoid overwriting closures while initialising recursive modules
f31890e flambda-backend: Install missing headers of ocaml/runtime/caml (#77)
83516f8 flambda-backend: Apply node created for probe should not be annotated as tailcall (#76)
bc430cb flambda-backend: Add Clflags.is_flambda2 (#62)
ed87247 flambda-backend: Preallocation of blocks in Translmod for value let rec w/ flambda2 (#59)
a4b04d5 flambda-backend: inline never on Gc.create_alarm (#56)
cef0bb6 flambda-backend: Config.flambda2 (#58)
ff0e4f7 flambda-backend: Pun labelled arguments with type constraint in function applications (#53)
d72c5fb flambda-backend: Remove Cmm.memory_chunk.Double_u (#42)
9d34d99 flambda-backend: Install missing artifacts
10146f2 flambda-backend: Add ocamlcfg (#34)
819d38a flambda-backend: Use OC_CFLAGS, OC_CPPFLAGS, and SHAREDLIB_CFLAGS for foreign libs (#30)
f98b564 flambda-backend: Pass -function-sections iff supported. (#29)
e0eef5e flambda-backend: Bootstrap (#11 part 2)
17374b4 flambda-backend: Add [@@Builtin] attribute to Primitives (#11 part 1)
85127ad flambda-backend: Add builtin, effects and coeffects fields to Cextcall (#12)
b670bcf flambda-backend: Replace tuple with record in Cextcall (#10)
db451b5 flambda-backend: Speedups in Asmlink (#8)
2fe489d flambda-backend: Cherry-pick upstream PR#10184 from upstream, dynlink invariant removal (rev 3dc3cd7 upstream)
d364bfa flambda-backend: Local patch against upstream: enable function sections in the Dune build
886b800 flambda-backend: Local patch against upstream: remove Raw_spacetime_lib (does not build with -m32)
1a7db7c flambda-backend: Local patch against upstream: make dune ignore ocamldoc/ directory
e411dd3 flambda-backend: Local patch against upstream: remove ocaml/testsuite/tests/tool-caml-tex/
1016d03 flambda-backend: Local patch against upstream: remove ocaml/dune-project and ocaml/ocaml-variants.opam
93785e3 flambda-backend: To upstream: export-dynamic for otherlibs/dynlink/ via the natdynlinkops files (still needs .gitignore + way of generating these files)
63db8c1 flambda-backend: To upstream: stop using -O3 in otherlibs/Makefile.otherlibs.common
eb2f1ed flambda-backend: To upstream: stop using -O3 for dynlink/
6682f8d flambda-backend: To upstream: use flambda_o3 attribute instead of -O3 in the Makefile for systhreads/
de197df flambda-backend: To upstream: renamed ocamltest_unix.xxx files for dune
bf3773d flambda-backend: To upstream: dune build fixes (depends on previous to-upstream patches)
6fbc80e flambda-backend: To upstream: refactor otherlibs/dynlink/, removing byte/ and native/
71a03ef flambda-backend: To upstream: fix to Ocaml_modifiers in ocamltest
686d6e3 flambda-backend: To upstream: fix dependency problem with Instruct
c311155 flambda-backend: To upstream: remove threadUnix
52e6e78 flambda-backend: To upstream: stabilise filenames used in backtraces: stdlib/, otherlibs/systhreads/, toplevel/toploop.ml
7d08e0e flambda-backend: To upstream: use flambda_o3 attribute in stdlib
403b82e flambda-backend: To upstream: flambda_o3 attribute support (includes bootstrap)
65032b1 flambda-backend: To upstream: use nolabels attribute instead of -nolabels for otherlibs/unix/
f533fad flambda-backend: To upstream: remove Compflags, add attributes, etc.
49fc1b5 flambda-backend: To upstream: Add attributes and bootstrap compiler
a4b9e0d flambda-backend: Already upstreamed: stdlib capitalisation patch
4c1c259 flambda-backend: ocaml#9748 from xclerc/share-ev_defname (cherry-pick 3e937fcb562)
00027c4 flambda-backend: permanent/default-to-best-fit (cherry-pick 64240fd716a9d0db57d779ebe5b6f1a67704cdec)
2561dd9 flambda-backend: permanent/reraise-by-default (cherry-pick 50e94902ca6bb84c33982db858b74322eefd9af8)
c0aa4f4 flambda-backend: permanent/gc-tuning (cherry-pick e9d6d2f145438dd6a82b56e9b41c8a01e752d81d)

git-subtree-dir: ocaml
git-subtree-split: 23a7f73
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend bug Something isn't working to upstream PR should be sent to upstream OCaml
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants