This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFA:] Split REG_LABEL into REG_LABEL_TARGET and REG_LABEL_OPERAND
- From: Eric Botcazou <ebotcazou at libertysurf dot fr>
- To: Hans-Peter Nilsson <hans-peter dot nilsson at axis dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sat, 24 Nov 2007 17:45:39 +0100
- Subject: Re: [RFA:] Split REG_LABEL into REG_LABEL_TARGET and REG_LABEL_OPERAND
- References: <200711132331.lADNVEcY001847@ignucius.se.axis.com>
[Sorry for the delay too. :-)]
> This code rarely hits these days (post DF), if ever. I thought it was
> just about necessary for targets with branch-target registers for
> conditional branches like sh64 (unique in this aspect AFAICT) but that
> target doesn't split the branch-target-register-load from the branch
> until register allocation and by that time, JUMP_LABEL is safely set.
> I instrumented the code with a gcc_unreachable, and this code only
> hits for gcc.c-torture/compile/920501-7.c (for most targets). If you
> prefer, I can remove this code. The situation may of course change if
> more passes start calling mark_all_labels.
OK, let's keep it then.
> * rtlanal.c (label_is_jump_target_p): Return true for a matching
> REG_LABEL_TARGET.
> * reorg.c (fill_slots_from_thread): Correct last change to use
> NULL_RTX, not NULL. Outside of REG_NOTES loop, increase and
> decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
OK for mainline, thanks for following up on this.
--
Eric Botcazou