Commit Graph

179 Commits (bdd9ca391e3a56253d7480b07bb1a8aac361904c)

Author SHA1 Message Date
Frédéric Bour d1eecfc604 Distinguish root and heap values in Lambda.initialization (#673) 2016-12-27 11:43:36 +00:00
Leo White 0c38bbd11c Add stub marker to lambda code 2016-12-14 17:32:24 +00:00
Leo White 9915e7e299 Move the ref_to_variables pass to a later position (#968) 2016-12-14 15:49:34 +00:00
Leo White 18060fb09e Fix [@@inline] with default parameters in flambda (#880) 2016-12-14 13:14:21 +00:00
Pierre Chambart 2086589557 Update Changes and comment on potential improvements 2016-12-14 13:14:21 +00:00
Pierre Chambart 9ec45c338d Fix preallocated float arrays with symbol arguments generation 2016-12-14 13:14:21 +00:00
Pierre Chambart c5925cb3a5 Turn directly lambda constants into let_symbols
This reduces the compilation time and memory one some files containing
huge constants.
2016-12-14 13:14:21 +00:00
Pierre Chambart 6ddc97a665 Fix PR#7291
Make Inlining_transform.inline_by_copying_function_declaration robust to
Invariant_params being an overaproximation.
2016-12-14 13:14:21 +00:00
Damien Doligez 2c521d23bd fix whitespace and overlong lines 2016-12-14 13:14:21 +00:00
Mark Shinwell be0627143c Add Debuginfo.print_compact (#854) 2016-12-12 11:00:21 +00:00
Mark Shinwell 2ff35694f4 Speed improvement in Lift_constants (#860) 2016-12-09 15:09:49 +00:00
Pierre Chambart 575f20368d Avoid checking twice if divisor is zero (#702)
* Avoid checking twice if divisor is zero

The flambda branch before merging assumed that Pdivint and Pmodint where
already checked when entering Cmmgen. This was not the case anymore
after merging and this change was lost. This fix this overlook by adding
an annotation to the Pdivint and Pmodint primitive telling whether the
division by zero was already checked.

The reason to move the test generation to Closure_conversion in the
flambda branch was to allow the division primitive to be considered as
pure without needing to check for the effective value of the
divisor. This simplified Semantics_of_primitives a lot.

* Bigarray div and mod also carry safety information

* Handle bigint div and mod like int div and mod in closure_conversion

* Update Changes

* Test for divisions by zero

* Turn Pdivbint and Pmodbint argument into an inline record
2016-10-05 16:42:40 +02:00
Damien Doligez 6afcbc96b8 clean up code duplication and whitespace 2016-08-08 17:02:19 +02:00
Hongbo Zhang a36cd4c4ec add needed lambda IR for safe string 2016-08-07 11:07:10 -04:00
Leo White 51f58a68f5 Merge pull request #714 from chambart/lazy_warning_59
Prevent warning 59 from triggering on Lazy of constants
2016-08-01 15:19:46 +01:00
Damien Doligez 0b4fbc2b30 fix whitespace, long lines, headers 2016-08-01 16:06:59 +02:00
Pierre Chambart 6ee86d523d Reorganize switch handling 2016-07-31 17:35:21 +02:00
Pierre Chambart f5573b0f6b Prevent warning 59 from triggering on Lazy of constants
Lazy.force (lazy (fun x -> x)) was triggering this warning because the
code generated by Lazy.force modifies its argument in a dead branch.
This allows to recognize this branch as dead, and eliminate it.
2016-07-31 17:34:22 +02:00
Mark Shinwell dabd380c72 Bug in comparison function 2016-07-29 16:19:44 +01:00
Mark Shinwell cd0bd8aa73 Spacetime: a new memory profiler (#585) 2016-07-29 15:07:10 +01:00
Pierre Chambart 86c9e4f759 Optimize constant char comparison 2016-07-28 19:35:54 +02:00
Pierre Chambart d9eaf8a34b Make constant string access effect free
This allows removing them when the value of constant strings can be propagated.
2016-07-28 19:35:54 +02:00
Pierre Chambart 9b23b97cd2 Remove obsolete comment 2016-07-28 19:35:54 +02:00
Pierre Chambart 8d348d48ee Optimize away string switch on constant strings 2016-07-28 19:35:54 +02:00
Pierre Chambart 4e22061ff9 Optimize away some trivial physical differences 2016-07-28 19:35:54 +02:00
Leo White b489c296a0 Fix infinite unrolling bug again 2016-07-27 10:36:40 +01:00
Pierre Chambart a345e33f11 Apply review comments 2016-07-25 14:48:29 +02:00
Pierre Chambart 2b70ee6df4 Make meet call a bit lighter 2016-07-22 13:52:13 +02:00
Pierre Chambart 04a6fbc687 String switch and static catch returns better approximations 2016-07-21 04:25:39 +02:00
Pierre Chambart af5da770e5 Apply really_import_approx in Simple_value_approx.meet 2016-07-21 04:20:46 +02:00
alainfrisch 9538a54508 Allowing sharing string literals when configured in -safe-string mode. 2016-07-19 14:28:53 +02:00
alainfrisch 8c00e8082a Remove unused module declarations. 2016-07-18 10:35:23 +02:00
Mark Shinwell 5f00ce793e Improve location handling in the middle end (version for merging) (#666) 2016-07-06 15:42:29 +01:00
Fourchaux cad3b523a6 typos ('middle_end' directory) 2016-06-11 18:05:05 +02:00
Frédéric Bour 28dc832030 Make backtraces aware of inlining (#247) 2016-05-25 14:00:37 +01:00
Pierre Chambart d7610c640e Optimize away some intermediate immutable float records 2016-05-17 14:53:54 +01:00
alainfrisch 2d927bd8d5 Merge branch 'bb_sys_backend_type' of https://github.com/bloomberg/ocaml into bloomberg-bb_sys_backend_type 2016-05-02 18:12:38 +02:00
Hongbo Zhang c803c3a32a using `const_ptr_expr` in the middle end 2016-04-29 10:25:45 -04:00
Damien Doligez 520fb2df50 Merge tag 4.03.0 into trunk. 2016-04-28 16:13:21 +02:00
Hongbo Zhang 31c88ac4d9 always use tag 0 to make it consistent 2016-04-27 21:03:55 -04:00
Hongbo Zhang 6c3a01bb7c prepare backend_type primitive 2016-04-24 17:42:23 -04:00
Pierre Chambart 4092639507 Array assignement primitive specialisation using the approximation 2016-04-12 14:50:01 +02:00
Pierre Chambart aa7118f331 Improve approximations using block kind 2016-04-12 14:50:00 +02:00
Pierre Chambart f7dcbf21e7 Annotate Let_mutable with the kind of value 2016-04-12 14:49:52 +02:00
Pierre Chambart f4665bee42 Annotate each field of a block separately 2016-04-12 14:49:51 +02:00
alainfrisch 83ae23568c Renaming block_kind -> value_kind. 2016-04-12 14:49:50 +02:00
alainfrisch 4bf9ad6a3c Keep the approx on all Llet nodes, not only variables. 2016-04-12 14:49:42 +02:00
alainfrisch c996f5f18d Keep track of mutable variables obtained by eliminating local references holding aun unboxable number type. Then force unboxing of such variables to avoid repeated boxing every time the reference is assigned. 2016-04-12 14:49:40 +02:00
Mark Shinwell ee367399a2 Attend to final Flambda CR comments for 4.03 release 2016-03-30 11:29:34 +02:00
Pierre Chambart 0c3ccbd838 Remove_unused_arguments stub functions should not be specialised 2016-03-15 23:25:59 +01:00
Gabriel Scherer ab8fc91e29 Merge pull request #492 from chambart/fix_dflambda
Fix -dflambda argument
2016-03-05 09:28:42 -05:00
Mark Shinwell 1c003afb9a Correct erroneous comment 2016-03-03 10:01:27 +09:00
Mark Shinwell f5bc512181 Flambda: do not forget the default case when measuring the size of Switch 2016-02-29 16:46:02 +00:00
Mark Shinwell 8cb01881f7 Flambda: restore correct simplification code for over-applications 2016-02-29 16:45:06 +00:00
Mark Shinwell 8641de145e Merge pull request #484 from lpw25/fix-extract-projections
GPR#484: Change how Extract_projections handles nested sets of closures
2016-02-26 16:15:32 +00:00
Leo White e9a6562a60 Change how extract projections handles nested sets of closures 2016-02-24 16:25:59 +00:00
Mark Shinwell 0453c74baa Fix Unbox_closures to lessen runtime performance penalty 2016-02-24 09:03:15 +00:00
Damien Doligez 5401ce8473 Update headers for the new license.
Remains to be done: remove all headers in testsuite/tests.
2016-02-18 16:59:16 +01:00
Leo White 4253ed1530 Tidy up new command-line parameters 2016-02-11 16:02:02 +00:00
Mark Shinwell 4137939cd7 Make warning 59 less unhelpful (includes work by Runhang Li) 2016-02-11 14:35:18 +00:00
Mark Shinwell bde2bdd206 Reformatting only (to the standards of tools/check-typo) 2016-02-10 18:28:38 +01:00
Mark Shinwell c67bd88eee Addressing CR comments for Flambda 2016-02-10 17:01:33 +01:00
Leo White 59aab8d1c2 Support for unroll and and specialise attributes 2016-02-10 14:14:42 +01:00
Mark Shinwell 7a02671d61 Further Flambda fixes 2016-02-10 14:14:42 +01:00
Mark Shinwell f95fb8bbb0 Bug fixes etc for Flambda 2016-02-09 18:38:16 +01:00
Mark Shinwell a397511031 Import latest Flambda changes 2016-02-09 09:59:26 +01:00
Pierre Chambart cdd75a23e6 Flambda produces the same stack traces as closure 2016-01-28 17:33:15 +01:00
Pierre Chambart fd8cdc9d20 Propagate debuginfo as an environment 2016-01-28 16:38:10 +01:00
Leo White b9bdfa8248 Mark opt arg wrappers of recursive functions as stubs 2016-01-28 16:01:56 +01:00
Pierre Chambart b0b0f6609c Enable flambda 2016-01-28 15:04:47 +01:00
Pierre Chambart d07c0698d0 Fix small divergences 2016-01-22 01:24:02 +01:00
Pierre Chambart 0e8ed08a9d Add warning headers to flambda files 2016-01-22 00:39:46 +01:00
Mark Shinwell fb35dc8fb4 Fix chambart/ocaml-1 GPR#134: wrong sharing of float array literals (Flambda only) 2016-01-21 16:46:49 +00:00
Mark Shinwell 0664a1cf03 Alter array patch after feedback from jdimino 2016-01-15 14:49:01 +00:00
Mark Shinwell 2a8be79dc5 Further updates to middle_end/ only 2016-01-12 16:37:27 +01:00
Mark Shinwell 2ff7c69704 Further updates to middle_end/ only 2016-01-12 15:45:31 +01:00
Mark Shinwell b7df26e34b Update middle_end/ for recent changes from flambda_trunk 2016-01-12 13:38:52 +01:00
Mark Shinwell 71bed7af0d Correct name of licence 2016-01-05 08:46:03 +00:00
Mark Shinwell b085ec553c New files for flambda 2016-01-04 13:42:56 +00:00