Changeset 12054


Ignore:
Timestamp:
May 14, 2009, 12:07:07 PM (10 years ago)
Author:
gz
Message:

Merge r12038/r12039/r12043 from trunk (fix for bug #470)

Location:
branches/working-0711/ccl/compiler
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/X86/x862.lisp

    r12048 r12054  
    33453345;;; would vpop the first argument out of line.)
    33463346(defun x862-two-targeted-reg-forms (seg aform areg bform breg)
    3347   (unless (typep areg 'lreg)
    3348     (warn "~s is not an lreg (1/2)" areg))
    3349   (unless (typep breg 'lreg)
    3350     (warn "~s is not an lreg (2/2)" breg))
    33513347  (let* ((avar (x862-lexical-reference-p aform))
    3352          (atriv (x862-trivial-p bform))
     3348         (atriv (and (x862-trivial-p bform) (nx2-node-gpr-p breg)))
    33533349         (aconst (and (not atriv) (or (x86-side-effect-free-form-p aform)
    33543350                                      (if avar (x862-var-not-set-by-form-p avar bform)))))
     
    33723368           (adest areg)
    33733369           (bdest breg)
    3374            (atriv (x862-trivial-p bform))
     3370           (atriv (and (x862-trivial-p bform) (nx2-node-gpr-p breg)))
    33753371           (aconst (and (not atriv) (or (x86-side-effect-free-form-p aform)
    33763372                                        (if avar (x862-var-not-set-by-form-p avar bform)))))
     
    33903386
    33913387(defun x862-three-targeted-reg-forms (seg aform areg bform breg cform creg)
    3392   (unless (typep areg 'lreg)
    3393     (warn "~s is not an lreg (1/3)" areg))
    3394   (unless (typep breg 'lreg)
    3395     (warn "~s is not an lreg (2/3)" breg))
    3396   (unless (typep creg 'lreg)
    3397     (warn "~s is not an lreg (3/3)" creg))
    3398   (let* ((atriv (or (null aform)
     3388  (let* ((bnode (nx2-node-gpr-p breg))
     3389         (cnode (nx2-node-gpr-p creg))
     3390         (atriv (or (null aform)
    33993391                    (and (x862-trivial-p bform)
    3400                          (x862-trivial-p cform))))
     3392                         (x862-trivial-p cform)
     3393                         bnode
     3394                         cnode)))
    34013395         (btriv (or (null bform)
    3402                     (x862-trivial-p cform)))
     3396                    (and (x862-trivial-p cform)
     3397                         cnode)))
    34033398         (aconst (and (not atriv)
    34043399                      (or (x86-side-effect-free-form-p aform)
     
    34343429
    34353430(defun x862-four-targeted-reg-forms (seg aform areg bform breg cform creg dform dreg)
    3436   (unless (typep areg 'lreg)
    3437     (warn "~s is not an lreg (1/4)" areg))
    3438   (unless (typep breg 'lreg)
    3439     (warn "~s is not an lreg (2/4)" breg))
    3440   (unless (typep creg 'lreg)
    3441     (warn "~s is not an lreg (3/4)" creg))
    3442   (unless (typep dreg 'lreg)
    3443     (warn "~s is not an lreg (4/4)" dreg))
    3444   (let* ((atriv (or (null aform)
     3431  (let* ((bnode (nx2-node-gpr-p breg))
     3432         (cnode (nx2-node-gpr-p creg))
     3433         (dnode (nx2-node-gpr-p dreg))
     3434         (atriv (or (null aform)
    34453435                    (and (x862-trivial-p bform)
    34463436                         (x862-trivial-p cform)
    3447                          (x862-trivial-p dform))))
     3437                         (x862-trivial-p dform)
     3438                         bnode
     3439                         cnode
     3440                         dnode)))
    34483441         (btriv (or (null bform)
    34493442                    (and (x862-trivial-p cform)
    3450                          (x862-trivial-p dform))))
     3443                         (x862-trivial-p dform)
     3444                         cnode
     3445                         dnode)))
    34513446         (ctriv (or (null cform)
    3452                     (x862-trivial-p dform)))
     3447                    (and (x862-trivial-p dform)
     3448                         dnode)))
    34533449         (aconst (and (not atriv)
    34543450                      (or (x86-side-effect-free-form-p aform)
     
    34983494        (x862-one-targeted-reg-form seg aform areg)
    34993495        (x862-elide-pushes seg apushed (x862-pop-register seg areg))))
    3500     (values areg breg creg)))
     3496    (values areg breg creg dreg)))
    35013497
    35023498(defun x862-three-untargeted-reg-forms (seg aform areg bform breg cform creg)
    35033499  (with-x86-local-vinsn-macros (seg)
    3504     (let* ((atriv (or (null aform)
     3500    (let* ((bnode (nx2-node-gpr-p breg))
     3501           (cnode (nx2-node-gpr-p creg))
     3502           (atriv (or (null aform)
    35053503                      (and (x862-trivial-p bform)
    3506                            (x862-trivial-p cform))))
     3504                           (x862-trivial-p cform)
     3505                           bnode
     3506                           cnode)))
    35073507           (btriv (or (null bform)
    3508                       (x862-trivial-p cform)))
     3508                      (and (x862-trivial-p cform)
     3509                           cnode)))
    35093510           (aconst (and (not atriv)
    35103511                        (or (x86-side-effect-free-form-p aform)
     
    35433544
    35443545(defun x862-four-untargeted-reg-forms (seg aform areg bform breg cform creg dform dreg)
    3545   (let* ((atriv (or (null aform)
     3546  (let* ((bnode (nx2-node-gpr-p breg))
     3547         (cnode (nx2-node-gpr-p creg))
     3548         (dnode (nx2-node-gpr-p dreg))
     3549         (atriv (or (null aform)
    35463550                    (and (x862-trivial-p bform)
    35473551                         (x862-trivial-p cform)
    3548                          (x862-trivial-p dform))))
     3552                         (x862-trivial-p dform)
     3553                         bnode
     3554                         cnode
     3555                         dnode)))
    35493556         (btriv (or (null bform)
    35503557                    (and (x862-trivial-p cform)
    3551                          (x862-trivial-p dform))))
     3558                         (x862-trivial-p dform)
     3559                         cnode
     3560                         dnode)))
    35523561         (ctriv (or (null cform)
    35533562                    (x862-trivial-p dform)))
  • branches/working-0711/ccl/compiler/nx0.lisp

    r12052 r12054  
    608608    (:signed-64-bit-vector arch::error-object-not-simple-array-s64-2d)
    609609    (:double-float-vector arch::error-object-not-simple-array-double-float-2d)
    610     (:single-float-vector arch::error-object-not-simple-array-double-float-2d)
     610    (:single-float-vector arch::error-object-not-simple-array-single-float-2d)
    611611    (:fixnum-vector arch::error-object-not-simple-array-fixnum-2d)))
    612612
     
    625625    (:signed-64-bit-vector arch::error-object-not-simple-array-s64-3d)
    626626    (:double-float-vector arch::error-object-not-simple-array-double-float-3d)
    627     (:single-float-vector arch::error-object-not-simple-array-double-float-3d)
     627    (:single-float-vector arch::error-object-not-simple-array-single-float-3d)
    628628    (:fixnum-vector arch::error-object-not-simple-array-fixnum-3d)))
    629629
     
    19651965      (when (nx1-check-format-call (car somedef) (cdr somedef) env)
    19661966        (setq whined t)))
    1967     (when (and args-p (setq somedef (or lexenv-def defenv-def global-def)))
     1967    (when (and args-p (setq somedef (or lexenv-def defenv-def (if (typep global-def 'function) global-def))))
    19681968      (multiple-value-bind (deftype reason)
    19691969          (nx1-check-call-args somedef args spread-p)
  • branches/working-0711/ccl/compiler/nx2.lisp

    r11412 r12054  
    174174                        (not-set-in-formlist (car subforms))
    175175                        (not-set-in-formlist (cadr subforms))))))))))
     176
     177(defun nx2-node-gpr-p (reg)
     178  (and reg
     179       (eql (hard-regspec-class reg) hard-reg-class-gpr)
     180       (eql (get-regspec-mode reg) hard-reg-class-gpr-mode-node)))
Note: See TracChangeset for help on using the changeset viewer.