This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PowerPC shrink-wrap support 3 of 3


> From: Alan Modra <amodra@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]