diff options
author | John Wehle <john@feith.com> | 1999-04-10 17:18:08 +0000 |
---|---|---|
committer | John Wehle <wehle@gcc.gnu.org> | 1999-04-10 17:18:08 +0000 |
commit | 6a4a5d954ba4d21559453c4a2bf5b95c5105982d (patch) | |
tree | e7defba0ed613c69d9f7f05379c456447918777f /gcc/reg-stack.c | |
parent | d6470dd07edf86bea7fa918f483004d0b3a0c7c9 (diff) | |
download | gcc-6a4a5d954ba4d21559453c4a2bf5b95c5105982d.zip gcc-6a4a5d954ba4d21559453c4a2bf5b95c5105982d.tar.gz gcc-6a4a5d954ba4d21559453c4a2bf5b95c5105982d.tar.bz2 |
i386.md (floatsisf2, [...]): Remove unused register constraints from the splitters.
* i386.md (floatsisf2, floatdisf2, floatsidf2, floatdidf2,
floatsixf2, floatdixf2, movsicc, movhicc, movsfcc, movdfcc,
movxfcc, movdicc): Remove unused register constraints from
the splitters.
* i386.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
fixuns_truncxfsi2): Delete.
* reg-stack.c (delete_insn_for_stacker): Ensure that
the only side effects of a PARALLEL are clobbers.
(subst_stack_regs): Handle subst_stack_regs_pat deleting
a PARALLEL.
* i386.md (extendsfdf2, extenddfxf2,
extendsfxf2): Rewrite using a splitter.
* i386.c (output_op_from_reg): Remove.
* i386.h: Likewise.
From-SVN: r26338
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r-- | gcc/reg-stack.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 014f952..fe554a0 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1405,6 +1405,14 @@ static void delete_insn_for_stacker (insn) rtx insn; { + int i; + + /* Ensure that the side effects were clobbers when deleting a PARALLEL. */ + if (GET_CODE (PATTERN (insn)) == PARALLEL) + for (i = 1; i < XVECLEN (PATTERN (insn), 0); i++) + if (GET_CODE (XVECEXP (PATTERN (insn), 0, i)) != CLOBBER) + abort (); + PUT_CODE (insn, NOTE); NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; NOTE_SOURCE_FILE (insn) = 0; @@ -2478,8 +2486,14 @@ subst_stack_regs (insn, regstack) for (i = 0; i < XVECLEN (PATTERN (insn), 0); i++) { if (stack_regs_mentioned_p (XVECEXP (PATTERN (insn), 0, i))) - subst_stack_regs_pat (insn, regstack, - XVECEXP (PATTERN (insn), 0, i)); + { + subst_stack_regs_pat (insn, regstack, + XVECEXP (PATTERN (insn), 0, i)); + + /* subst_stack_regs_pat may have deleted a no-op insn. */ + if (GET_CODE (insn) == NOTE) + break; + } } else subst_stack_regs_pat (insn, regstack, PATTERN (insn)); |