Fix some problems that resulted in assmebler messages 'Error: pcrel too far'
Fix some problems that resulted in assmebler messages 'Error: pcrel too far' * sh.c (find_barrier): Fix bug in ADDR_DIFF_VEC handling. (split_branches): Call init_insn_lengths. From-SVN: r19339
This commit is contained in:
parent
ced8dd8ccd
commit
a07987797e
|
@ -1,3 +1,8 @@
|
|||
Mon Apr 20 18:19:40 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* sh.c (find_barrier): Fix bug in ADDR_DIFF_VEC handling.
|
||||
(split_branches): Call init_insn_lengths.
|
||||
|
||||
Mon Apr 20 07:37:49 1998 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* i386.c: Include expr.h to get the change_address prototype
|
||||
|
|
|
@ -1983,17 +1983,24 @@ find_barrier (num_mova, mova, from)
|
|||
{
|
||||
if (num_mova)
|
||||
num_mova--;
|
||||
if (found_barrier == good_barrier)
|
||||
if (barrier_align (next_real_insn (from)) == CACHE_LOG)
|
||||
{
|
||||
/* We have just passed the barrier in front front of the
|
||||
ADDR_DIFF_VEC. Since the ADDR_DIFF_VEC is accessed
|
||||
as data, just like our pool constants, this is a good
|
||||
opportunity to accommodate what we have gathered so far.
|
||||
ADDR_DIFF_VEC, which is stored in found_barrier. Since
|
||||
the ADDR_DIFF_VEC is accessed as data, just like our pool
|
||||
constants, this is a good opportunity to accommodate what
|
||||
we have gathered so far.
|
||||
If we waited any longer, we could end up at a barrier in
|
||||
front of code, which gives worse cache usage for separated
|
||||
instruction / data caches. */
|
||||
good_barrier = found_barrier;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
rtx body = PATTERN (from);
|
||||
inc = XVECLEN (body, 1) * GET_MODE_SIZE (GET_MODE (body));
|
||||
}
|
||||
}
|
||||
|
||||
if (found_si)
|
||||
|
@ -3196,6 +3203,10 @@ split_branches (first)
|
|||
delete_insn (far_branch_list->far_label);
|
||||
far_branch_list = far_branch_list->prev;
|
||||
}
|
||||
|
||||
/* Instruction length information is no longer valid due to the new
|
||||
instructions that have been generated. */
|
||||
init_insn_lengths ();
|
||||
}
|
||||
|
||||
/* Dump out instruction addresses, which is useful for debugging the
|
||||
|
|
Loading…
Reference in New Issue