This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

Re: Crossjumping of tablejumps


> > by a loop that goes over all insns, checks each insn for references
> > to the literal pool, and checks for each such reference whether it
> > contains label1; if so, replaces label1 with label2 in the constant, creates 
> > a new literal pool entry for the modified constant, and replaces the 
> > literal pool reference in the insn accordingly?
> 
> Hi,
> 
> this patch does the replacement of labels as suggested.
> The replacement of the labels in pool constant is done is replace_label ().
> The patch fixes the testcase and gcc.dg/20030213-1.c.
> I hope it finally is correct.
> 
> Bootstrapped/regtested x86-64.
> Bootstrapped s390, regtesting in progress.
> OK for mainline if it passes regtesting?
Regtested, fixes gcc.dg/20030213-1.c and many fortran failures caused by
miscompilation of fortran compiler.

Josef

> 2003-03-14  Josef Zlomek  <zlomekj at suse dot cz>
> 
> 	* rtl.h (subrtx_p): Renamed to rtx_referenced_p.
> 	(rtx_pair): Added new element update_label_nuses, renamed to
> 	replace_label_data.
> 	* cfgcleanup.c (outgoing_edges_match, try_crossjump_to_edge): Use
> 	replace_label_data instead of rtx_pair.
> 	* loop.c (load_mems): Likewise.
> 	* rtlanal.c (replace_label): Replace label in pool constants and in
> 	INSN_LIST (in REG_LABEL note).
> 	(subrtx_p): Renamed to rtx_referenced_p.
> 	(subrtx_p_1): Renamed to rtx_referenced_p_1, compare the interior of
> 	LABEL_REF with CODE_LABEL, traverse constants from pool.


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