This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

bootstrap fix for ppc



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>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]