SH: remove -mbigtable option (PR c/4516)
NIIBE Yutaka
gniibe@m17n.org
Sun Oct 14 16:56:00 GMT 2001
NIIBE Yutaka wrote:
> Following change fixes this problem.
This was wrong. Here's update.
Bootstrapped on sh-linux.
2001-10-14 NIIBE Yutaka <gniibe@m17n.org>
* final.c (shorten_branches): For CODE_LABEL, set
insn_current_address to be aligned.
Increment insn_current_address inside the loop.
Index: gcc/final.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/final.c,v
retrieving revision 1.209
diff -c -3 -p -r1.209 final.c
*** gcc/final.c 2001/10/12 10:51:12 1.209
--- gcc/final.c 2001/10/14 23:43:30
*************** shorten_branches (first)
*** 1275,1281 ****
/* Compute initial lengths, addresses, and varying flags for each insn. */
for (insn_current_address = FIRST_INSN_ADDRESS, insn = first;
insn != 0;
! insn_current_address += insn_lengths[uid], insn = NEXT_INSN (insn))
{
uid = INSN_UID (insn);
--- 1275,1281 ----
/* Compute initial lengths, addresses, and varying flags for each insn. */
for (insn_current_address = FIRST_INSN_ADDRESS, insn = first;
insn != 0;
! insn = NEXT_INSN (insn))
{
uid = INSN_UID (insn);
*************** shorten_branches (first)
*** 1289,1294 ****
--- 1289,1295 ----
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;
}
}
*************** shorten_branches (first)
*** 1368,1373 ****
--- 1369,1376 ----
if (insn_lengths[uid] < 0)
fatal_insn ("Negative insn length", insn);
#endif
+
+ insn_current_address += insn_lengths[uid];
}
/* Now loop over all the insns finding varying length insns. For each,
--
More information about the Gcc-patches
mailing list