From: J"orn Rennecke Date: Wed, 29 Apr 1998 13:53:20 +0000 (+0000) Subject: sched.c (new_insn_dead_notes): Check if the register was used in the original instruc... X-Git-Tag: prereleases/egcs-1.1-prerelease~1493 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=93da030f633623de87801b2aea0b8cfe79edebc2;p=thirdparty%2Fgcc.git sched.c (new_insn_dead_notes): Check if the register was used in the original instruction. * sched.c (new_insn_dead_notes): Check if the register was used in the original instruction. * haifa-sched.c (new_insn_dead_notes): Likewise. From-SVN: r19494 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 42f71194c5b1..b0c68c2b9679 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Apr 29 21:45:16 1998 J"orn Rennecke + + * sched.c (new_insn_dead_notes): Check if the register was + used in the original instruction. + * haifa-sched.c (new_insn_dead_notes): Likewise. + Wed Apr 29 13:46:03 1998 Jim Wilson * dwarf2out.c (scope_die_for): If could not find proper scope, diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 8d220f04ee32..7fccfd2be793 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -7621,6 +7621,13 @@ new_insn_dead_notes (pat, insn, last, orig_insn) if (GET_CODE (dest) == REG) { + /* If the original insn already used this register, we may not add new + notes for it. One example for a split that needs this test is + when a multi-word memory access with register-indirect addressing + is split into multiple memory accesses with auto-increment and + one adjusting add instruction for the address register. */ + if (reg_referenced_p (dest, PATTERN (orig_insn))) + return; for (tem = last; tem != insn; tem = PREV_INSN (tem)) { if (GET_RTX_CLASS (GET_CODE (tem)) == 'i' diff --git a/gcc/sched.c b/gcc/sched.c index a44002e12a78..635dceba09d4 100644 --- a/gcc/sched.c +++ b/gcc/sched.c @@ -3655,6 +3655,13 @@ new_insn_dead_notes (pat, insn, last, orig_insn) if (GET_CODE (dest) == REG) { + /* If the original insn already used this register, we may not add new + notes for it. One example for a split that needs this test is + when a multi-word memory access with register-indirect addressing + is split into multiple memory accesses with auto-increment and + one adjusting add instruction for the address register. */ + if (reg_referenced_p (dest, PATTERN (orig_insn))) + return; for (tem = last; tem != insn; tem = PREV_INSN (tem)) { if (GET_RTX_CLASS (GET_CODE (tem)) == 'i'