https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #1 from amker at gcc dot gnu.org ---
Not sure which pass should be responsible for this.  
The test uses un-initialized variable e, which could cause undefined behavior?
Also if I change the test into:

int *a;
int b, c;
void
d ()
{
  for (int e = 0; c; e++)
    switch (e)
      {
      case 0:
        a[e] = 1;
      case 1:
        b = 2;
        break;
      default:
        a[e] = 3;
      }
}

Then r227842 has segmentation fault too, though at different place.


$ ./g++ pr80463.c -fselective-scheduling2 -O2 -c -fvar-tracking-assignments -S 
pr80463.c:1:0: warning: var-tracking-assignments changes selective scheduling
 int *a;
^
pr80463.c: In function ‘void d()’:
pr80463.c:17:1: internal compiler error: Segmentation fault
 }
 ^
0xfaf6e2 crash_signal
        ../../gcc/gcc/toplev.c:352
0xb043e4 bb_note(basic_block_def*)
        ../../gcc/gcc/cfgrtl.c:679
0xf5d4dd sel_bb_head(basic_block_def*)
        ../../gcc/gcc/sel-sched-ir.c:4520
0xf6c739 moveup_expr_cached
        ../../gcc/gcc/sel-sched.c:2528
0xf74945 move_op_ascend
        ../../gcc/gcc/sel-sched.c:6151
0xf75548 code_motion_path_driver
        ../../gcc/gcc/sel-sched.c:6653
0xf756b9 move_op
        ../../gcc/gcc/sel-sched.c:6709
0xf729ef move_exprs_to_boundary
        ../../gcc/gcc/sel-sched.c:5226
0xf73541 schedule_expr_on_boundary
        ../../gcc/gcc/sel-sched.c:5438
0xf739b7 fill_insns
        ../../gcc/gcc/sel-sched.c:5580
0xf76e23 schedule_on_fences
        ../../gcc/gcc/sel-sched.c:7363
0xf77308 sel_sched_region_2
        ../../gcc/gcc/sel-sched.c:7501
0xf77491 sel_sched_region_1
        ../../gcc/gcc/sel-sched.c:7543
0xf778e4 sel_sched_region(int)
        ../../gcc/gcc/sel-sched.c:7644
0xf779fe run_selective_scheduling()
        ../../gcc/gcc/sel-sched.c:7720
0xf50167 rest_of_handle_sched2
        ../../gcc/gcc/sched-rgn.c:3628
0xf50340 execute
        ../../gcc/gcc/sched-rgn.c:3772
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

Reply via email to