Changeset 15032


Ignore:
Timestamp:
Oct 20, 2011, 9:04:46 PM (8 years ago)
Author:
gb
Message:

In X862-{THREE,FOUR}-UNTARGETED-REG-FORMS: when a destination register
is determined, resolve conflicts with any that are still pending (even
if the destination is set via possibly-elided pop.)

File:
1 edited

Legend:

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

    r15024 r15032  
    38063806      (unless btriv
    38073807        (if bconst
    3808           (progn
    3809             (setq bdest (x862-one-untargeted-reg-form seg bform breg restricted)
    3810                   restricted (x862-restrict-node-target bdest restricted))
    3811             (when (same-x86-reg-p bdest areg)
    3812               (setq areg breg)))
    3813           (x862-elide-pushes seg bpushed (x862-pop-register seg (setq bdest breg)))))
     3808          (setq bdest (x862-one-untargeted-reg-form seg bform breg restricted))
     3809          (x862-elide-pushes seg bpushed (x862-pop-register seg (setq bdest breg))))
     3810        (setq restricted (x862-restrict-node-target bdest restricted))
     3811        (when (same-x86-reg-p bdest areg)
     3812          (setq areg breg)))
    38143813      (unless atriv
    38153814        (if aconst
     
    39153914    (unless ctriv
    39163915      (if cconst
    3917         (progn
    3918           (setq cdest (x862-one-untargeted-reg-form seg cform creg restricted)
    3919                 restricted (x862-restrict-node-target cdest restricted))
    3920           (unless adest
    3921             (when (same-x86-reg-p cdest areg)
    3922               (setq areg creg)))
    3923           (unless bdest
    3924             (when (same-x86-reg-p cdest breg)
    3925               (setq breg creg))))
    3926         (x862-elide-pushes seg cpushed (x862-pop-register seg (setq cdest creg)))))
     3916        (setq cdest (x862-one-untargeted-reg-form seg cform creg restricted))
     3917
     3918        (x862-elide-pushes seg cpushed (x862-pop-register seg (setq cdest creg))))
     3919      (setq restricted (x862-restrict-node-target cdest restricted))
     3920      (unless adest
     3921        (when (same-x86-reg-p cdest areg)
     3922          (setq areg creg)))
     3923      (unless bdest
     3924        (when (same-x86-reg-p cdest breg)
     3925          (setq breg creg))))
    39273926    (unless btriv
    39283927      (if bconst
    3929         (progn
    3930           (setq bdest (x862-one-untargeted-reg-form seg bform breg restricted)
    3931                 restricted (x862-restrict-node-target bdest restricted))
    3932           (unless adest
    3933             (when (same-x86-reg-p bdest areg)
    3934               (setq areg breg))))
    3935         (x862-elide-pushes seg bpushed (x862-pop-register seg (setq bdest breg)))))
     3928        (setq bdest (x862-one-untargeted-reg-form seg bform breg restricted))
     3929        (x862-elide-pushes seg bpushed (x862-pop-register seg (setq bdest breg))))
     3930      (setq restricted (x862-restrict-node-target bdest restricted))
     3931      (unless adest
     3932        (when (same-x86-reg-p bdest areg)
     3933          (setq areg breg))))
    39363934    (unless atriv
    39373935      (if aconst
Note: See TracChangeset for help on using the changeset viewer.