From: mmitchel Date: Sun, 12 Nov 2000 13:01:37 +0000 (+0000) Subject: * jump.c (delete_computation): Don't assume that just becuase an X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ee2e4dd871f920449079fbec3ab96286f9aa4590;p=thirdparty%2Fgcc.git * jump.c (delete_computation): Don't assume that just becuase an instruction sets a register, that register is dead. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37405 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b255253a79dc..26e35f1ada06 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-11-12 Mark Mitchell + + * jump.c (delete_computation): Don't assume that just becuase an + instruction sets a register, that register is dead. + 2000-11-12 Neil Booth * cppexp.c: Don't worry about pfile->skipping. diff --git a/gcc/jump.c b/gcc/jump.c index d6941c83ffa5..195e60f9d8b4 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -2680,7 +2680,6 @@ delete_computation (insn) rtx insn; { rtx note, next; - rtx set; #ifdef HAVE_cc0 if (reg_referenced_p (cc0_rtx, PATTERN (insn))) @@ -2717,32 +2716,6 @@ delete_computation (insn) } #endif - /* The REG_DEAD note may have been omitted for a register - which is both set and used by the insn. */ - set = single_set (insn); - if (set && GET_CODE (SET_DEST (set)) == REG) - { - int dest_regno = REGNO (SET_DEST (set)); - int dest_endregno - = dest_regno + (dest_regno < FIRST_PSEUDO_REGISTER - ? HARD_REGNO_NREGS (dest_regno, - GET_MODE (SET_DEST (set))) : 1); - int i; - - for (i = dest_regno; i < dest_endregno; i++) - { - if (! refers_to_regno_p (i, i + 1, SET_SRC (set), NULL_PTR) - || find_regno_note (insn, REG_DEAD, i)) - continue; - - note = gen_rtx_EXPR_LIST (REG_DEAD, - (i < FIRST_PSEUDO_REGISTER - ? gen_rtx_REG (reg_raw_mode[i], i) - : SET_DEST (set)), NULL_RTX); - delete_prior_computation (note, insn); - } - } - for (note = REG_NOTES (insn); note; note = next) { next = XEXP (note, 1); diff --git a/gcc/testsuite/gcc.c-torture/execute/20001112-1.c b/gcc/testsuite/gcc.c-torture/execute/20001112-1.c new file mode 100644 index 000000000000..6ce2f66516f7 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20001112-1.c @@ -0,0 +1,10 @@ +int main () +{ + long long i = 1; + + i = i * 2 + 1; + + if (i != 3) + abort (); + exit (0); +}