Commit Graph

5 Commits (c550f4b8583596b4b59662960371943e7f750fdf)

Author SHA1 Message Date
Xavier Leroy c0b1ae096e Reflecting commit 15497 on version/4.02:
PR#6588 part 1: wrong "parallel move" code generated for CSE of operators
  that have multiple results.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15530 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-10-13 09:06:01 +00:00
Xavier Leroy a9879e2119 Reflecting commit 15021 on version/4.02:
Follow-up to commit 15012: keeping checkbound equations is useless when load equations have been forgotten, as all checkbounds involve a load of a block header.  So, simplify things further by emptying the numbering after calls and allocs.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15022 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-07-23 07:46:59 +00:00
Xavier Leroy 127c288ae5 Reflecting commit 15012 on version/4.02:
PR#6484 and PR#6486: CSE across memory allocations can present the GC with memory roots that are illegal.
Plus: lift the previous restriction that all arithmetic ops and loads have at most one result register, this isn't true for ARM with soft floats.
Plus: code refactoring and more comments.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15013 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-07-18 14:11:33 +00:00
Xavier Leroy 657ba73021 Liveness & Deadcode: fix i386-specific issue with move instructions accessing
the x87 FP stack, which must not be eliminated.
CSEgen: harden against the same x87-specific issue + against reuse of
  values in fixed hardware registers that were destroyed by a prior
  operation.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14877 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-05-16 14:37:22 +00:00
Xavier Leroy 558f40e344 New back-end optimization pass: common subexpression elimination (CSE).
(Reuses results of previous computations instead of recomputing them.)
(Cherry-picked from branch backend-optim.)
Tested on amd64/linux and i386/linux.
Other back-ends compile (after assorted updates) but are untested.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14688 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-04-26 10:40:22 +00:00