Hi Eric,

this patch fixes an inefficiency problem I observed while working on PR50764.

For the test-case of PR50764, a dead label is introduced by fixup_reorder_chain
in cfg_layout_finalize, called from pass_reorder_blocks.
The dead label is removed by a cleanup_cfg in pass_duplicate_computed_gotos, but
is still present during pass_sched2.
When constructing ebbs in schedule_ebbs, the dead label ends an ebb. If we
remove the label before pass_sched2, the ebb is allowed to grow larger.

The patch tries to get rid of the dead label immediately after it's introduced,
in cfg_layout_finalized.

The new test gcc.dg/superblock.c uses -fno-asynchronous-unwind-tables to work
around PR50764.

bootstrapped and reg-tested on x86_64.

OK for next stage 1?

Thanks,
- Tom

2011-11-18  Tom de Vries  <t...@codesourcery.com>

        * rtl.h (delete_dead_labels): Declare.
        * cfgcleanup.c (delete_dead_labels): New function.
        * cfglayout.c (cfg_layout_finalize): Use delete_dead_labels.

        * gcc.dg/superblock.c: New test.

Reply via email to