bootstrap fix for ppc
Geoff Keating
geoffk@cygnus.com
Wed Mar 8 17:51:00 GMT 2000
I've found the bootstrap problem on ppc. It is this chunk of code in
flow.c which I added some months ago:
/* If this label was attached to an ADDR_VEC, it's
safe to delete the ADDR_VEC. In fact, it's pretty
much mandatory to delete it, because the ADDR_VEC may
be referencing labels that no longer exist. */
if (LABEL_NUSES (label) == 0
&& (next = next_nonnote_insn (label)) != NULL
&& GET_CODE (next) == JUMP_INSN
&& (GET_CODE (PATTERN (next)) == ADDR_VEC
|| GET_CODE (PATTERN (next)) == ADDR_DIFF_VEC))
{
rtx pat = PATTERN (next);
int diff_vec_p = GET_CODE (pat) == ADDR_DIFF_VEC;
int len = XVECLEN (pat, diff_vec_p);
int i;
for (i = 0; i < len; i++)
LABEL_NUSES (XEXP (XVECEXP (pat, diff_vec_p, i), 0))--;
PUT_CODE (next, NOTE);
NOTE_LINE_NUMBER (next) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (next) = 0;
}
The problem is that it's deleting the ADDR_VEC but not the BARRIER
after it. I'm trying to decide whether to patch it one more time or
rewrite the whole ADDR_VEC thing...
--
- Geoffrey Keating <geoffk@cygnus.com>
More information about the Gcc
mailing list