http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60298
--- Comment #1 from Terry Guo <terry.guo at arm dot com> --- I did a little investigation and think the issue may be related to following code from function remove_some_program_points_and_update_live_ranges: 782 max_regno = max_reg_num (); 783 for (i = FIRST_PSEUDO_REGISTER; i < (unsigned) max_regno; i++) 784 { 785 for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next) 786 { 787 lra_assert (r->start <= r->finish); 788 bitmap_set_bit (born, r->start); 789 bitmap_set_bit (dead, r->finish); 790 } 791 } The max_regno is 575, while the length of array lra_reg_info is just 568. When the loop index i is 568, the issue is triggered.