aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.co.uk>2000-09-19 16:43:36 +0000
committerBernd Schmidt <crux@gcc.gnu.org>2000-09-19 16:43:36 +0000
commitafc6898e108fcbf573a93371a2ad99481a0a1867 (patch)
tree076e920c0ca81df26d7b924132f591649f9641d1 /gcc
parent3fbef42f148344c3a58ffdb279485039bb0afa36 (diff)
downloadgcc-afc6898e108fcbf573a93371a2ad99481a0a1867.zip
gcc-afc6898e108fcbf573a93371a2ad99481a0a1867.tar.gz
gcc-afc6898e108fcbf573a93371a2ad99481a0a1867.tar.bz2
Fix shorten_branches bugs
From-SVN: r36538
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/final.c6
2 files changed, 7 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4000a6c..148ec20 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2000-09-19 Bernd Schmidt <bernds@redhat.co.uk>
+ * final.c (insn_current_reference_address): Use INSN_SHUID of seq
+ rather than that of branch.
+ (shorten_branches): Don't increment insn_current_address twice.
+
Undo most of the Wed Jan 27 23:39:53 1999 patch:
* loop.h (struct induction): Delete members derived, ix and last_use.
(struct loop_ivs): Delete members first_increment_giv and
@@ -22,8 +26,6 @@
increments.
Don't set derived_regs.
-2000-09-19 Bernd Schmidt <bernds@redhat.co.uk>
-
Fix misapplied earlier patch:
* config/sh/sh.md (floatsisf_ie): Reenable. Remove explicit reference
to fpul.
diff --git a/gcc/final.c b/gcc/final.c
index c22df2f..bfd4754 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -932,8 +932,9 @@ insn_current_reference_address (branch)
return insn_current_address;
dest = JUMP_LABEL (branch);
- /* BRANCH has no proper alignment chain set, so use SEQ. */
- if (INSN_SHUID (branch) < INSN_SHUID (dest))
+ /* BRANCH has no proper alignment chain set, so use SEQ.
+ BRANCH also has no INSN_SHUID. */
+ if (INSN_SHUID (seq) < INSN_SHUID (dest))
{
/* Forward branch. */
return (insn_last_address + insn_lengths[seq_uid]
@@ -1241,7 +1242,6 @@ shorten_branches (first)
int align = 1 << log;
int new_address = (insn_current_address + align - 1) & -align;
insn_lengths[uid] = new_address - insn_current_address;
- insn_current_address = new_address;
}
}