diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-11-12 13:01:37 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-11-12 13:01:37 +0000 |
commit | ee2e4dd871f920449079fbec3ab96286f9aa4590 (patch) | |
tree | 00463063b57e97e73fdf6d912f40f5f6fdc19729 /gcc | |
parent | 920b5d413dad5d969d4fb028ef4dc2f01cd07938 (diff) | |
download | gcc-ee2e4dd871f920449079fbec3ab96286f9aa4590.tar.gz |
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/jump.c | 27 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20001112-1.c | 10 |
3 files changed, 15 insertions, 27 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b255253a79d..26e35f1ada0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-11-12 Mark Mitchell <mark@codesourcery.com> + + * jump.c (delete_computation): Don't assume that just becuase an + instruction sets a register, that register is dead. + 2000-11-12 Neil Booth <neilb@earthling.net> * cppexp.c: Don't worry about pfile->skipping. diff --git a/gcc/jump.c b/gcc/jump.c index d6941c83ffa..195e60f9d8b 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 00000000000..6ce2f66516f --- /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); +} |