This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ada bootstrap fails on CVS mainline


> Graham Stott wrote:
> >Graham Stott wrote:
> >
> >>Andreas,
> >>
> >>I did a i686-linux-gnu-pc bootstrap last night from a ~18:00pm cvs 
> >>checkout which went
> >>through with no problems, including Ada.
> >>
> >>So it might be something that went in after that.
> >>
> >>I'll be updating again soon and do another bootstrap.
> >>
> >>Graham
> >>
> >>
> >
> >After today's update I get the same  bootstrap failure :-(
> >
> >I suspect it's due to this patch
> >
> >------------------------------------------------------------------
> >Sat Oct 26 01:44:46 CEST 2002  Jan Hubicka  <jh@suse.cz>
> >
> >        * toplev.c (dump_file_index): Add DFI_ce3.
> >        (dump_file_info): Likewise.
> >        (rest_of_compilation): Run first ifcvt pass before tracer.
> >------------------------------------------------------------------
> >
> >I'm going to revert it in my tree and see if the failure goes away.
> >
> >Graham
> >
> >
> 
> Yep reverting Jan's patch gets me back to bootstrap land again.
Hi,
I've sent a patch, but I won't be able to do ADA bootstrap before monday
most probably.  If you can do, could you please check the attached one?
I am still bootstrapping it, but it has fixed the other failures my
patch has caused.

Hi,
the problem has been uncovered latent bug - we didn't run reg-scan pass in all
ocasions when cse2 has been disabled but used the info in final pass by
enabling alias analysis.  I am just testing the attached patch that makes the
ifcvt1 pass to finish with reg_scan data valid and all the subsequent passes to
update it as needed.

I've verified it to test the testcase, bootstrap in progress.  OK if it passes?
Sun Oct 27 00:20:08 CEST 2002  Jan Hubicka  <jh@suse.cz>
	* toplev.c (rest_of_compilation): Reorganize way reg_scan is called
	before final pass.
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/toplev.c,v
retrieving revision 1.684
diff -c -3 -p -r1.684 toplev.c
*** toplev.c	25 Oct 2002 23:46:06 -0000	1.684
--- toplev.c	26 Oct 2002 22:19:53 -0000
*************** rest_of_compilation (decl)
*** 2987,3003 ****
        close_dump_file (DFI_bp, print_rtl_with_bb, insns);
        timevar_pop (TV_BRANCH_PROB);
      }
!   if (flag_if_conversion)
      {
-       timevar_push (TV_IFCVT);
-       if (rtl_dump_file)
- 	dump_flow_info (rtl_dump_file);
        open_dump_file (DFI_ce1, decl);
        cleanup_cfg (CLEANUP_EXPENSIVE);
        reg_scan (insns, max_reg_num (), 0);
!       if_convert (0);
        close_dump_file (DFI_ce1, print_rtl_with_bb, get_insns ());
-       timevar_pop (TV_IFCVT);
      }
    if (flag_tracer)
      {
--- 2987,3010 ----
        close_dump_file (DFI_bp, print_rtl_with_bb, insns);
        timevar_pop (TV_BRANCH_PROB);
      }
!   if (optimize >= 0)
      {
        open_dump_file (DFI_ce1, decl);
+       if (flag_if_conversion)
+ 	{
+ 	  timevar_push (TV_IFCVT);
+ 	  if (rtl_dump_file)
+ 	    dump_flow_info (rtl_dump_file);
+ 	  cleanup_cfg (CLEANUP_EXPENSIVE);
+ 	  reg_scan (insns, max_reg_num (), 0);
+ 	  if_convert (0);
+ 	  timevar_pop (TV_IFCVT);
+ 	}
+       timevar_push (TV_JUMP);
        cleanup_cfg (CLEANUP_EXPENSIVE);
        reg_scan (insns, max_reg_num (), 0);
!       timevar_pop (TV_JUMP);
        close_dump_file (DFI_ce1, print_rtl_with_bb, get_insns ());
      }
    if (flag_tracer)
      {
*************** rest_of_compilation (decl)
*** 3005,3051 ****
        open_dump_file (DFI_tracer, decl);
        if (rtl_dump_file)
  	dump_flow_info (rtl_dump_file);
-       cleanup_cfg (CLEANUP_EXPENSIVE);
        tracer ();
        cleanup_cfg (CLEANUP_EXPENSIVE);
        close_dump_file (DFI_tracer, print_rtl_with_bb, get_insns ());
        timevar_pop (TV_TRACER);
-       reg_scan (get_insns (), max_reg_num (), 0);
      }
  
!   if (optimize > 0)
      {
        timevar_push (TV_CSE2);
        open_dump_file (DFI_cse2, decl);
        if (rtl_dump_file)
  	dump_flow_info (rtl_dump_file);
  
!       if (flag_rerun_cse_after_loop)
  	{
  	  timevar_push (TV_JUMP);
! 	  reg_scan (insns, max_reg_num (), 0);
! 	  timevar_pop (TV_JUMP);
! 
  	  cleanup_cfg (CLEANUP_EXPENSIVE);
! 	  /* CFG is no longer maintained up-to-date.  */
! 	  reg_scan (insns, max_reg_num (), 0);
! 	  tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file);
! 	  purge_all_dead_edges (0);
! 	  delete_trivially_dead_insns (insns, max_reg_num ());
! 
! 	  if (tem)
! 	    {
! 	      timevar_push (TV_JUMP);
! 	      rebuild_jump_labels (insns);
! 	      cleanup_cfg (CLEANUP_EXPENSIVE);
! 	      timevar_pop (TV_JUMP);
! 	    }
  	}
! 
        close_dump_file (DFI_cse2, print_rtl_with_bb, insns);
-       timevar_pop (TV_CSE2);
- 
        ggc_collect ();
      }
  
    cse_not_expected = 1;
--- 3012,3046 ----
        open_dump_file (DFI_tracer, decl);
        if (rtl_dump_file)
  	dump_flow_info (rtl_dump_file);
        tracer ();
        cleanup_cfg (CLEANUP_EXPENSIVE);
+       reg_scan (insns, max_reg_num (), 0);
        close_dump_file (DFI_tracer, print_rtl_with_bb, get_insns ());
        timevar_pop (TV_TRACER);
      }
  
!   if (flag_rerun_cse_after_loop)
      {
        timevar_push (TV_CSE2);
        open_dump_file (DFI_cse2, decl);
        if (rtl_dump_file)
  	dump_flow_info (rtl_dump_file);
+       /* CFG is no longer maintained up-to-date.  */
+       tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file);
+       purge_all_dead_edges (0);
+       delete_trivially_dead_insns (insns, max_reg_num ());
  
!       if (tem)
  	{
  	  timevar_push (TV_JUMP);
! 	  rebuild_jump_labels (insns);
  	  cleanup_cfg (CLEANUP_EXPENSIVE);
! 	  timevar_pop (TV_JUMP);
  	}
!       reg_scan (insns, max_reg_num (), 0);
        close_dump_file (DFI_cse2, print_rtl_with_bb, insns);
        ggc_collect ();
+       timevar_pop (TV_CSE2);
      }
  
    cse_not_expected = 1;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]