Changeset 15225


Ignore:
Timestamp:
Feb 26, 2012, 2:55:09 AM (7 years ago)
Author:
gb
Message:

If a function uses &aux variables and *x862-tail-label* needs to
be emitted, make sure that the label is emitted before the &aux
variables are processed.
(This was causing failures in maxima's test suite, among other
things.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/x862.lisp

    r15174 r15225  
    10621062
    10631063
    1064 (defun x862-bind-lambda (seg lcells req opt rest keys auxen optsupvloc passed-in-regs lexpr &optional inherited
     1064(defun x862-bind-lambda (seg lcells req opt rest keys auxen optsupvloc passed-in-regs lexpr inherited tail-label
    10651065                             &aux (vloc 0) (numopt (list-length (%car opt)))
    10661066                             (nkeys (list-length (%cadr keys)))
     
    11051105            (x862-copy-register seg reg *x862-arg-z*)
    11061106            (x862-set-var-ea seg rest reg))
    1107             (let* ((loc *x862-vstack*))
    1108               (x862-vpush-register seg *x862-arg-z* :reserved)
    1109               (x862-note-top-cell rest)
    1110               (x862-bind-var seg rest loc *x862-top-vstack-lcell*))))
     1107          (let* ((loc *x862-vstack*))
     1108            (x862-vpush-register seg *x862-arg-z* :reserved)
     1109            (x862-note-top-cell rest)
     1110            (x862-bind-var seg rest loc *x862-top-vstack-lcell*))))
    11111111      (let* ((rvloc (+ vloc (* 2 *x862-target-node-size* nkeys))))
    11121112        (if (setq reg (nx2-assign-register-var rest))
    11131113          (x862-init-regvar seg rest reg (x862-vloc-ea rvloc))
    11141114          (x862-bind-var seg rest rvloc (pop lcells))))))
    1115     (when keys
    1116       (apply #'x862-init-keys seg vloc lcells keys))
     1115  (when keys
     1116    (apply #'x862-init-keys seg vloc lcells keys))
     1117  (when tail-label
     1118    (with-x86-local-vinsn-macros (seg)
     1119      (@+ tail-label)))
    11171120  (x862-seq-bind seg (%car auxen) (%cadr auxen)))
    11181121
     
    67236726          (setq *x862-entry-vstack* *x862-vstack*)
    67246727          (setq reserved-lcells (x862-collect-lcells :reserved))
    6725           (x862-bind-lambda seg reserved-lcells req opt rest keys auxen optsupvloc arg-regs lexprp inherited-vars)
    6726           (when *x862-tail-label*
    6727             (@+ *x862-tail-label*))
     6728          (x862-bind-lambda seg reserved-lcells req opt rest keys auxen optsupvloc arg-regs lexprp inherited-vars *x862-tail-label*)
    67286729          (when next-method-var-scope-info
    67296730            (push next-method-var-scope-info *x862-recorded-symbols*)))
Note: See TracChangeset for help on using the changeset viewer.