While building libstdc++ I get an assertion failure in haifa-sched.c,
specifically the assertion on line 3437 is failing:

          gcc_assert (!jump_p
                      || ((common_sched_info->sched_pass_id == SCHED_RGN_PASS)
                          && IS_SPECULATION_BRANCHY_CHECK_P (insn))
                      || (common_sched_info->sched_pass_id
                          == SCHED_EBB_PASS));

I haven't looked more deeply at it, but the first recent suspicious change
are the basic block handling changes Alan made two days ago:

2011-11-09  Alan Modra  <amo...@gmail.com>

        * function.c (bb_active_p): Delete.
        (dup_block_and_redirect, active_insn_between): New functions.
        (convert_jumps_to_returns, emit_return_for_exit): New functions,
        split out from..
        (thread_prologue_and_epilogue_insns): ..here.  Delete
        shadowing variables.  Don't do prologue register clobber tests
        when shrink wrapping already failed.  Delete all last_bb_active
        code.  Instead compute tail block candidates for duplicating
        exit path.  Remove these from antic set.  Duplicate tails when
        reached from both blocks needing a prologue/epilogue and
        blocks not needing such.
        * ifcvt.c (dead_or_predicable): Test both flag_shrink_wrap and
        HAVE_simple_return.
        * bb-reorder.c (get_uncond_jump_length): Make global.
        * bb-reorder.h (get_uncond_jump_length): Declare.
        * cfgrtl.c (rtl_create_basic_block): Comment typo fix.
        (rtl_split_edge): Likewise.  Warning fix.
        (rtl_duplicate_bb): New function.
        (rtl_cfg_hooks): Enable can_duplicate_block_p and duplicate_block.
        * Makefile.in (function.o): Update dependencies.

Reply via email to