This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Make the world a bit safer for cfglayout mode
On 11/25/06, Roger Sayle <roger@eyesopen.com> wrote:
On Fri, 24 Nov 2006, Steven Bosscher wrote:
> > * jump.c (mark_all_labels): Work in cfglayout mode.
> > * cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
> > when in cfglayout mode, because there are no dead jumptables
> > visible.
> > * cfgrtl.c (commit_edge_insertions): Do not allow insertion
> > of instructions with control flow insns when in cfglayout mode.
Thank you!
> + for (insn = bb->il.rtl->header; insn; insn = NEXT_INSN (insn))
> ...
> + for (insn = bb->il.rtl->footer; insn; insn = NEXT_INSN (insn))
I'm a little surprised that we don't have BB_RTL_HEADER and BB_RTL_FOOTER
macros to access these fields, but it looks like every where currently
uses the above idiom.
There are people who wish to remove the BB_HEAD and BB_END macros
again... I wouldn't mind adding BB_RTL_{HEADER,FOOTER}, but *very*
few passes would have to mess with the header/footer so maybe keeping
it this way is better, to discourage people from doing courageous
things.
Is there an easy way of identifying which passes insert RTL control flow
insns on edges?
Sure, look through all insns in commit_one_edge_insertion and abort if
control_flow_insn_p returns true.
Gr.
Steven