gcc-8.0.0-alpha20180415 snapshot (r259389) ICEs when compiling the following snippet w/ -O3 (-Ofast) -fselective-scheduling -fvar-tracking-assignments: void nl (int fg, int lb) { long long unsigned int xj = ~0; double vu; while ((lb - (!fg + 1)) != xj) lb = fg = vu; } % powerpc-e300c3-linux-gnu-gcc-8.0.0-alpha20180415 -O3 -fselective-scheduling -fvar-tracking-assignments -w -c chreru5r.c during RTL pass: sched1 chreru5r.c: In function 'nl': chreru5r.c:9:1: internal compiler error: in create_block_for_bookkeeping, at sel-sched.c:4563 } ^ 0xc0f988 create_block_for_bookkeeping /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:4563 0xc0f988 find_place_for_bookkeeping /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:4700 0xc0f988 generate_bookkeeping_insn /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:4800 0xc0f988 move_op_at_first_insn /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6077 0xc10243 code_motion_path_driver /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6669 0xc10bc9 code_motion_process_successors /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6356 0xc10bc9 code_motion_path_driver /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6622 0xc10bc9 code_motion_process_successors /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6356 0xc10bc9 code_motion_path_driver /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6622 0xc10bc9 code_motion_process_successors /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6356 0xc10bc9 code_motion_path_driver /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6622 0xc11415 move_op /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:6714 0xc11415 move_exprs_to_boundary /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:5237 0xc11415 schedule_expr_on_boundary /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:5450 0xc15488 fill_insns /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:5592 0xc172ce schedule_on_fences /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:7366 0xc172ce sel_sched_region_2 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:7504 0xc18341 sel_sched_region_1 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:7546 0xc19935 sel_sched_region(int) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:7647 0xc1a289 run_selective_scheduling() /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-8.0.0_alpha20180415/work/gcc-8-20180415/gcc/sel-sched.c:7733
Confirmed. We hit an assert saying that the split block (which is supposed to be empty) doesn't have any bb notes. But it may have a NOTE_INSN_DELETED now because there is the code emitting that when the bb only has debug insns. It is easy to relax the assert and properly merge bb notes list in this case. So far so good, but then the df_verify assert hits late in IRA. It is because of the code that was added to rotate bb indexes to avoid debug/non-debug differences around sel-sched.c:4585, there if (MAY_HAVE_DEBUG_INSNS) we do the long list of sel-sched data structures exchanges but nobody takes care of df structures. There I can do a df_bb_refs_record for the changed bbs, but still the reg_chain structures are bogus and we ICE in df_reg_chain_verify_unmarked. At this point I'm unclear what to do, thoughts?
Here's another snippet. gcc-8.0.0-alpha20180422 snapshot (r259553) w/ r259563 applied ICEs when compiling it for x86_64 w/ -O2 (-O3, -Os) -ftree-slp-vectorize -fschedule-insns -fsel-sched-pipelining -fselective-scheduling -fvar-tracking-assignments -fno-tree-pre -fno-tree-dce -fno-tree-ch -fno-move-loop-invariants: int ce, jq; int vc (void) { int g4 = 0; return g4; } void sg (void) { while (jq < 2) { int tv[] = { 1, 0, 0, 0, 0, }; if (jq == 0) { } else while (ce > 0) ce = 0; jq = vc (); } } % x86_64-pc-linux-gnu-gcc-8.0.0-alpha20180422 -O2 -ftree-slp-vectorize -fschedule-insns -fsel-sched-pipelining -fselective-scheduling -fvar-tracking-assignments -fno-tree-pre -fno-tree-dce -fno-tree-ch -fno-move-loop-invariants -w -c gbhm444y.c during RTL pass: sched1 gbhm444y.c: In function 'sg': gbhm444y.c:27:1: internal compiler error: in create_block_for_bookkeeping, at sel-sched.c:4563 } ^ 0x64e07f create_block_for_bookkeeping /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:4563 0x64e07f find_place_for_bookkeeping /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:4700 0x64e07f generate_bookkeeping_insn /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:4800 0x64e07f move_op_at_first_insn /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6077 0xc6774c code_motion_path_driver /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6669 0xc67ad6 code_motion_process_successors /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6356 0xc67ad6 code_motion_path_driver /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6622 0xc67ad6 code_motion_process_successors /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6356 0xc67ad6 code_motion_path_driver /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6622 0xc67ad6 code_motion_process_successors /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6356 0xc67ad6 code_motion_path_driver /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6622 0xc68172 move_op /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:6714 0xc68172 move_exprs_to_boundary /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:5237 0xc68172 schedule_expr_on_boundary /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:5450 0xc6c20c fill_insns /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:5592 0xc6c20c schedule_on_fences /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:7366 0xc6c20c sel_sched_region_2 /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:7504 0xc6d958 sel_sched_region_1 /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:7546 0xc6e1de sel_sched_region(int) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:7647 0xc6f0e8 run_selective_scheduling() /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180422/work/gcc-8-20180422/gcc/sel-sched.c:7733
Testcase from #c2 doesn't fail for me anymore w/ the current trunk snapshot (as of r265361), but the following one does: int py, up; void ro (int *tr, int et) { while (et < 1) { int s7 = !!*tr ? 0 : py; if (s7 != 0) { } else { up /= 2; if (py * py == 0) tr = &py; } ++et; } } % x86_64-unknown-linux-gnu-gcc-9.0.0-alpha20181021 -O1 -fschedule-insns -fsel-sched-pipelining -fselective-scheduling -fvar-tracking-assignments -fno-if-conversion -fno-tree-loop-im -w -c ebmjprna.c during RTL pass: sched1 ebmjprna.c: In function 'ro': ebmjprna.c:23:1: internal compiler error: in create_block_for_bookkeeping, at sel-sched.c:4563 23 | } | ^ 0x65a9e8 create_block_for_bookkeeping /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:4563 0x65a9e8 find_place_for_bookkeeping /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:4700 0x65a9e8 generate_bookkeeping_insn /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:4800 0x65a9e8 move_op_at_first_insn /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6077 0xc9016c code_motion_path_driver /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6669 0xc90516 code_motion_process_successors /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6356 0xc90516 code_motion_path_driver /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6622 0xc90516 code_motion_process_successors /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6356 0xc90516 code_motion_path_driver /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6622 0xc93292 move_op /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:6714 0xc93292 move_exprs_to_boundary /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:5237 0xc93292 schedule_expr_on_boundary /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:5450 0xc951cc fill_insns /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:5592 0xc951cc schedule_on_fences /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:7366 0xc951cc sel_sched_region_2 /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:7504 0xc96a56 sel_sched_region_1 /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:7546 0xc9822e sel_sched_region(int) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:7647 0xc9822e sel_sched_region(int) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:7632 0xc99141 run_selective_scheduling() /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sel-sched.c:7733 0xc78edd rest_of_handle_sched /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/sched-rgn.c:3718
*** Bug 101086 has been marked as a duplicate of this bug. ***
*** Bug 99347 has been marked as a duplicate of this bug. ***
*** Bug 110517 has been marked as a duplicate of this bug. ***
*** Bug 110525 has been marked as a duplicate of this bug. ***