Changeset 16746


Ignore:
Timestamp:
May 31, 2016, 10:08:39 PM (5 years ago)
Author:
gb
Message:

When doing natural addition/subtraction, don't assume that
constant operands can be directly encoded. Fixes ticket:1362 in the trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/ARM/arm2.lisp

    r16740 r16746  
    94039403      (if (and fix-x fix-y)
    94049404        (arm2-natural-constant seg vreg xfer (+ fix-x fix-y))
    9405         (let* ((u15x (and (typep fix-x '(unsigned-byte 15)) fix-x))
    9406                (u15y (and (typep fix-y '(unsigned-byte 15)) fix-y)))
     9405        (let* ((u15x (and (typep fix-x '(unsigned-byte 15)) (arm::encode-arm-immediate fix-x) fix-x))
     9406               (u15y (and (typep fix-y '(unsigned-byte 15)) (arm::encode-arm-immediate fix-y) fix-y)))
    94079407          (if (not (or u15x u15y))
    94089408            (with-imm-target () (xreg :natural)
     
    94279427      (if (and fix-x fix-y)
    94289428        (arm2-natural-constant seg vreg xfer (- fix-x fix-y))
    9429         (let* ((u15y (and (typep fix-y '(unsigned-byte 15)) fix-y)))
     9429        (let* ((u15y (and (typep fix-y '(unsigned-byte 15))
     9430                          (arm::encode-arm-immediate fix-y)
     9431                          fix-y)))
    94309432          (if (not u15y)
    94319433            (with-imm-target () (xreg :natural)
Note: See TracChangeset for help on using the changeset viewer.