summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-02-29 17:38:50 +0000
committerAndrea Corallo <akrl@sdf.org>2020-03-01 19:22:27 +0000
commit0cef208cc32c29b143be262fe673e7518b6ef2a8 (patch)
treeec5bebd69148f2f44fe93cec07ec4bee6938464a /lisp/emacs-lisp
parentf60cb02cdfdcf69cc5e463a55f33845b3d862e62 (diff)
downloademacs-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.el19
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.