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.