> From: Alan Modra <amo...@gmail.com>
> Date: Tue, 1 Nov 2011 16:33:40 +0100

> On Tue, Nov 01, 2011 at 12:57:22AM +1030, Alan Modra wrote:

>         * 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.

This (a revision in the range 181187:181189) broke build for
cris-elf like so:

libtool: compile:  /tmp/hpautotest-gcc1/cris-elf/gccobj/./gcc/xgcc 
-shared-libgcc -B/tmp/hpautotest-gcc1/cris-elf/gccobj/./gcc -nostdinc++ 
-L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/src 
-L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/src/.libs 
-nostdinc -B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/newlib/ -isystem 
/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/newlib/targ-include -isystem 
/tmp/hpautotest-gcc1/gcc/newlib/libc/include 
-B/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libgloss/cris 
-L/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libgloss/libnosys 
-L/tmp/hpautotest-gcc1/gcc/libgloss/cris 
-B/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/bin/ 
-B/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/lib/ -isystem 
/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/include -isystem 
/tmp/hpautotest-gcc1/cris-elf/pre/cris-elf/sys-include 
-I/tmp/hpautotest-gcc1/gcc/libstdc++-v3/../libgcc 
-I/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include/cris-elf
  -I/tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/libstdc++-v3/include 
-I/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++ -fno-implicit-templates -Wall 
-Wextra -Wwrite-strings -Wcast-qual -fdiagnostics-show-location=once 
-ffunction-sections -fdata-sections -frandom-seed=new_opv.lo -g -O2 -c 
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc -o new_opv.o
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc: In function 'void* 
operator new [](std::size_t)':
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc:34:1: error: missing 
REG_EH_REGION note in the end of bb 2
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc:34:1: error: call 
edges for non-call insn in bb 2
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc:34:1: error: in 
basic block 2:
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc:34:1: error: flow 
control insn inside a basic block
(call_insn 8 6 50 2 (parallel [
            (set (reg:SI 10 r10)
                (call (mem:QI (symbol_ref:SI ("_Znwm") [flags 0x41] 
<function_decl 0x7f94a90bf300 operator new>) [0 operator new S1 A8])
                    (const_int 0 [0])))
            (clobber (reg:SI 16 srp))
        ]) /tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc:33 222 
{*expanded_call_value_non_v32}
     (expr_list:REG_EH_REGION (const_int 1 [0x1])
        (nil))
    (expr_list:REG_UNUSED (use (reg:SI 10 r10))
        (nil)))
/tmp/hpautotest-gcc1/gcc/libstdc++-v3/libsupc++/new_opv.cc:34:1: internal 
compiler error: in rtl_verify_flow_info_1, at cfgrtl.c:2001

See PR51051.

brgds, H-P

Reply via email to