]> git.eshelyaron.com Git - emacs.git/commitdiff
* Add `comp-insert-insn'
authorAndrea Corallo <akrl@sdf.org>
Thu, 31 Dec 2020 10:27:53 +0000 (11:27 +0100)
committerAndrea Corallo <akrl@sdf.org>
Fri, 1 Jan 2021 11:28:27 +0000 (12:28 +0100)
* lisp/emacs-lisp/comp.el (comp-insert-insn): New inline.
(comp-emit-call-cstr): Split logic and call `comp-insert-insn'.

lisp/emacs-lisp/comp.el

index b6ade0b99db1124659c266d1b142c585c4c41c24..d7578fdcc07f134d6c3629b5a597c3e5132afd49 100644 (file)
@@ -2391,16 +2391,21 @@ TARGET-BB-SYM is the symbol name of the target block."
           (comp-emit-assume 'and target-mvar cstr block-target negated))
         finally (cl-return-from in-the-basic-block)))))))
 
+(defsubst comp-insert-insn (insn insn-cell)
+  "Insert INSN as second insn of INSN-CELL."
+  (let ((next-cell (cdr insn-cell))
+        (new-cell `(,insn)))
+    (setf (cdr insn-cell) new-cell
+          (cdr new-cell) next-cell
+          (comp-func-ssa-status comp-func) 'dirty)))
+
 (defun comp-emit-call-cstr (mvar call-cell cstr)
   "Emit a constraint CSTR for MVAR after CALL-CELL."
-  (let* ((next-cell (cdr call-cell))
-         (new-mvar (make-comp-mvar :slot (comp-mvar-slot mvar)))
+  (let* ((new-mvar (make-comp-mvar :slot (comp-mvar-slot mvar)))
          ;; Have new-mvar as LHS *and* RHS to ensure monotonicity and
          ;; fwprop convergence!!
-         (new-cell `((assume ,new-mvar (and ,new-mvar ,mvar ,cstr)))))
-    (setf (cdr call-cell) new-cell
-          (cdr new-cell) next-cell
-          (comp-func-ssa-status comp-func) 'dirty)))
+         (insn `(assume ,new-mvar (and ,new-mvar ,mvar ,cstr))))
+    (comp-insert-insn insn call-cell)))
 
 (defun comp-lambda-list-gen (lambda-list)
   "Return a generator to iterate over LAMBDA-LIST."