[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added CC||pinskia at gcc dot gnu dot ||org Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355
[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
--- Comment #1 from zadeck at naturalbridge dot com 2007-06-17 20:13 --- Subject: Re: [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924 There are possibly two problems here. Fixing the first one fixes this ice. The first problem is that after a call to cse_main, a call to df_finish_pass is needed to get out of deferred rescanning mode and get everything up to date. The possible second problem is that something in one of delete_trivially_dead_insns rebuild_jump_labels cleanup_cfg may not work in deferred rescanning mode. This will wait for another bug report. It is too hard to debug this without first cleaning up what cse_main did and that makes the bug go away. ok to commit? Kenny 2007-06-17 Kenneth Zadeck <[EMAIL PROTECTED]> PR middle-end/32355 * gcse (rest_of_handle_gcse): Add call to df_finish_pass after cse_main. * df-problems.c (df_note_bb_compute): Fix dumping info. 2007-06-17 Kenneth Zadeck <[EMAIL PROTECTED]> * gcc.c-torture/compile/pr32355.c: New testcase. Index: testsuite/gcc.c-torture/compile/pr32355.c === --- testsuite/gcc.c-torture/compile/pr32355.c (revision 0) +++ testsuite/gcc.c-torture/compile/pr32355.c (revision 0) @@ -0,0 +1,33 @@ +/* { dg-options "-O3" } */ + +typedef struct +{ +} +__sigset_t; +typedef struct +{ +char coredump; +} +EMode; +extern EMode Mode; +struct sigaction +{ + __sigset_t sa_mask; + int sa_flags; +}; +doSignalsSetup (void) +{ + static const int signals[] = { +1, 2 , 3, 4, 6, 8, 11, 13, 14, 15, 10, 12, 17, 7 + }; + unsigned int i, sig; + struct sigaction sa; + for (i = 0; i < sizeof (signals) / sizeof (int); i++) +{ + sig = signals[i]; + if (Mode.coredump && (sig == 4 || sig == 8)) +continue; + sa.sa_flags = (sig == 17); + sigemptyset (&sa.sa_mask); +} +} Index: gcse.c === --- gcse.c (revision 125777) +++ gcse.c (working copy) @@ -6704,6 +6704,7 @@ rest_of_handle_gcse (void) { timevar_push (TV_CSE); tem2 = cse_main (get_insns (), max_reg_num ()); + df_finish_pass (); purge_all_dead_edges (); delete_trivially_dead_insns (get_insns (), max_reg_num ()); timevar_pop (TV_CSE); Index: df-problems.c === --- df-problems.c (revision 125777) +++ df-problems.c (working copy) @@ -3867,8 +3867,10 @@ df_note_bb_compute (unsigned int bb_inde for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++) { struct df_ref *def = *def_rec; +#ifdef REG_DEAD_DEBUGGING if (dump_file) fprintf (dump_file, "artificial def %d\n", DF_REF_REGNO (def)); +#endif if ((DF_REF_FLAGS (def) & DF_REF_AT_TOP) == 0) bitmap_clear_bit (live, DF_REF_REGNO (def)); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355
[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
--- Comment #2 from paolo dot bonzini at lu dot unisi dot ch 2007-06-18 04:41 --- Subject: Re: [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924 > The possible second problem is that something in one of > > delete_trivially_dead_insns > rebuild_jump_labels > cleanup_cfg > > may not work in deferred rescanning mode. This will wait for another > bug report. ok, but please file in this report yourself and assign it to me. Paolo -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355
[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
--- Comment #3 from zadeck at gcc dot gnu dot org 2007-06-18 16:47 --- Subject: Bug 32355 Author: zadeck Date: Mon Jun 18 16:47:05 2007 New Revision: 125812 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=125812 Log: 2007-06-18 Kenneth Zadeck <[EMAIL PROTECTED]> PR middle-end/32355 * gcse (rest_of_handle_gcse): Add call to df_finish_pass after cse_main. * df-problems.c (df_note_bb_compute): Fix dumping info. 2007-06-18 Kenneth Zadeck <[EMAIL PROTECTED]> * gcc.c-torture/compile/pr32355.c: New testcase. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr32355.c Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c trunk/gcc/gcse.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355
[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
--- Comment #4 from zadeck at naturalbridge dot com 2007-06-18 16:48 --- Subject: Re: [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924 committed as revision 125812 zadeck at naturalbridge dot com wrote: > --- Comment #1 from zadeck at naturalbridge dot com 2007-06-17 20:13 > --- > Subject: Re: [4.3 Regression] ICE in df_lr_verify_transfer_functions, > at df-problems.c:1924 > > There are possibly two problems here. Fixing the first one fixes this ice. > > The first problem is that after a call to cse_main, a call to > df_finish_pass is needed to get out of deferred rescanning mode and get > everything up to date. > > The possible second problem is that something in one of > > delete_trivially_dead_insns > rebuild_jump_labels > cleanup_cfg > > may not work in deferred rescanning mode. This will wait for another > bug report. > It is too hard to debug this without first cleaning up what cse_main did > and that makes the bug go away. > > ok to commit? > > Kenny > > 2007-06-17 Kenneth Zadeck <[EMAIL PROTECTED]> > > PR middle-end/32355 > * gcse (rest_of_handle_gcse): Add call to df_finish_pass after > cse_main. > * df-problems.c (df_note_bb_compute): Fix dumping info. > > 2007-06-17 Kenneth Zadeck <[EMAIL PROTECTED]> > > * gcc.c-torture/compile/pr32355.c: New testcase. > > Index: testsuite/gcc.c-torture/compile/pr32355.c > === > --- testsuite/gcc.c-torture/compile/pr32355.c (revision 0) > +++ testsuite/gcc.c-torture/compile/pr32355.c (revision 0) > @@ -0,0 +1,33 @@ > +/* { dg-options "-O3" } */ > + > +typedef struct > +{ > +} > +__sigset_t; > +typedef struct > +{ > +char coredump; > +} > +EMode; > +extern EMode Mode; > +struct sigaction > +{ > + __sigset_t sa_mask; > + int sa_flags; > +}; > +doSignalsSetup (void) > +{ > + static const int signals[] = { > +1, 2 , 3, 4, 6, 8, 11, 13, 14, 15, 10, 12, 17, 7 > + }; > + unsigned int i, sig; > + struct sigaction sa; > + for (i = 0; i < sizeof (signals) / sizeof (int); i++) > +{ > + sig = signals[i]; > + if (Mode.coredump && (sig == 4 || sig == 8)) > +continue; > + sa.sa_flags = (sig == 17); > + sigemptyset (&sa.sa_mask); > +} > +} > Index: gcse.c > === > --- gcse.c (revision 125777) > +++ gcse.c (working copy) > @@ -6704,6 +6704,7 @@ rest_of_handle_gcse (void) > { >timevar_push (TV_CSE); >tem2 = cse_main (get_insns (), max_reg_num ()); > + df_finish_pass (); >purge_all_dead_edges (); >delete_trivially_dead_insns (get_insns (), max_reg_num ()); >timevar_pop (TV_CSE); > Index: df-problems.c > === > --- df-problems.c (revision 125777) > +++ df-problems.c (working copy) > @@ -3867,8 +3867,10 @@ df_note_bb_compute (unsigned int bb_inde >for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++) > { >struct df_ref *def = *def_rec; > +#ifdef REG_DEAD_DEBUGGING >if (dump_file) > fprintf (dump_file, "artificial def %d\n", DF_REF_REGNO (def)); > +#endif > >if ((DF_REF_FLAGS (def) & DF_REF_AT_TOP) == 0) > bitmap_clear_bit (live, DF_REF_REGNO (def)); > > > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355
[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
--- Comment #5 from zadeck at naturalbridge dot com 2007-06-18 16:50 --- fixed,revision 125812 -- zadeck at naturalbridge dot com changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355