-
Notifications
You must be signed in to change notification settings - Fork 89
Fix camlinternalOO at -O3 with Flambda 2 #132
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Fix camlinternalOO at -O3 with Flambda 2 #132
Conversation
09a3252
to
f3e4e93
Compare
ocaml/stdlib/camlinternalOO.ml
Outdated
@@ -271,7 +276,7 @@ let new_variable table name = | |||
index | |||
|
|||
let to_array arr = | |||
if arr = Obj.magic 0 then [||] else arr | |||
if arr = Sys.opaque_identity (Obj.magic 0) then [||] else arr |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am certainly out of my depth here,
but was wondering why =
was used
(as opposed to ==
)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know; I just followed the existing code!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, indeed, it was not intended as a comment
about the PR, just genuine curiosity.
ocaml/stdlib/camlinternalOO.ml
Outdated
[@@@ocaml.inline 0] | ||
[@@@ocaml.afl_inst_ratio 0] | ||
|
||
open Obj | ||
|
||
(* Prevent confusion between arrays and blocks *) | ||
module Array = struct | ||
include Array |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The 'include Array' seems dubious here. I think what you're aiming for is to provide functions called 'Array.unsafe_set' and 'Array.unsafe_get' that can safely be used on blocks, but the 'include Array' also brings in 'Array.get' and 'Array.set' (which, if I understand correctly, are unsafe in this context).
Rather than opaque_identity, should these functions be Obj.field? What type are they used at?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These appear to be used at type array
, but I'm not sure if the underlying value is actually an array -- there is so much Obj.magic
around that it's hard to follow.
@stedolan I've pushed a revised version. This also removes |
ocaml/stdlib/camlinternalOO.ml
Outdated
[@@@ocaml.inline 0] | ||
[@@@ocaml.afl_inst_ratio 0] | ||
|
||
open Obj | ||
let magic x = Sys.opaque_identity (Obj.magic x) | ||
let obj x = Sys.opaque_identity (Obj.obj x) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe call this of_repr or unrepr or something? obj
is an extremely common variable name in the code below and it's confusing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed
5ff04aa1b Merge flambda-backend changes 1a8a32fd4 junk 3620c58 flambda-backend: Four small inliner fixes (oxcaml#379) 2d165d2 flambda-backend: Regenerate ocaml/configure 3838b56 flambda-backend: Bump Menhir to version 20210419 (oxcaml#362) 43c14d6 flambda-backend: Re-enable -flambda2-join-points (oxcaml#374) 5cd2520 flambda-backend: Disable inlining of recursive functions by default (oxcaml#372) e98b277 flambda-backend: Import #10736 (stack limit increases) (oxcaml#373) 82c8086 flambda-backend: Use hooks for type tree and parse tree (oxcaml#363) 33bbc93 flambda-backend: Fix parsecmm.mly in ocaml subdirectory (oxcaml#357) 9650034 flambda-backend: Right-to-left evaluation of arguments of String.get and friends (oxcaml#354) f7d3775 flambda-backend: Revert "Magic numbers" (oxcaml#360) 0bd2fa6 flambda-backend: Add [@inline ready] attribute and remove [@inline hint] (not [@inlined hint]) (oxcaml#351) cee74af flambda-backend: Ensure that functions are evaluated after their arguments (oxcaml#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 (oxcaml#347) 739243b flambda-backend: Add flambda_oclassic attribute (oxcaml#348) dc9b7fd flambda-backend: Only speculate during inlining if argument types have useful information (oxcaml#343) aa190ec flambda-backend: Backport fix from PR#10719 (oxcaml#342) c53a574 flambda-backend: Reduce max inlining depths at -O2 and -O3 (oxcaml#334) a2493dc flambda-backend: Tweak error messages in Compenv. 1c7b580 flambda-backend: Change Name_abstraction to use a parameterized type (oxcaml#326) 07e0918 flambda-backend: Save cfg to file (oxcaml#257) 9427a8d flambda-backend: Make inlining parameters more aggressive (oxcaml#332) fe0610f flambda-backend: Do not cache young_limit in a processor register (upstream PR 9876) (oxcaml#315) 56f28b8 flambda-backend: Fix an overflow bug in major GC work computation (oxcaml#310) 8e43a49 flambda-backend: Cmm invariants (port upstream PR 1400) (oxcaml#258) e901f16 flambda-backend: Add attributes effects and coeffects (oxcaml#18) aaa1cdb flambda-backend: Expose Flambda 2 flags via OCAMLPARAM (oxcaml#304) 62db54f flambda-backend: Fix freshening substitutions 57231d2 flambda-backend: Evaluate signature substitutions lazily (upstream PR 10599) (oxcaml#280) a1a07de flambda-backend: Keep Sys.opaque_identity in Cmm and Mach (port upstream PR 9412) (oxcaml#238) faaf149 flambda-backend: Rename Un_cps -> To_cmm (oxcaml#261) ecb0201 flambda-backend: Add "-dcfg" flag to ocamlopt (oxcaml#254) 32ec58a flambda-backend: Bypass Simplify (oxcaml#162) bd4ce4a flambda-backend: Revert "Semaphore without probes: dummy notes (oxcaml#142)" (oxcaml#242) c98530f flambda-backend: Semaphore without probes: dummy notes (oxcaml#142) c9b6a04 flambda-backend: Remove hack for .depend from runtime/dune (oxcaml#170) 6e5d4cf flambda-backend: Build and install Semaphore (oxcaml#183) 924eb60 flambda-backend: Special constructor for %sys_argv primitive (oxcaml#166) 2ac6334 flambda-backend: Build ocamldoc (oxcaml#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 (oxcaml#145) cd48b2f flambda-backend: Fix camlinternalOO at -O3 with Flambda 2 (oxcaml#132) 9d85430 flambda-backend: Fix testsuite execution (oxcaml#125) ac964ca flambda-backend: Comment out `[@inlined]` annotation. (oxcaml#136) ad4afce flambda-backend: Fix magic numbers (test suite) (oxcaml#135) 9b033c7 flambda-backend: Disable the comparison of bytecode programs (`ocamltest`) (oxcaml#128) e650abd flambda-backend: Import flambda2 changes (`Asmpackager`) (oxcaml#127) 14dcc38 flambda-backend: Fix error with Record_unboxed (bug in block kind patch) (oxcaml#119) 2d35761 flambda-backend: Resurrect [@inline never] annotations in camlinternalMod (oxcaml#121) f5985ad flambda-backend: Magic numbers for cmx and cmxa files (oxcaml#118) 0e8b9f0 flambda-backend: Extend conditions to include flambda2 (oxcaml#115) 99870c8 flambda-backend: Fix Translobj assertions for Flambda 2 (oxcaml#112) 5106317 flambda-backend: Minor fix for "lazy" compilation in Matching with Flambda 2 (oxcaml#110) dba922b flambda-backend: Oclassic/O2/O3 etc (oxcaml#104) f88af3e flambda-backend: Wire in the remaining Flambda 2 flags (oxcaml#103) 678d647 flambda-backend: Wire in the Flambda 2 inlining flags (oxcaml#100) 1a8febb flambda-backend: Formatting of help text for some Flambda 2 options (oxcaml#101) 9ae1c7a flambda-backend: First set of command-line flags for Flambda 2 (oxcaml#98) bc0bc5e flambda-backend: Add config variables flambda_backend, flambda2 and probes (oxcaml#99) efb8304 flambda-backend: Build our own ocamlobjinfo from tools/objinfo/ at the root (oxcaml#95) d2cfaca flambda-backend: Add mutability annotations to Pfield etc. (oxcaml#88) 5532555 flambda-backend: Lambda block kinds (oxcaml#86) 0c597ba flambda-backend: Revert VERSION, etc. back to 4.12.0 (mostly reverts 822d0a0 from upstream 4.12) (oxcaml#93) 037c3d0 flambda-backend: Float blocks 7a9d190 flambda-backend: Allow --enable-middle-end=flambda2 etc (oxcaml#89) 9057474 flambda-backend: Root scanning fixes for Flambda 2 (oxcaml#87) 08e02a3 flambda-backend: Ensure that Lifthenelse has a boolean-valued condition (oxcaml#63) 77214b7 flambda-backend: Obj changes for Flambda 2 (oxcaml#71) ecfdd72 flambda-backend: Cherry-pick 9432cfd (oxcaml#84) d1a4396 flambda-backend: Add a `returns` field to `Cmm.Cextcall` (oxcaml#74) 575dff5 flambda-backend: CMM traps (oxcaml#72) 8a87272 flambda-backend: Remove Obj.set_tag and Obj.truncate (oxcaml#73) d9017ae flambda-backend: Merge pull request oxcaml#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 (oxcaml#77) 83516f8 flambda-backend: Apply node created for probe should not be annotated as tailcall (oxcaml#76) bc430cb flambda-backend: Add Clflags.is_flambda2 (oxcaml#62) ed87247 flambda-backend: Preallocation of blocks in Translmod for value let rec w/ flambda2 (oxcaml#59) a4b04d5 flambda-backend: inline never on Gc.create_alarm (oxcaml#56) cef0bb6 flambda-backend: Config.flambda2 (oxcaml#58) ff0e4f7 flambda-backend: Pun labelled arguments with type constraint in function applications (oxcaml#53) d72c5fb flambda-backend: Remove Cmm.memory_chunk.Double_u (oxcaml#42) 9d34d99 flambda-backend: Install missing artifacts 10146f2 flambda-backend: Add ocamlcfg (oxcaml#34) 819d38a flambda-backend: Use OC_CFLAGS, OC_CPPFLAGS, and SHAREDLIB_CFLAGS for foreign libs (oxcaml#30) f98b564 flambda-backend: Pass -function-sections iff supported. (oxcaml#29) e0eef5e flambda-backend: Bootstrap (oxcaml#11 part 2) 17374b4 flambda-backend: Add [@@Builtin] attribute to Primitives (oxcaml#11 part 1) 85127ad flambda-backend: Add builtin, effects and coeffects fields to Cextcall (oxcaml#12) b670bcf flambda-backend: Replace tuple with record in Cextcall (oxcaml#10) db451b5 flambda-backend: Speedups in Asmlink (oxcaml#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
23a7f73 flambda-backend: Fix some Debuginfo.t scopes in the frontend (oxcaml#248) 33a04a6 flambda-backend: Attempt to shrink the heap before calling the assembler (oxcaml#429) 8a36a16 flambda-backend: Fix to allow stage 2 builds in Flambda 2 -Oclassic mode (oxcaml#442) d828db6 flambda-backend: Rename -no-extensions flag to -disable-all-extensions (oxcaml#425) 68c39d5 flambda-backend: Fix mistake with extension records (oxcaml#423) 423f312 flambda-backend: Refactor -extension and -standard flags (oxcaml#398) 585e023 flambda-backend: Improved simplification of array operations (oxcaml#384) faec6b1 flambda-backend: Typos (oxcaml#407) 8914940 flambda-backend: Ensure allocations are initialised, even dead ones (oxcaml#405) 6b58001 flambda-backend: Move compiler flag -dcfg out of ocaml/ subdirectory (oxcaml#400) 4fd57cf flambda-backend: Use ghost loc for extension to avoid expressions with overlapping locations (oxcaml#399) 8d993c5 flambda-backend: Let's fix instead of reverting flambda_backend_args (oxcaml#396) d29b133 flambda-backend: Revert "Move flambda-backend specific flags out of ocaml/ subdirectory (oxcaml#382)" (oxcaml#395) d0cda93 flambda-backend: Revert oxcaml#373 (oxcaml#393) 1c6eee1 flambda-backend: Fix "make check_all_arches" in ocaml/ subdirectory (oxcaml#388) a7960dd flambda-backend: Move flambda-backend specific flags out of ocaml/ subdirectory (oxcaml#382) bf7b1a8 flambda-backend: List and Array Comprehensions (oxcaml#147) f2547de flambda-backend: Compile more stdlib files with -O3 (oxcaml#380) 3620c58 flambda-backend: Four small inliner fixes (oxcaml#379) 2d165d2 flambda-backend: Regenerate ocaml/configure 3838b56 flambda-backend: Bump Menhir to version 20210419 (oxcaml#362) 43c14d6 flambda-backend: Re-enable -flambda2-join-points (oxcaml#374) 5cd2520 flambda-backend: Disable inlining of recursive functions by default (oxcaml#372) e98b277 flambda-backend: Import #10736 (stack limit increases) (oxcaml#373) 82c8086 flambda-backend: Use hooks for type tree and parse tree (oxcaml#363) 33bbc93 flambda-backend: Fix parsecmm.mly in ocaml subdirectory (oxcaml#357) 9650034 flambda-backend: Right-to-left evaluation of arguments of String.get and friends (oxcaml#354) f7d3775 flambda-backend: Revert "Magic numbers" (oxcaml#360) 0bd2fa6 flambda-backend: Add [@inline ready] attribute and remove [@inline hint] (not [@inlined hint]) (oxcaml#351) cee74af flambda-backend: Ensure that functions are evaluated after their arguments (oxcaml#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 (oxcaml#347) 739243b flambda-backend: Add flambda_oclassic attribute (oxcaml#348) dc9b7fd flambda-backend: Only speculate during inlining if argument types have useful information (oxcaml#343) aa190ec flambda-backend: Backport fix from PR#10719 (oxcaml#342) c53a574 flambda-backend: Reduce max inlining depths at -O2 and -O3 (oxcaml#334) a2493dc flambda-backend: Tweak error messages in Compenv. 1c7b580 flambda-backend: Change Name_abstraction to use a parameterized type (oxcaml#326) 07e0918 flambda-backend: Save cfg to file (oxcaml#257) 9427a8d flambda-backend: Make inlining parameters more aggressive (oxcaml#332) fe0610f flambda-backend: Do not cache young_limit in a processor register (upstream PR 9876) (oxcaml#315) 56f28b8 flambda-backend: Fix an overflow bug in major GC work computation (oxcaml#310) 8e43a49 flambda-backend: Cmm invariants (port upstream PR 1400) (oxcaml#258) e901f16 flambda-backend: Add attributes effects and coeffects (oxcaml#18) aaa1cdb flambda-backend: Expose Flambda 2 flags via OCAMLPARAM (oxcaml#304) 62db54f flambda-backend: Fix freshening substitutions 57231d2 flambda-backend: Evaluate signature substitutions lazily (upstream PR 10599) (oxcaml#280) a1a07de flambda-backend: Keep Sys.opaque_identity in Cmm and Mach (port upstream PR 9412) (oxcaml#238) faaf149 flambda-backend: Rename Un_cps -> To_cmm (oxcaml#261) ecb0201 flambda-backend: Add "-dcfg" flag to ocamlopt (oxcaml#254) 32ec58a flambda-backend: Bypass Simplify (oxcaml#162) bd4ce4a flambda-backend: Revert "Semaphore without probes: dummy notes (oxcaml#142)" (oxcaml#242) c98530f flambda-backend: Semaphore without probes: dummy notes (oxcaml#142) c9b6a04 flambda-backend: Remove hack for .depend from runtime/dune (oxcaml#170) 6e5d4cf flambda-backend: Build and install Semaphore (oxcaml#183) 924eb60 flambda-backend: Special constructor for %sys_argv primitive (oxcaml#166) 2ac6334 flambda-backend: Build ocamldoc (oxcaml#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 (oxcaml#145) cd48b2f flambda-backend: Fix camlinternalOO at -O3 with Flambda 2 (oxcaml#132) 9d85430 flambda-backend: Fix testsuite execution (oxcaml#125) ac964ca flambda-backend: Comment out `[@inlined]` annotation. (oxcaml#136) ad4afce flambda-backend: Fix magic numbers (test suite) (oxcaml#135) 9b033c7 flambda-backend: Disable the comparison of bytecode programs (`ocamltest`) (oxcaml#128) e650abd flambda-backend: Import flambda2 changes (`Asmpackager`) (oxcaml#127) 14dcc38 flambda-backend: Fix error with Record_unboxed (bug in block kind patch) (oxcaml#119) 2d35761 flambda-backend: Resurrect [@inline never] annotations in camlinternalMod (oxcaml#121) f5985ad flambda-backend: Magic numbers for cmx and cmxa files (oxcaml#118) 0e8b9f0 flambda-backend: Extend conditions to include flambda2 (oxcaml#115) 99870c8 flambda-backend: Fix Translobj assertions for Flambda 2 (oxcaml#112) 5106317 flambda-backend: Minor fix for "lazy" compilation in Matching with Flambda 2 (oxcaml#110) dba922b flambda-backend: Oclassic/O2/O3 etc (oxcaml#104) f88af3e flambda-backend: Wire in the remaining Flambda 2 flags (oxcaml#103) 678d647 flambda-backend: Wire in the Flambda 2 inlining flags (oxcaml#100) 1a8febb flambda-backend: Formatting of help text for some Flambda 2 options (oxcaml#101) 9ae1c7a flambda-backend: First set of command-line flags for Flambda 2 (oxcaml#98) bc0bc5e flambda-backend: Add config variables flambda_backend, flambda2 and probes (oxcaml#99) efb8304 flambda-backend: Build our own ocamlobjinfo from tools/objinfo/ at the root (oxcaml#95) d2cfaca flambda-backend: Add mutability annotations to Pfield etc. (oxcaml#88) 5532555 flambda-backend: Lambda block kinds (oxcaml#86) 0c597ba flambda-backend: Revert VERSION, etc. back to 4.12.0 (mostly reverts 822d0a0 from upstream 4.12) (oxcaml#93) 037c3d0 flambda-backend: Float blocks 7a9d190 flambda-backend: Allow --enable-middle-end=flambda2 etc (oxcaml#89) 9057474 flambda-backend: Root scanning fixes for Flambda 2 (oxcaml#87) 08e02a3 flambda-backend: Ensure that Lifthenelse has a boolean-valued condition (oxcaml#63) 77214b7 flambda-backend: Obj changes for Flambda 2 (oxcaml#71) ecfdd72 flambda-backend: Cherry-pick 9432cfd (oxcaml#84) d1a4396 flambda-backend: Add a `returns` field to `Cmm.Cextcall` (oxcaml#74) 575dff5 flambda-backend: CMM traps (oxcaml#72) 8a87272 flambda-backend: Remove Obj.set_tag and Obj.truncate (oxcaml#73) d9017ae flambda-backend: Merge pull request oxcaml#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 (oxcaml#77) 83516f8 flambda-backend: Apply node created for probe should not be annotated as tailcall (oxcaml#76) bc430cb flambda-backend: Add Clflags.is_flambda2 (oxcaml#62) ed87247 flambda-backend: Preallocation of blocks in Translmod for value let rec w/ flambda2 (oxcaml#59) a4b04d5 flambda-backend: inline never on Gc.create_alarm (oxcaml#56) cef0bb6 flambda-backend: Config.flambda2 (oxcaml#58) ff0e4f7 flambda-backend: Pun labelled arguments with type constraint in function applications (oxcaml#53) d72c5fb flambda-backend: Remove Cmm.memory_chunk.Double_u (oxcaml#42) 9d34d99 flambda-backend: Install missing artifacts 10146f2 flambda-backend: Add ocamlcfg (oxcaml#34) 819d38a flambda-backend: Use OC_CFLAGS, OC_CPPFLAGS, and SHAREDLIB_CFLAGS for foreign libs (oxcaml#30) f98b564 flambda-backend: Pass -function-sections iff supported. (oxcaml#29) e0eef5e flambda-backend: Bootstrap (oxcaml#11 part 2) 17374b4 flambda-backend: Add [@@Builtin] attribute to Primitives (oxcaml#11 part 1) 85127ad flambda-backend: Add builtin, effects and coeffects fields to Cextcall (oxcaml#12) b670bcf flambda-backend: Replace tuple with record in Cextcall (oxcaml#10) db451b5 flambda-backend: Speedups in Asmlink (oxcaml#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
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
5e7dfce331 Merge flambda-backend changes 9f7f2d24a7 Edit script for test merge 1ae71ce59d Review comments (oxcaml#6) 1845365bd0 Layouts version 1 aba6294 Immediacy rework (oxcaml#122) cf4eeef Add no-stack-allocation variant of some tests that print lambda (oxcaml#133) 8f22438 Fully switch over Jane Street Merlin support to `.local-*` (oxcaml#136) 5482a8d Remove `Lev_module_definition` from lambda (oxcaml#135) 261e016 Change modular extensions to produce `AST_desc` types (oxcaml#132) 0760c82 Disable module patterns in comprehensions (oxcaml#131) 6acac80 Add Ctype global state debug printers (oxcaml#130) bc32037 Enable support for Jane Street's internal Merlin configuration (oxcaml#64) d1a8d03 Split out `Clflags.Extension` into a new file, `Language_extension` (oxcaml#125) 435de6d Fix bootstrap and add legacy CI (oxcaml#126) 7e5a626 Improve the API of language extensions to better support upstream compatibility (and also tooling) (oxcaml#13) c4e17b0 Replace var with local for faster mode checking (oxcaml#53) 6d477d8 Merge pull request oxcaml#124 from riaqn/merge-backend d737533 minor fixes after merge f1710d6 Merge flambda-backend changes cc18534 Just run make boostrap (oxcaml#123) git-subtree-dir: ocaml git-subtree-split: 5e7dfce331d0e39c695fab9b00e3d2cda7d9ebb4
ea89813 Merge pull request #154 from ocaml-flambda/merge-flambda-backend 23cf5a5 Merge flambda-backend changes b3af0c4 Unboxed types version 3 tests (#82) 1282d16 Functions with no clauses aren't local-returning (#149) 15d38c0 `make install` puts ocamlc at workspace root (#152) b4928ee Remove -absname to improve build errors (#151) f5b5e49 Remove `type_unpacks` (#150) 50d54db Remove arity-interrupting elaboration of module patterns (#146) 4382869 Remove the need to manually update the `tools/debug_printers` file (#148) 06a1d91 Add `promote-failed` targets to the Makefiles (#144) d04eb58 Cleanup of comprehensions and immutable arrays (#127) a45df79 Add a Module_strengthening extension (#142) 163c4b9 Add support for extensions in module types (#141) 74aa974 Some small patch-ups around matching on extensions (#140) 07127fe Remove raw_body from modular extensions setup (#137) 3f9bd64 Don't copy when resolving aliases in try_modtypes (#143) aba6294 Immediacy rework (#122) cf4eeef Add no-stack-allocation variant of some tests that print lambda (#133) 8f22438 Fully switch over Jane Street Merlin support to `.local-*` (#136) 5482a8d Remove `Lev_module_definition` from lambda (#135) 261e016 Change modular extensions to produce `AST_desc` types (#132) 0760c82 Disable module patterns in comprehensions (#131) 6acac80 Add Ctype global state debug printers (#130) bc32037 Enable support for Jane Street's internal Merlin configuration (#64) d1a8d03 Split out `Clflags.Extension` into a new file, `Language_extension` (#125) 435de6d Fix bootstrap and add legacy CI (#126) 7e5a626 Improve the API of language extensions to better support upstream compatibility (and also tooling) (#13) c4e17b0 Replace var with local for faster mode checking (#53) 6d477d8 Merge pull request #124 from riaqn/merge-backend d737533 minor fixes after merge f1710d6 Merge flambda-backend changes cc18534 Just run make boostrap (#123) git-subtree-dir: ocaml git-subtree-split: ea89813
CamlinternalOO
contains various unsafe operations, some of which seem to confuse arrays and blocks, to which Flambda 2 takes exception. This PR attempts to improve matters.