diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-02-29 17:38:50 +0000 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-03-01 19:22:27 +0000 |
commit | 0cef208cc32c29b143be262fe673e7518b6ef2a8 (patch) | |
tree | ec5bebd69148f2f44fe93cec07ec4bee6938464a /lisp/emacs-lisp | |
parent | f60cb02cdfdcf69cc5e463a55f33845b3d862e62 (diff) | |
download | emacs-0cef208cc32c29b143be262fe673e7518b6ef2a8.tar.gz emacs-0cef208cc32c29b143be262fe673e7518b6ef2a8.tar.bz2 emacs-0cef208cc32c29b143be262fe673e7518b6ef2a8.zip |
* Reorganize passes
- Make propagate responsible for keeping SSA up to date.
- Run propagate-alloc as very last before final not to risk bothering
with mvar array allocation during previous tranformations.
- Fix SSA if TCO modify the CFG.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 9037c23a4f7..e14f350c2ee 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -120,12 +120,12 @@ Can be one of: 'd-default', 'd-impure' or 'd-ephemeral'. See `comp-ctxt'.") (defconst comp-passes '(comp-spill-lap comp-limplify - comp-ssa - comp-propagate-1 + comp-propagate comp-call-optim - comp-propagate-2 + comp-propagate comp-dead-code comp-tco + comp-propagate-alloc comp-final) "Passes to be executed in order.") @@ -1546,7 +1546,7 @@ PRE-LAMBDA and POST-LAMBDA are called in pre or post-order if non nil." when (eq op 'phi) do (finalize-phi args b))))) -(defun comp-ssa (_) +(defun comp-ssa () "Port all functions into mininal SSA form." (maphash (lambda (_ f) (let* ((comp-func f) @@ -1736,7 +1736,8 @@ Return t if something was changed." do (setf modified t)) finally return modified)) -(defun comp-propagate-iterate (backward) +(defun comp-propagate1 (backward) + (comp-ssa) (when (>= comp-speed 2) (maphash (lambda (_ f) ;; FIXME remove the following condition when tested. @@ -1750,14 +1751,14 @@ Return t if something was changed." (comp-log-func comp-func 3)))) (comp-ctxt-funcs-h comp-ctxt)))) -(defun comp-propagate-1 (_) +(defun comp-propagate (_) "Forward propagate types and consts within the lattice." - (comp-propagate-iterate nil)) + (comp-propagate1 nil)) -(defun comp-propagate-2 (_) +(defun comp-propagate-alloc (_) "Forward propagate types and consts within the lattice. Backward propagate array placement properties." - (comp-propagate-iterate t)) + (comp-propagate1 t)) ;;; Call optimizer pass specific code. |