[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-04-09 Thread abel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #15 from Andrey Belevantsev  ---
Author: abel
Date: Mon Apr  9 10:19:50 2018
New Revision: 259231

URL: https://gcc.gnu.org/viewcvs?rev=259231=gcc=rev
Log:
   PR rtl-optimization/80463
   PR rtl-optimization/83972
   PR rtl-optimization/83480

   * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
   correct producer for the insn.
   (tidy_control_flow): Fixup seqnos in case of debug insns.

   * gcc.dg/pr80463.c: New test.
   * g++.dg/pr80463.C: Likewise.
   * gcc.dg/pr83972.c: Likewise.


Added:
trunk/gcc/testsuite/g++.dg/pr80463.C
trunk/gcc/testsuite/gcc.dg/pr80463.c
trunk/gcc/testsuite/gcc.dg/pr83972.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/sel-sched-ir.c
trunk/gcc/testsuite/ChangeLog

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-22 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #14 from Arseny Solokha  ---
Thank you for the analysis. I can fill a separate PR for this testcase if
that's more appropriate.

Meanwhile, I got two more testcases which I've just reported as PR83972 and
PR83973 not to clutter this PR too much, though both of them may be actually
duplicates of this one.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-22 Thread abel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #13 from Andrey Belevantsev  ---
(In reply to Andrey Belevantsev from comment #12)
> (In reply to Arseny Solokha from comment #11)
> > How about this one? It makes only trunk gcc ICE, though.
> > 
> > short int t2;
> > int cd, aa, ft;
> > 
> > void
> > dh (void)
> > {
> >   int qs = 0;
> > 
> >   if (t2 < 1)
> > {
> >   int bq = 0;
> > 
> >   while (bq < 1)
> > {
> > }
> > 
> >   while (t2 < 1)
> > {
> >   if (t2 == 0)
> > {
> >   bq = 0;
> >   cd = !!cd;
> > }
> >   else
> > {
> >   bq = 1;
> >   cd = bq > qs;
> > }
> > 
> >   t2 += cd;
> >   bq = (t2 / qs) == bq;
> > 
> >   if (aa != ft)
> > {
> >   qs %= 0;
> >   while (bq != 0)
> > {
> >  ro:
> >   ;
> > }
> > }
> > 
> >   ++t2;
> > }
> > 
> >  ia:
> >   goto ro;
> > }
> > 
> >   goto ia;
> > }
> > 
> > % gcc-8.0.0-alpha20180114 -O2 -fvar-tracking-assignments
> > -fselective-scheduling2 -ftree-loop-vectorize -fnon-call-exceptions
> > -fno-tree-vrp -fno-gcse-lm -fno-tree-loop-im
> > -fno-reorder-blocks-and-partition -fno-reorder-blocks
> > -fno-move-loop-invariants -w -c rsd2aiem.c
> > during RTL pass: sched2
> > rsd2aiem.c: In function 'dh':
> > rsd2aiem.c:51:1: internal compiler error: in
> > av_set_could_be_blocked_by_bookkeeping_p, at sel-sched.c:3622
> >  }
> >  ^
> > 0x64ad85 av_set_could_be_blocked_by_bookkeeping_p
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:3622
> > 0x64ad85 code_motion_process_successors
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:6395
> > 0x64ad85 code_motion_path_driver
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:6617
> > 0xc59886 code_motion_process_successors
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:6351
> > 0xc59886 code_motion_path_driver
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:6617
> > 0xc59886 code_motion_process_successors
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:6351
> > 0xc59886 code_motion_path_driver
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:6617
> > 0xc5aa5a find_used_regs
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:3283
> > 0xc5aa5a collect_unavailable_regs_from_bnds
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:1598
> > 0xc5aa5a find_best_reg_for_expr
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:1661
> > 0xc5aa5a fill_vec_av_set
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:3797
> > 0xc5da87 fill_ready_list
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:4027
> > 0xc5da87 find_best_expr
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:4387
> > 0xc5da87 fill_insns
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:5544
> > 0xc5da87 schedule_on_fences
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:7361
> > 0xc5da87 sel_sched_region_2
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:7499
> > 0xc61737 sel_sched_region_1
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:7541
> > 0xc61737 sel_sched_region(int)
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:7642
> > 0xc627a8 run_selective_scheduling()
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sel-sched.c:7718
> > 0xc42625 rest_of_handle_sched2
> > 
> > /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> > sched-rgn.c:3729
> > 
> > (as of r256677)
> 
> Give me a few more days for unrelated stuff and I'll have enough time to
> look at this.  If that turns to be the same dependence issue, we can check
> in a patch without waiting for hot/cold bbs issue to be sorted out.

So this one is unrelated to the original testcase.  What happens is we have a
usual if then else control flow like this: bb 4 --> bb 5, bb 6; bb 5 --> bb 7;
bb 6 --> bb 7.  There is a debug stmt in bb 6 sayng bq 

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-15 Thread abel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #12 from Andrey Belevantsev  ---
(In reply to Arseny Solokha from comment #11)
> How about this one? It makes only trunk gcc ICE, though.
> 
> short int t2;
> int cd, aa, ft;
> 
> void
> dh (void)
> {
>   int qs = 0;
> 
>   if (t2 < 1)
> {
>   int bq = 0;
> 
>   while (bq < 1)
> {
> }
> 
>   while (t2 < 1)
> {
>   if (t2 == 0)
> {
>   bq = 0;
>   cd = !!cd;
> }
>   else
> {
>   bq = 1;
>   cd = bq > qs;
> }
> 
>   t2 += cd;
>   bq = (t2 / qs) == bq;
> 
>   if (aa != ft)
> {
>   qs %= 0;
>   while (bq != 0)
> {
>  ro:
>   ;
> }
> }
> 
>   ++t2;
> }
> 
>  ia:
>   goto ro;
> }
> 
>   goto ia;
> }
> 
> % gcc-8.0.0-alpha20180114 -O2 -fvar-tracking-assignments
> -fselective-scheduling2 -ftree-loop-vectorize -fnon-call-exceptions
> -fno-tree-vrp -fno-gcse-lm -fno-tree-loop-im
> -fno-reorder-blocks-and-partition -fno-reorder-blocks
> -fno-move-loop-invariants -w -c rsd2aiem.c
> during RTL pass: sched2
> rsd2aiem.c: In function 'dh':
> rsd2aiem.c:51:1: internal compiler error: in
> av_set_could_be_blocked_by_bookkeeping_p, at sel-sched.c:3622
>  }
>  ^
> 0x64ad85 av_set_could_be_blocked_by_bookkeeping_p
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:3622
> 0x64ad85 code_motion_process_successors
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:6395
> 0x64ad85 code_motion_path_driver
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:6617
> 0xc59886 code_motion_process_successors
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:6351
> 0xc59886 code_motion_path_driver
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:6617
> 0xc59886 code_motion_process_successors
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:6351
> 0xc59886 code_motion_path_driver
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:6617
> 0xc5aa5a find_used_regs
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:3283
> 0xc5aa5a collect_unavailable_regs_from_bnds
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:1598
> 0xc5aa5a find_best_reg_for_expr
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:1661
> 0xc5aa5a fill_vec_av_set
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:3797
> 0xc5da87 fill_ready_list
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:4027
> 0xc5da87 find_best_expr
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:4387
> 0xc5da87 fill_insns
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:5544
> 0xc5da87 schedule_on_fences
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:7361
> 0xc5da87 sel_sched_region_2
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:7499
> 0xc61737 sel_sched_region_1
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:7541
> 0xc61737 sel_sched_region(int)
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:7642
> 0xc627a8 run_selective_scheduling()
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sel-sched.c:7718
> 0xc42625 rest_of_handle_sched2
>   
> /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/
> sched-rgn.c:3729
> 
> (as of r256677)

Give me a few more days for unrelated stuff and I'll have enough time to look
at this.  If that turns to be the same dependence issue, we can check in a
patch without waiting for hot/cold bbs issue to be sorted out.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-15 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #11 from Arseny Solokha  ---
How about this one? It makes only trunk gcc ICE, though.

short int t2;
int cd, aa, ft;

void
dh (void)
{
  int qs = 0;

  if (t2 < 1)
{
  int bq = 0;

  while (bq < 1)
{
}

  while (t2 < 1)
{
  if (t2 == 0)
{
  bq = 0;
  cd = !!cd;
}
  else
{
  bq = 1;
  cd = bq > qs;
}

  t2 += cd;
  bq = (t2 / qs) == bq;

  if (aa != ft)
{
  qs %= 0;
  while (bq != 0)
{
 ro:
  ;
}
}

  ++t2;
}

 ia:
  goto ro;
}

  goto ia;
}

% gcc-8.0.0-alpha20180114 -O2 -fvar-tracking-assignments
-fselective-scheduling2 -ftree-loop-vectorize -fnon-call-exceptions
-fno-tree-vrp -fno-gcse-lm -fno-tree-loop-im -fno-reorder-blocks-and-partition
-fno-reorder-blocks -fno-move-loop-invariants -w -c rsd2aiem.c
during RTL pass: sched2
rsd2aiem.c: In function 'dh':
rsd2aiem.c:51:1: internal compiler error: in
av_set_could_be_blocked_by_bookkeeping_p, at sel-sched.c:3622
 }
 ^
0x64ad85 av_set_could_be_blocked_by_bookkeeping_p
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:3622
0x64ad85 code_motion_process_successors
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:6395
0x64ad85 code_motion_path_driver
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:6617
0xc59886 code_motion_process_successors
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:6351
0xc59886 code_motion_path_driver
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:6617
0xc59886 code_motion_process_successors
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:6351
0xc59886 code_motion_path_driver
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:6617
0xc5aa5a find_used_regs
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:3283
0xc5aa5a collect_unavailable_regs_from_bnds
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:1598
0xc5aa5a find_best_reg_for_expr
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:1661
0xc5aa5a fill_vec_av_set
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:3797
0xc5da87 fill_ready_list
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:4027
0xc5da87 find_best_expr
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:4387
0xc5da87 fill_insns
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:5544
0xc5da87 schedule_on_fences
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:7361
0xc5da87 sel_sched_region_2
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:7499
0xc61737 sel_sched_region_1
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:7541
0xc61737 sel_sched_region(int)
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:7642
0xc627a8 run_selective_scheduling()
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sel-sched.c:7718
0xc42625 rest_of_handle_sched2
   
/var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/sched-rgn.c:3729

(as of r256677)

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-15 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #10 from Arseny Solokha  ---
(In reply to Jakub Jelinek from comment #9)
> Seems this doesn't ICE starting with r248863, so it likely just went latent.

I've seen ICEs in code_motion_process_successors() or bb_note() recently, will
try to bring one soon.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #9 from Jakub Jelinek  ---
Seems this doesn't ICE starting with r248863, so it likely just went latent.
Maybe we should just error out on selective scheduling and explicit
-fvar-tracking-assignments or -gstatement-frontiers, this scheduler really
can't handle any debug insns well.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2018-01-14 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

Arseny Solokha  changed:

   What|Removed |Added

 CC||asolokha at gmx dot com

--- Comment #8 from Arseny Solokha  ---
I cannot reproduce it anymore w/ r256677.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2017-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

Jakub Jelinek  changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek  ---
CCing Honza.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2017-12-01 Thread abel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #6 from Andrey Belevantsev  ---
(In reply to Jakub Jelinek from comment #5)
> Any progress with this?

I can make a patch for the dependency problem.  I'm not sure what happened to
the hot/cold block partitioning verification code -- I've heard Honza was going
to remove it (or I have misinterpreted what Alex told me).  It is unrelated to
the dependence issue but is serious enough -- it's didn't allow me to test with
sel-sched enabled at the time.

[Bug rtl-optimization/80463] [6/7/8 Regression] ICE with -fselective-scheduling2 and -fvar-tracking-assignments

2017-12-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80463

--- Comment #5 from Jakub Jelinek  ---
Any progress with this?