Changeset 11451


Ignore:
Timestamp:
Dec 2, 2008, 6:14:04 AM (11 years ago)
Author:
rme
Message:

In general aref/aset of 2/3-d arrays, check for array dimension of *
when doing a typed operation.

(This is kind of a follow-on to r11286/r11287)

File:
1 edited

Legend:

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

    r11420 r11451  
    86358635         (ctype (if atype0 (specifier-type atype0)))
    86368636         (atype (if (array-ctype-p ctype) ctype))
     8637         (dims (and atype (array-ctype-dimensions atype)))
    86378638         (keyword (and atype
    8638                        (let* ((dims (array-ctype-dimensions atype)))
    8639                          (or (eq dims '*)
    8640                              (and (typep dims 'list)
    8641                                   (= 2 (length dims)))))
     8639                       (or (eq dims '*)
     8640                           (and (typep dims 'list)
     8641                                (= 2 (length dims))))
    86428642                       (not (array-ctype-complexp atype))
    86438643                       (funcall
     
    86468646                        atype))))
    86478647    (cond (keyword
    8648            (let* ((dims (array-ctype-dimensions atype))
    8649                   (dim0 (car dims))
     8648           (when (eq dims '*)
     8649             (setq dims nil))
     8650           (let* ((dim0 (car dims))
    86508651                  (dim1 (cadr dims)))
    86518652             (x862-aref2 seg
     
    86918692         (ctype (if atype0 (specifier-type atype0)))
    86928693         (atype (if (array-ctype-p ctype) ctype))
     8694         (dims (and atype (array-ctype-dimensions atype)))
    86938695         (keyword (and atype
    8694                        (let* ((dims (array-ctype-dimensions atype)))
    8695                          (or (eq dims '*)
    8696                              (and (typep dims 'list)
    8697                                   (= 3 (length dims)))))
     8696                       (or (eq dims '*)
     8697                           (and (typep dims 'list)
     8698                                (= 3 (length dims))))
    86988699                       (not (array-ctype-complexp atype))
    86998700                       (funcall
     
    87028703                        atype))))
    87038704    (cond (keyword
    8704            (let* ((dims (array-ctype-dimensions atype))
    8705                   (dim0 (car dims))
     8705           (when (eq dims '*)
     8706             (setq dims nil))
     8707           (let* ((dim0 (car dims))
    87068708                  (dim1 (cadr dims))
    87078709                  (dim2 (caddr dims)))
     
    87348736         (ctype (if atype0 (specifier-type atype0)))
    87358737         (atype (if (array-ctype-p ctype) ctype))
     8738         (dims (and atype (array-ctype-dimensions atype)))
    87368739         (keyword (and atype
    8737                        (let* ((dims (array-ctype-dimensions atype)))
    8738                          (or (eq dims '*)
    8739                              (and (typep dims 'list)
    8740                                   (= 2 (length dims)))))
     8740                       (or (eq dims '*)
     8741                           (and (typep dims 'list)
     8742                                (= 2 (length dims))))
    87418743                       (not (array-ctype-complexp atype))
    87428744                       (funcall
     
    87458747                        atype))))
    87468748    (cond (keyword
    8747            (let* ((dims (array-ctype-dimensions atype))
    8748                   (dim0 (car dims))
     8749           (when (eq dims '*)
     8750             (setq dims nil))
     8751           (let* ((dim0 (car dims))
    87498752                  (dim1 (cadr dims)))
    87508753             (x862-aset2 seg
     
    87748777         (ctype (if atype0 (specifier-type atype0)))
    87758778         (atype (if (array-ctype-p ctype) ctype))
     8779         (dims (and atype (array-ctype-dimensions atype)))
    87768780         (keyword (and atype
    8777                        (let* ((dims (array-ctype-dimensions atype)))
    8778                          (or (eq dims '*)
    8779                              (unless (atom dims)
    8780                                (= 3 (length dims)))))
     8781                       (or (eq dims '*)
     8782                           (unless (atom dims)
     8783                             (= 3 (length dims))))
    87818784                       (not (array-ctype-complexp atype))
    87828785                       (funcall
     
    87858788                        atype))))
    87868789    (cond (keyword
    8787            (let* ((dims (array-ctype-dimensions atype))
    8788                   (dim0 (car dims))
     8790           (when (eq dims '*)
     8791             (setq dims nil))
     8792           (let* ((dim0 (car dims))
    87898793                  (dim1 (cadr dims))
    87908794                  (dim2 (caddr dims)))
Note: See TracChangeset for help on using the changeset viewer.