Gregory B. Prokopski wrote:
I reorder the basic blocks in passes.c, right after compute_alignmnets ().
I added a call to shorten_branches(NULL_RTX) right after my BB reordering,
but it didn't change a thing, and I am still getting as errors:
shorten_branches does this:
/* Compute initial lengths, addresses, and varying flags for each
insn. */
for (insn_current_address = 0, insn = first;
insn != 0;
insn_current_address += insn_lengths[uid], insn = NEXT_INSN (insn))
{ ... }
where FIRST is the argument, which means that shorten_branches(NULL_RTX)
will do nothing, which is exactly what you discovered. Try calling it
correctly with a start instruction. If you grep for it, you will see
that the main call to it is
shorten_branches (get_insns ());
which runs it on the entire function. This is probably what you want.
--
Jim Wilson, GNU Tools Support, http://www.specifix.com