public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: Hookize CFG debugging code
@ 2003-06-20 17:23 John David Anglin
  2003-06-20 17:38 ` Jan Hubicka
  0 siblings, 1 reply; 510+ messages in thread
From: John David Anglin @ 2003-06-20 17:23 UTC (permalink / raw)
  To: gcc-patches; +Cc: jh, rth

I have determined that this patch 

Sun Jun  8 15:52:17 CEST 2003  Jan Hubicka  <jh@suse.cz>

        * cfg.c (verify_flow_info): Move IL independent checks from cfgrtl here.
	(dump_bb): New based on old dump_bb in cfgrtl.c
	(debug_bb, debug_bb_n): Move the functions from cfgrtl.c here.
	* cfghooks.h (cfgh_verify_flow_info): Return status.
	* cfglayout.c (cfg_layout_finalize): Verify CFG correctness.
	* cfgrtl.c (debug_bb, debug_bb_n): Move to cfg.c
	(dump_bb): Remove generic parts.
	(rtl_verify_flow_info_1): Break out from rtl_verify_flow_info.
	(rtl_verify_flow_info): Only check things dependeing on linearized RTL.

either causes or exposes a problem in the CFG for
gcc.c-torture/compile/20030405-1.c on hppa-unknown-linux-gnu and
hppa2.0w-hp-hpux11*.  The test now fails on the trunk at -O2 and
above with the following messages:

/xxx/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20030405-1.c: In function `foo':
/xxx/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20030405-1.c:58: error: Wrong amount of branch edges after conditional jump 17
/xxx/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20030405-1.c:58: error: Wrong amount of branch edges after conditional jump 16
/xxx/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20030405-1.c:58: error: Wrong amount of branch edges after conditional jump 13
/xxx/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20030405-1.c:58: internal compiler error: verify_flow_info failed

The test was for PR optimization/10024.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

^ permalink raw reply	[flat|nested] 510+ messages in thread
* Hookize CFG debugging code
@ 2003-06-06 10:17 Jan Hubicka
  2003-06-08  4:24 ` Richard Henderson
  0 siblings, 1 reply; 510+ messages in thread
From: Jan Hubicka @ 2003-06-06 10:17 UTC (permalink / raw)
  To: gcc-patches, rth


Hi,
this patch reorganize CFG debugging code so more of it can be shared.  I broke
out generic bits out of verify_flow_info so they can be used at treessa level
as well as for cfglayout.

OK?
Honza
Fri Jun  6 12:09:44 CEST 2003  Jan Hubicka  <jh@suse.cz>
	* cfg.c (verify_flow_info): Move IL independent checks from cfgrtl here.
	(dump_bb): New based on old dump_bb in cfgrtl.c
	(debug_bb, debug_bb_n): Move the functions from cfgrtl.c here.
	* cfghooks.h (cfgh_verify_flow_info): Return status.
	* cfglayout.c (cfg_layout_finalize): Verify CFG correctness.
	* cfgrtl.c (debug_bb, debug_bb_n): Move to cfg.c
	(dump_bb): Remove generic parts.
	(rtl_verify_flow_info_1): Break out from rtl_verify_flow_info.
	(rtl_verify_flow_info): Only check things dependeing on linearized RTL.
Index: cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfg.c,v
retrieving revision 1.44
diff -c -3 -p -r1.44 cfg.c
*** cfg.c	6 Jun 2003 09:24:23 -0000	1.44
--- cfg.c	6 Jun 2003 10:09:20 -0000
*************** Software Foundation, 59 Temple Place - S
*** 39,44 ****
--- 39,48 ----
       - Allocation of AUX fields for basic blocks
  	 alloc_aux_for_blocks, free_aux_for_blocks, alloc_aux_for_block
       - clear_bb_flags
+      - Consistency checking
+ 	 verify_flow_info
+      - Dumping and debugging
+ 	 print_rtl_with_bb, dump_bb, debug_bb, debug_bb_n
   */
  \f
  #include "config.h"
*************** free_aux_for_edges ()
*** 830,838 ****
  }
  
  /* Verify the CFG consistency.  
!    ??? In the future move IL idepdendent checks here.  */
  void
  verify_flow_info ()
  {
!   cfg_hooks->cfgh_verify_flow_info ();
  }
--- 834,1026 ----
  }
  
  /* Verify the CFG consistency.  
!   
!    Currently it does following checks edge and basic block list correctness
!    and calls into IL dependent checking then.  */
  void
  verify_flow_info ()
  {
!   size_t *edge_checksum;
!   int num_bb_notes, err = 0;
!   basic_block bb, last_bb_seen;
!   basic_block *last_visited;
! 
!   last_visited = (basic_block *) xcalloc (last_basic_block + 2,
! 					  sizeof (basic_block));
!   edge_checksum = (size_t *) xcalloc (last_basic_block + 2, sizeof (size_t));
! 
!   /* Check bb chain & numbers.  */
!   last_bb_seen = ENTRY_BLOCK_PTR;
!   FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR->next_bb, NULL, next_bb)
!     {
!       if (bb != EXIT_BLOCK_PTR
! 	  && bb != BASIC_BLOCK (bb->index))
! 	{
! 	  error ("bb %d on wrong place", bb->index);
! 	  err = 1;
! 	}
! 
!       if (bb->prev_bb != last_bb_seen)
! 	{
! 	  error ("prev_bb of %d should be %d, not %d",
! 		 bb->index, last_bb_seen->index, bb->prev_bb->index);
! 	  err = 1;
! 	}
! 
!       last_bb_seen = bb;
!     }
! 
!   /* Now check the basic blocks (boundaries etc.) */
!   FOR_EACH_BB_REVERSE (bb)
!     {
!       int n_fallthru = 0, n_call = 0;
!       edge e;
! 
!       if (bb->count < 0)
! 	{
! 	  error ("verify_flow_info: Wrong count of block %i %i",
! 	         bb->index, (int)bb->count);
! 	  err = 1;
! 	}
!       if (bb->frequency < 0)
! 	{
! 	  error ("verify_flow_info: Wrong frequency of block %i %i",
! 	         bb->index, bb->frequency);
! 	  err = 1;
! 	}
!       for (e = bb->succ; e; e = e->succ_next)
! 	{
! 	  if (last_visited [e->dest->index + 2] == bb)
! 	    {
! 	      error ("verify_flow_info: Duplicate edge %i->%i",
! 		     e->src->index, e->dest->index);
! 	      err = 1;
! 	    }
! 	  if (e->probability < 0 || e->probability > REG_BR_PROB_BASE)
! 	    {
! 	      error ("verify_flow_info: Wrong probability of edge %i->%i %i",
! 		     e->src->index, e->dest->index, e->probability);
! 	      err = 1;
! 	    }
! 	  if (e->count < 0)
! 	    {
! 	      error ("verify_flow_info: Wrong count of edge %i->%i %i",
! 		     e->src->index, e->dest->index, (int)e->count);
! 	      err = 1;
! 	    }
! 
! 	  last_visited [e->dest->index + 2] = bb;
! 
! 	  if (e->flags & EDGE_FALLTHRU)
! 	    n_fallthru++;
! 
! 	  if (e->flags & EDGE_ABNORMAL_CALL)
! 	    n_call++;
! 
! 	  if (e->src != bb)
! 	    {
! 	      error ("verify_flow_info: Basic block %d succ edge is corrupted",
! 		     bb->index);
! 	      fprintf (stderr, "Predecessor: ");
! 	      dump_edge_info (stderr, e, 0);
! 	      fprintf (stderr, "\nSuccessor: ");
! 	      dump_edge_info (stderr, e, 1);
! 	      fprintf (stderr, "\n");
! 	      err = 1;
! 	    }
! 
! 	  edge_checksum[e->dest->index + 2] += (size_t) e;
! 	}
!       if (n_fallthru > 1)
! 	{
! 	  error ("Wrong amount of branch edges after unconditional jump %i", bb->index);
! 	  err = 1;
! 	}
!       if (n_call > 1)
! 	{
! 	  error ("Wrong amount of call edges after unconditional jump %i", bb->index);
! 	  err = 1;
! 	}
! 
!       for (e = bb->pred; e; e = e->pred_next)
! 	{
! 	  if (e->dest != bb)
! 	    {
! 	      error ("basic block %d pred edge is corrupted", bb->index);
! 	      fputs ("Predecessor: ", stderr);
! 	      dump_edge_info (stderr, e, 0);
! 	      fputs ("\nSuccessor: ", stderr);
! 	      dump_edge_info (stderr, e, 1);
! 	      fputc ('\n', stderr);
! 	      err = 1;
! 	    }
! 	  edge_checksum[e->dest->index + 2] -= (size_t) e;
! 	}
!     }
! 
!   /* Complete edge checksumming for ENTRY and EXIT.  */
!   {
!     edge e;
! 
!     for (e = ENTRY_BLOCK_PTR->succ; e ; e = e->succ_next)
!       edge_checksum[e->dest->index + 2] += (size_t) e;
! 
!     for (e = EXIT_BLOCK_PTR->pred; e ; e = e->pred_next)
!       edge_checksum[e->dest->index + 2] -= (size_t) e;
!   }
! 
!   FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
!     if (edge_checksum[bb->index + 2])
!       {
! 	error ("basic block %i edge lists are corrupted", bb->index);
! 	err = 1;
!       }
! 
!   num_bb_notes = 0;
!   last_bb_seen = ENTRY_BLOCK_PTR;
! 
!   /* Clean up.  */
!   free (last_visited);
!   free (edge_checksum);
!   err |= cfg_hooks->cfgh_verify_flow_info ();
!   if (err)
!     internal_error ("verify_flow_info failed");
! }
! 
! /* Print out one basic block with live information at start and end.  */
! 
! void
! dump_bb (bb, outf)
!      basic_block bb;
!      FILE *outf;
! {
!   edge e;
! 
!   fprintf (outf, ";; Basic block %d, loop depth %d, count ",
! 	   bb->index, bb->loop_depth);
!   fprintf (outf, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) bb->count);
!   putc ('\n', outf);
! 
!   cfg_hooks->dump_bb (bb, outf);
! 
!   fputs (";; Successors: ", outf);
!   for (e = bb->succ; e; e = e->succ_next)
!     dump_edge_info (outf, e, 1);
!   putc ('\n', outf);
! }
! 
! void
! debug_bb (bb)
!      basic_block bb;
! {
!   dump_bb (bb, stderr);
! }
! 
! basic_block
! debug_bb_n (n)
!      int n;
! {
!   basic_block bb = BASIC_BLOCK (n);
!   dump_bb (bb, stderr);
!   return bb;
  }
Index: cfghooks.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfghooks.h,v
retrieving revision 1.2
diff -c -3 -p -r1.2 cfghooks.h
*** cfghooks.h	6 Jun 2003 09:24:24 -0000	1.2
--- cfghooks.h	6 Jun 2003 10:09:20 -0000
*************** struct cfg_hooks
*** 26,32 ****
  {
    /* Debugging.  Do not use macros to hook these so they can be called from
       debugger!  */
!   void (*cfgh_verify_flow_info)	        PARAMS ((void));
  
    /* Basic CFG manipulation.  */
  
--- 26,33 ----
  {
    /* Debugging.  Do not use macros to hook these so they can be called from
       debugger!  */
!   int (*cfgh_verify_flow_info)	        PARAMS ((void));
!   void (*dump_bb)			PARAMS ((basic_block, FILE *));
  
    /* Basic CFG manipulation.  */
  
Index: cfglayout.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfglayout.c,v
retrieving revision 1.33
diff -c -3 -p -r1.33 cfglayout.c
*** cfglayout.c	6 Jun 2003 09:24:24 -0000	1.33
--- cfglayout.c	6 Jun 2003 10:09:20 -0000
*************** break_superblocks ()
*** 1032,1037 ****
--- 1032,1040 ----
  void
  cfg_layout_finalize ()
  {
+ #ifdef ENABLE_CHECKING
+   verify_flow_info ();
+ #endif
    rtl_register_cfg_hooks ();
    fixup_fallthru_exit_predecessor ();
    fixup_reorder_chain ();
Index: cfgrtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgrtl.c,v
retrieving revision 1.77
diff -c -3 -p -r1.77 cfgrtl.c
*** cfgrtl.c	6 Jun 2003 09:24:25 -0000	1.77
--- cfgrtl.c	6 Jun 2003 10:09:20 -0000
*************** Software Foundation, 59 Temple Place - S
*** 35,44 ****
  	 redirect_edge_and_branch_force, tidy_fallthru_edge, force_nonfallthru
       - Edge splitting and committing to edges
  	 split_edge, insert_insn_on_edge, commit_edge_insertions
-      - Dumping and debugging
- 	 print_rtl_with_bb, dump_bb, debug_bb, debug_bb_n
-      - Consistency checking
- 	 verify_flow_info
       - CFG updating after constant propagation
  	 purge_dead_edges, purge_all_dead_edges   */
  \f
--- 35,40 ----
*************** static rtx last_loop_beg_note		PARAMS ((
*** 81,87 ****
  static bool back_edge_of_syntactic_loop_p PARAMS ((basic_block, basic_block));
  basic_block force_nonfallthru_and_redirect PARAMS ((edge, basic_block));
  static basic_block rtl_split_edge	PARAMS ((edge));
! static void rtl_verify_flow_info	PARAMS ((void));
  static edge cfg_layout_split_block	PARAMS ((basic_block, void *));
  static bool cfg_layout_redirect_edge_and_branch	PARAMS ((edge, basic_block));
  static basic_block cfg_layout_redirect_edge_and_branch_force PARAMS ((edge, basic_block));
--- 77,83 ----
  static bool back_edge_of_syntactic_loop_p PARAMS ((basic_block, basic_block));
  basic_block force_nonfallthru_and_redirect PARAMS ((edge, basic_block));
  static basic_block rtl_split_edge	PARAMS ((edge));
! static int rtl_verify_flow_info		PARAMS ((void));
  static edge cfg_layout_split_block	PARAMS ((basic_block, void *));
  static bool cfg_layout_redirect_edge_and_branch	PARAMS ((edge, basic_block));
  static basic_block cfg_layout_redirect_edge_and_branch_force PARAMS ((edge, basic_block));
*************** static void rtl_delete_block		PARAMS ((b
*** 90,95 ****
--- 86,93 ----
  static basic_block rtl_redirect_edge_and_branch_force PARAMS ((edge, basic_block));
  static bool rtl_redirect_edge_and_branch PARAMS ((edge, basic_block));
  static edge rtl_split_block		PARAMS ((basic_block, void *));
+ static void rtl_dump_bb			PARAMS ((basic_block, FILE *));
+ static int rtl_verify_flow_info_1	PARAMS ((void));
  \f
  /* Return true if NOTE is not one of the ones that must be kept paired,
     so that we may simply delete it.  */
*************** commit_edge_insertions_watch_calls ()
*** 1570,1593 ****
  \f
  /* Print out one basic block with live information at start and end.  */
  
! void
! dump_bb (bb, outf)
       basic_block bb;
       FILE *outf;
  {
    rtx insn;
    rtx last;
-   edge e;
- 
-   fprintf (outf, ";; Basic block %d, loop depth %d, count ",
- 	   bb->index, bb->loop_depth);
-   fprintf (outf, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) bb->count);
-   putc ('\n', outf);
- 
-   fputs (";; Predecessors: ", outf);
-   for (e = bb->pred; e; e = e->pred_next)
-     dump_edge_info (outf, e, 0);
-   putc ('\n', outf);
  
    fputs (";; Registers live at start:", outf);
    dump_regset (bb->global_live_at_start, outf);
--- 1568,1580 ----
  \f
  /* Print out one basic block with live information at start and end.  */
  
! static void
! rtl_dump_bb (bb, outf)
       basic_block bb;
       FILE *outf;
  {
    rtx insn;
    rtx last;
  
    fputs (";; Registers live at start:", outf);
    dump_regset (bb->global_live_at_start, outf);
*************** dump_bb (bb, outf)
*** 1600,1626 ****
    fputs (";; Registers live at end:", outf);
    dump_regset (bb->global_live_at_end, outf);
    putc ('\n', outf);
- 
-   fputs (";; Successors: ", outf);
-   for (e = bb->succ; e; e = e->succ_next)
-     dump_edge_info (outf, e, 1);
-   putc ('\n', outf);
- }
- 
- void
- debug_bb (bb)
-      basic_block bb;
- {
-   dump_bb (bb, stderr);
- }
- 
- basic_block
- debug_bb_n (n)
-      int n;
- {
-   basic_block bb = BASIC_BLOCK (n);
-   dump_bb (bb, stderr);
-   return bb;
  }
  \f
  /* Like print_rtl, but also print out live information for the start of each
--- 1587,1592 ----
*************** update_br_prob_note (bb)
*** 1727,1789 ****
    XEXP (note, 0) = GEN_INT (BRANCH_EDGE (bb)->probability);
  }
  \f
! /* Verify the CFG consistency.  This function check some CFG invariants and
!    aborts when something is wrong.  Hope that this function will help to
!    convert many optimization passes to preserve CFG consistent.
  
     Currently it does following checks:
  
     - test head/end pointers
     - overlapping of basic blocks
-    - edge list correctness
     - headers of basic blocks (the NOTE_INSN_BASIC_BLOCK note)
     - tails of basic blocks (ensure that boundary is necessary)
     - scans body of the basic block for JUMP_INSN, CODE_LABEL
       and NOTE_INSN_BASIC_BLOCK
-    - check that all insns are in the basic blocks
-      (except the switch handling code, barriers and notes)
-    - check that all returns are followed by barriers
  
     In future it can be extended check a lot of other stuff as well
     (reachability of basic blocks, life information, etc. etc.).  */
! 
! void
! rtl_verify_flow_info ()
  {
    const int max_uid = get_max_uid ();
-   const rtx rtx_first = get_insns ();
    rtx last_head = get_last_insn ();
!   basic_block *bb_info, *last_visited;
!   size_t *edge_checksum;
    rtx x;
!   int num_bb_notes, err = 0;
    basic_block bb, last_bb_seen;
  
    bb_info = (basic_block *) xcalloc (max_uid, sizeof (basic_block));
-   last_visited = (basic_block *) xcalloc (last_basic_block + 2,
- 					  sizeof (basic_block));
-   edge_checksum = (size_t *) xcalloc (last_basic_block + 2, sizeof (size_t));
  
    /* Check bb chain & numbers.  */
    last_bb_seen = ENTRY_BLOCK_PTR;
-   FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR->next_bb, NULL, next_bb)
-     {
-       if (bb != EXIT_BLOCK_PTR
- 	  && bb != BASIC_BLOCK (bb->index))
- 	{
- 	  error ("bb %d on wrong place", bb->index);
- 	  err = 1;
- 	}
- 
-       if (bb->prev_bb != last_bb_seen)
- 	{
- 	  error ("prev_bb of %d should be %d, not %d",
- 		 bb->index, last_bb_seen->index, bb->prev_bb->index);
- 	  err = 1;
- 	}
- 
-       last_bb_seen = bb;
-     }
  
    FOR_EACH_BB_REVERSE (bb)
      {
--- 1693,1726 ----
    XEXP (note, 0) = GEN_INT (BRANCH_EDGE (bb)->probability);
  }
  \f
! /* Verify the CFG and RTL consistency common for both underlying RTL and
!    cfglayout RTL.
  
     Currently it does following checks:
  
     - test head/end pointers
     - overlapping of basic blocks
     - headers of basic blocks (the NOTE_INSN_BASIC_BLOCK note)
     - tails of basic blocks (ensure that boundary is necessary)
     - scans body of the basic block for JUMP_INSN, CODE_LABEL
       and NOTE_INSN_BASIC_BLOCK
  
     In future it can be extended check a lot of other stuff as well
     (reachability of basic blocks, life information, etc. etc.).  */
! static int
! rtl_verify_flow_info_1 ()
  {
    const int max_uid = get_max_uid ();
    rtx last_head = get_last_insn ();
!   basic_block *bb_info;
    rtx x;
!   int err = 0;
    basic_block bb, last_bb_seen;
  
    bb_info = (basic_block *) xcalloc (max_uid, sizeof (basic_block));
  
    /* Check bb chain & numbers.  */
    last_bb_seen = ENTRY_BLOCK_PTR;
  
    FOR_EACH_BB_REVERSE (bb)
      {
*************** rtl_verify_flow_info ()
*** 1850,1890 ****
  	      err = 1;
  	    }
  	}
-       if (bb->count < 0)
- 	{
- 	  error ("verify_flow_info: Wrong count of block %i %i",
- 	         bb->index, (int)bb->count);
- 	  err = 1;
- 	}
-       if (bb->frequency < 0)
- 	{
- 	  error ("verify_flow_info: Wrong frequency of block %i %i",
- 	         bb->index, bb->frequency);
- 	  err = 1;
- 	}
        for (e = bb->succ; e; e = e->succ_next)
  	{
- 	  if (last_visited [e->dest->index + 2] == bb)
- 	    {
- 	      error ("verify_flow_info: Duplicate edge %i->%i",
- 		     e->src->index, e->dest->index);
- 	      err = 1;
- 	    }
- 	  if (e->probability < 0 || e->probability > REG_BR_PROB_BASE)
- 	    {
- 	      error ("verify_flow_info: Wrong probability of edge %i->%i %i",
- 		     e->src->index, e->dest->index, e->probability);
- 	      err = 1;
- 	    }
- 	  if (e->count < 0)
- 	    {
- 	      error ("verify_flow_info: Wrong count of edge %i->%i %i",
- 		     e->src->index, e->dest->index, (int)e->count);
- 	      err = 1;
- 	    }
- 
- 	  last_visited [e->dest->index + 2] = bb;
- 
  	  if (e->flags & EDGE_FALLTHRU)
  	    n_fallthru++;
  
--- 1787,1794 ----
*************** rtl_verify_flow_info ()
*** 1898,1948 ****
  	    n_eh++;
  	  else if (e->flags & EDGE_ABNORMAL)
  	    n_abnormal++;
- 
- 	  if ((e->flags & EDGE_FALLTHRU)
- 	      && e->src != ENTRY_BLOCK_PTR
- 	      && e->dest != EXIT_BLOCK_PTR)
- 	    {
- 	      rtx insn;
- 
- 	      if (e->src->next_bb != e->dest)
- 		{
- 		  error
- 		    ("verify_flow_info: Incorrect blocks for fallthru %i->%i",
- 		     e->src->index, e->dest->index);
- 		  err = 1;
- 		}
- 	      else
- 		for (insn = NEXT_INSN (e->src->end); insn != e->dest->head;
- 		     insn = NEXT_INSN (insn))
- 		  if (GET_CODE (insn) == BARRIER
- #ifndef CASE_DROPS_THROUGH
- 		      || INSN_P (insn)
- #else
- 		      || (INSN_P (insn) && ! JUMP_TABLE_DATA_P (insn))
- #endif
- 		      )
- 		    {
- 		      error ("verify_flow_info: Incorrect fallthru %i->%i",
- 			     e->src->index, e->dest->index);
- 		      fatal_insn ("wrong insn in the fallthru edge", insn);
- 		      err = 1;
- 		    }
- 	    }
- 
- 	  if (e->src != bb)
- 	    {
- 	      error ("verify_flow_info: Basic block %d succ edge is corrupted",
- 		     bb->index);
- 	      fprintf (stderr, "Predecessor: ");
- 	      dump_edge_info (stderr, e, 0);
- 	      fprintf (stderr, "\nSuccessor: ");
- 	      dump_edge_info (stderr, e, 1);
- 	      fprintf (stderr, "\n");
- 	      err = 1;
- 	    }
- 
- 	  edge_checksum[e->dest->index + 2] += (size_t) e;
  	}
  
        if (n_eh && GET_CODE (PATTERN (bb->end)) != RESX
--- 1802,1807 ----
*************** rtl_verify_flow_info ()
*** 1990,2027 ****
  	  err = 1;
  	}
  
-       if (!n_fallthru)
- 	{
- 	  rtx insn;
- 
- 	  /* Ensure existence of barrier in BB with no fallthru edges.  */
- 	  for (insn = bb->end; !insn || GET_CODE (insn) != BARRIER;
- 	       insn = NEXT_INSN (insn))
- 	    if (!insn
- 		|| (GET_CODE (insn) == NOTE
- 		    && NOTE_LINE_NUMBER (insn) == NOTE_INSN_BASIC_BLOCK))
- 		{
- 		  error ("missing barrier after block %i", bb->index);
- 		  err = 1;
- 		  break;
- 		}
- 	}
- 
-       for (e = bb->pred; e; e = e->pred_next)
- 	{
- 	  if (e->dest != bb)
- 	    {
- 	      error ("basic block %d pred edge is corrupted", bb->index);
- 	      fputs ("Predecessor: ", stderr);
- 	      dump_edge_info (stderr, e, 0);
- 	      fputs ("\nSuccessor: ", stderr);
- 	      dump_edge_info (stderr, e, 1);
- 	      fputc ('\n', stderr);
- 	      err = 1;
- 	    }
- 	  edge_checksum[e->dest->index + 2] -= (size_t) e;
- 	}
- 
        for (x = bb->head; x != NEXT_INSN (bb->end); x = NEXT_INSN (x))
  	if (BLOCK_FOR_INSN (x) != bb)
  	  {
--- 1849,1854 ----
*************** rtl_verify_flow_info ()
*** 2085,2107 ****
  	  }
      }
  
!   /* Complete edge checksumming for ENTRY and EXIT.  */
!   {
!     edge e;
! 
!     for (e = ENTRY_BLOCK_PTR->succ; e ; e = e->succ_next)
!       edge_checksum[e->dest->index + 2] += (size_t) e;
! 
!     for (e = EXIT_BLOCK_PTR->pred; e ; e = e->pred_next)
!       edge_checksum[e->dest->index + 2] -= (size_t) e;
!   }
  
!   FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
!     if (edge_checksum[bb->index + 2])
!       {
! 	error ("basic block %i edge lists are corrupted", bb->index);
! 	err = 1;
!       }
  
    num_bb_notes = 0;
    last_bb_seen = ENTRY_BLOCK_PTR;
--- 1912,1993 ----
  	  }
      }
  
!   /* Clean up.  */
!   free (bb_info);
!   return err;
! }
  
! /* Verify the CFG and RTL consistency common for both underlying RTL and
!    cfglayout RTL.
! 
!    Currently it does following checks:
!    - all checks of rtl_verify_flow_info_1
!    - check that all insns are in the basic blocks
!      (except the switch handling code, barriers and notes)
!    - check that all returns are followed by barriers
!    - check that all fallthru edge points to the adjacent blocks.  */
! static int
! rtl_verify_flow_info ()
! {
!   basic_block bb;
!   int err = rtl_verify_flow_info_1 ();
!   rtx x;
!   int num_bb_notes;
!   const rtx rtx_first = get_insns ();
!   basic_block last_bb_seen = ENTRY_BLOCK_PTR, curr_bb = NULL;
! 
!   FOR_EACH_BB_REVERSE (bb)
!     {
!       edge e;
!       for (e = bb->succ; e; e = e->succ_next)
! 	if (e->flags & EDGE_FALLTHRU)
! 	  break;
!       if (!e)
! 	{
! 	  rtx insn;
! 
! 	  /* Ensure existence of barrier in BB with no fallthru edges.  */
! 	  for (insn = bb->end; !insn || GET_CODE (insn) != BARRIER;
! 	       insn = NEXT_INSN (insn))
! 	    if (!insn
! 		|| (GET_CODE (insn) == NOTE
! 		    && NOTE_LINE_NUMBER (insn) == NOTE_INSN_BASIC_BLOCK))
! 		{
! 		  error ("missing barrier after block %i", bb->index);
! 		  err = 1;
! 		  break;
! 		}
! 	}
!       else if (e->src != ENTRY_BLOCK_PTR
! 	       && e->dest != EXIT_BLOCK_PTR)
!         {
! 	  rtx insn;
! 
! 	  if (e->src->next_bb != e->dest)
! 	    {
! 	      error
! 		("verify_flow_info: Incorrect blocks for fallthru %i->%i",
! 		 e->src->index, e->dest->index);
! 	      err = 1;
! 	    }
! 	  else
! 	    for (insn = NEXT_INSN (e->src->end); insn != e->dest->head;
! 		 insn = NEXT_INSN (insn))
! 	      if (GET_CODE (insn) == BARRIER
! #ifndef CASE_DROPS_THROUGH
! 		  || INSN_P (insn)
! #else
! 		  || (INSN_P (insn) && ! JUMP_TABLE_DATA_P (insn))
! #endif
! 		  )
! 		{
! 		  error ("verify_flow_info: Incorrect fallthru %i->%i",
! 			 e->src->index, e->dest->index);
! 		  fatal_insn ("wrong insn in the fallthru edge", insn);
! 		  err = 1;
! 		}
!         }
!     }
  
    num_bb_notes = 0;
    last_bb_seen = ENTRY_BLOCK_PTR;
*************** rtl_verify_flow_info ()
*** 2114,2125 ****
  
  	  num_bb_notes++;
  	  if (bb != last_bb_seen->next_bb)
! 	    internal_error ("basic blocks not numbered consecutively");
  
! 	  last_bb_seen = bb;
  	}
  
!       if (!bb_info[INSN_UID (x)])
  	{
  	  switch (GET_CODE (x))
  	    {
--- 2000,2011 ----
  
  	  num_bb_notes++;
  	  if (bb != last_bb_seen->next_bb)
! 	    internal_error ("basic blocks not laid down consecutively");
  
! 	  curr_bb = last_bb_seen = bb;
  	}
  
!       if (!curr_bb)
  	{
  	  switch (GET_CODE (x))
  	    {
*************** rtl_verify_flow_info ()
*** 2148,2153 ****
--- 2034,2041 ----
  	  && returnjump_p (x) && ! condjump_p (x)
  	  && ! (NEXT_INSN (x) && GET_CODE (NEXT_INSN (x)) == BARRIER))
  	    fatal_insn ("return not followed by barrier", x);
+       if (curr_bb && x == curr_bb->end)
+ 	curr_bb = NULL;
      }
  
    if (num_bb_notes != n_basic_blocks)
*************** rtl_verify_flow_info ()
*** 2155,2167 ****
        ("number of bb notes in insn chain (%d) != n_basic_blocks (%d)",
         num_bb_notes, n_basic_blocks);
  
!   if (err)
!     internal_error ("verify_flow_info failed");
! 
!   /* Clean up.  */
!   free (bb_info);
!   free (last_visited);
!   free (edge_checksum);
  }
  \f
  /* Assume that the preceding pass has possibly eliminated jump instructions
--- 2043,2049 ----
        ("number of bb notes in insn chain (%d) != n_basic_blocks (%d)",
         num_bb_notes, n_basic_blocks);
  
!    return err;
  }
  \f
  /* Assume that the preceding pass has possibly eliminated jump instructions
*************** cfg_layout_delete_block (bb)
*** 2519,2524 ****
--- 2401,2407 ----
  /* Implementation of CFG manipulation for linearized RTL.  */
  struct cfg_hooks rtl_cfg_hooks = {
    rtl_verify_flow_info,
+   rtl_dump_bb,
    rtl_redirect_edge_and_branch,
    rtl_redirect_edge_and_branch_force,
    rtl_delete_block,
*************** struct cfg_hooks rtl_cfg_hooks = {
*** 2531,2537 ****
     This representation will hopefully become the default one in future
     version of the compiler.  */
  struct cfg_hooks cfg_layout_rtl_cfg_hooks = {
!   NULL,   /* verify_flow_info.  */
    cfg_layout_redirect_edge_and_branch,
    cfg_layout_redirect_edge_and_branch_force,
    cfg_layout_delete_block,
--- 2414,2421 ----
     This representation will hopefully become the default one in future
     version of the compiler.  */
  struct cfg_hooks cfg_layout_rtl_cfg_hooks = {
!   rtl_verify_flow_info_1,   /* verify_flow_info.  */
!   rtl_dump_bb,
    cfg_layout_redirect_edge_and_branch,
    cfg_layout_redirect_edge_and_branch_force,
    cfg_layout_delete_block,

^ permalink raw reply	[flat|nested] 510+ messages in thread
[parent not found: <no.id@sources.redhat.com>]

end of thread, other threads:[~2010-03-27 21:48 UTC | newest]

Thread overview: 510+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <no.id>
1998-12-12 19:15 ` Problem with put_reg_into_stack H.J. Lu
1999-08-06 12:06 ` Internal compiler error in `emit_call_1' - vax-dec-ultrix4.3 John David Anglin
1999-08-25  0:38   ` Jeffrey A Law
1999-08-31 22:41     ` Jeffrey A Law
1999-08-31 22:41   ` John David Anglin
2000-04-28 13:32 ` g++-mike-eh8-C test failure John David Anglin
2000-04-28 15:41   ` John David Anglin
2000-04-30  8:47     ` John David Anglin
2000-05-02  9:30       ` Jeffrey A Law
2000-05-02 11:08         ` John David Anglin
2000-05-02 11:17           ` Jeffrey A Law
2000-05-02 13:02             ` John David Anglin
2000-05-02 18:44               ` Jason Merrill
2000-05-03 10:43                 ` John David Anglin
2000-05-03 15:49                   ` Jason Merrill
2000-05-03 17:27                     ` John David Anglin
2000-05-05 15:12                     ` John David Anglin
2000-05-08 11:10             ` John David Anglin
2000-05-18 11:19 ` VAX Ultrix bootstrap failure: Cannot allocate 4072 bytes John David Anglin
2000-05-18 15:48   ` Jeffrey A Law
2000-05-22  9:45 ` VAX Ultrix bootstrap failure: cc: -o would overwrite John David Anglin
2000-05-22 17:22 ` John David Anglin
2000-05-24 10:32 ` VAX Ultrix bootstrap failure with gcc-2.96 John David Anglin
2000-05-24 11:37   ` Zack Weinberg
2000-05-24 13:08     ` John David Anglin
2000-05-25 18:31       ` Zack Weinberg
2000-05-25 19:21         ` John David Anglin
2000-05-25 19:35           ` Zack Weinberg
2000-05-25 20:05             ` John David Anglin
2000-05-25 20:33               ` Zack Weinberg
2000-06-02 10:31             ` John David Anglin
2000-05-24 14:09     ` John David Anglin
2000-05-24 18:50       ` Jeffrey A Law
     [not found] ` <200005272138.RAA08789@hiauly1.hia.nrc.ca>
2000-05-27 20:19   ` VAX Ultrix bootstrap with gcc-2.96 20000519: genrecog failure Richard Henderson
2000-05-28 11:00     ` John David Anglin
2000-06-02 12:15 ` VAX Ultrix bootstrap failure with gcc-2.96 John David Anglin
2000-06-02 13:09   ` John David Anglin
2000-06-12  8:18 ` Evaluation order of &&s in ||, in macro INDEX_TERM_P, in vax.h John David Anglin
2000-06-13  8:55   ` Jeffrey A Law
2000-06-20  9:55 ` VAX Ultrix bootstrap failure with gcc-2.96 John David Anglin
2000-06-20 11:13   ` Bruce Korb
2000-06-29  9:50 ` collect2: ld terminated with signal 10 [Bus error] John David Anglin
2000-06-30 11:13   ` Jeffrey A Law
2000-08-30 18:03 ` Patches: Re: libio testsuite: timeout compiling tFile.cc John David Anglin
2000-09-01 13:29 ` Patch: Re: objc FAILs under hpux/-threads with gcc-2.96 CVS 20000816 John David Anglin
2000-09-01 22:22   ` Ovidiu Predescu
2000-09-05 11:25     ` Another patch: Re: objc FAILs under hpux/-threads with gcc-2.96 CVS John David Anglin
2000-09-06  0:01       ` Ovidiu Predescu
2000-09-08 10:29 ` Unsatisfied symbols: cpp_register_pragma (code), cpp_register_pragma_space (code) John David Anglin
2000-09-08 10:38   ` Zack Weinberg
2000-09-08 10:43     ` John David Anglin
2000-09-08 11:02       ` Zack Weinberg
2000-09-08 17:15 ` Segmentation fault building libg++ without named returns John David Anglin
2000-09-08 23:06   ` John David Anglin
2000-09-09  6:14     ` Manfred Hollstein
2000-09-09 15:06       ` John David Anglin
2000-09-10  2:55         ` Manfred Hollstein
2000-09-11 13:35           ` John David Anglin
2000-09-11 14:25 ` John David Anglin
2000-09-14  5:45   ` libg++-2.8.1.3-20000914.diff.gz (was: Re: Segmentation fault building libg++ without named returns) Manfred Hollstein
2000-09-21  9:50     ` John David Anglin
2000-09-22 11:06 ` Patch: Include WARN_CFLAGS in CFLAGS passed for building fixinc.sh John David Anglin
2000-09-29 11:12 ` PATCH: Re: libio compilation problem John David Anglin
2000-10-16 13:21 ` PATCH: Upgrade floating comparisons on PA to support unordered operands John David Anglin
2000-11-09  9:40 ` testcase for hppa64 gcc bug John David Anglin
2000-11-09 16:17   ` Alan Modra
2000-12-05 20:11   ` Jeffrey A Law
2000-12-05 20:15     ` John David Anglin
2000-12-05 21:28       ` Alan Modra
2001-01-31 17:17         ` Jeffrey A Law
2000-11-25 17:39 ` PATCH: Re: ../../../libio/stream.cc:60: Internal error: Segmentation fault John David Anglin
2000-11-25 17:40   ` John David Anglin
2000-11-29 21:48     ` Jeffrey A Law
2000-11-30 12:16 ` PATCH: HUGE_VAL should be Infinity John David Anglin
2000-12-03 21:14   ` Jeffrey A Law
2000-12-04 10:52     ` Michael Meissner
2000-12-04 11:25       ` John David Anglin
2000-12-04 11:35         ` Jeffrey A Law
2000-12-06 18:05         ` Jeffrey A Law
2000-12-18 14:18 ` Revised patch: Re: PATCH 1: Re: BOOTSTRAP FAILURE: segementation fault in genattrtab John David Anglin
2000-12-20 19:56 ` V3 PATCH: Some complex<> cleanup (1/2) Robert Lipe
2000-12-20 20:09   ` Benjamin Kosnik
2000-12-20 21:24     ` Robert Lipe
2000-12-20 21:59     ` Robert Lipe
2000-12-20 22:08       ` Benjamin Kosnik
2000-12-20 20:14   ` Gabriel Dos Reis
2000-12-28 22:29 ` problem with target builtin functions Herman ten Brugge
2001-01-14 14:39 ` PATCH: PIC_OFFSET_TABLE_REGNUM_SAVED should be call used when John David Anglin
2001-01-14 17:00   ` Alan Modra
2001-01-14 17:31     ` John David Anglin
2001-01-23  8:32 ` pa.md bugfix John David Anglin
2001-01-24 17:32 ` John David Anglin
2001-01-27 13:46   ` John David Anglin
2001-01-29 21:18     ` Jeffrey A Law
2001-02-15 11:33 ` [PATCH] Re: REG_DEAD/REG_EQUIV problem John David Anglin
2001-02-16 17:10   ` John David Anglin
2001-03-01 17:31 ` Enum related fixes for gcc build with native cc on vax ultrix John David Anglin
2001-03-01 17:51   ` Richard Henderson
2001-03-02 15:47     ` John David Anglin
2001-03-04 10:28     ` John David Anglin
2001-03-04 11:20       ` Richard Henderson
2001-03-04 10:11 ` cpplib: basename () fix John David Anglin
2001-03-04 17:11 ` Enum fix to cplus-dem.c for gcc build with native cc on vax ultrix John David Anglin
2001-03-06 10:07 ` cpplib: basename () fix John David Anglin
2001-03-06 10:29   ` DJ Delorie
2001-03-06 10:32   ` Zack Weinberg
2001-03-06 10:52     ` John David Anglin
2001-03-06 11:16       ` DJ Delorie
2001-03-06 14:46 ` Patch for wrong number of arguments in call to smallest_mode_for_size John David Anglin
2001-03-16 21:50 ` Patch to rtx_varies_p to improve pic code on PA John David Anglin
2001-04-05 13:41 ` f/ansify.c uses ANSI features John David Anglin
2001-04-12 21:08 ` Sign extension of type with precision of 0 causes fault in force_fit_type John David Anglin
2001-04-14 14:20 ` Where's the axe? Can't walk_tree John David Anglin
2001-04-23 17:02   ` .stabs statements refer to symbol not in source John David Anglin
2001-04-23 17:57     ` John David Anglin
2001-04-21 19:33 ` C++ Issue on GCC 3.0 branch John David Anglin
2001-04-23  2:18   ` Bernd Schmidt
2001-04-23  7:51     ` law
2001-04-23  7:55       ` Bernd Schmidt
2001-04-23  7:56       ` Bernd Schmidt
2001-04-23  8:14         ` law
2001-04-25 10:26   ` Mark Mitchell
2001-04-25 14:04     ` John David Anglin
2001-04-25 17:31       ` Mark Mitchell
2001-04-26  8:32         ` John David Anglin
2001-04-26 10:25           ` Mark Mitchell
2001-04-26 10:02         ` law
2001-05-03  9:57 ` PATCH: Re: jartool.c:539: undefined reference to `strdup' John David Anglin
2001-05-03 10:13   ` Alexandre Oliva
2001-05-03 10:37     ` John David Anglin
2001-05-03 10:53       ` Alexandre Oliva
2001-05-03 10:43     ` Tom Tromey
2001-05-03 11:26     ` John David Anglin
2001-05-03 13:22       ` Tom Tromey
2001-05-03 15:10         ` John David Anglin
2001-05-11 18:32 ` Disappearing labels fix John David Anglin
2001-05-18  8:58   ` John David Anglin
2001-05-18  9:07     ` law
2001-05-14 10:18 ` PATCH: Fix toplev.c breakage on PA after eh merge John David Anglin
2001-05-16 13:27 ` PATCH (revised): " John David Anglin
2001-06-04 10:53 ` PATCH: fix argument promotion John David Anglin
2001-06-09  9:37 ` [v3] build failure from automated checker John David Anglin
2001-06-09 11:44   ` Benjamin Kosnik
2001-06-09 11:55     ` John David Anglin
2001-06-09 12:00       ` Benjamin Kosnik
2001-06-13 16:04         ` John David Anglin
2001-06-13 20:22           ` Alexandre Oliva
2001-06-13 20:49             ` Bruce Korb
2001-06-13 21:41               ` Mark Mitchell
2001-06-13 23:03                 ` Alexandre Oliva
2001-06-13 20:52             ` Bruce Korb
2001-06-13 21:23               ` Alexandre Oliva
2001-06-09 16:57       ` Gabriel Dos Reis
2001-06-09 21:34         ` John David Anglin
2001-06-09 23:22           ` Benjamin Kosnik
2001-06-09 21:21 ` PATCH: gthr-dce.h update for v3 thread compatibility John David Anglin
2001-06-14 18:38 ` PATCH: Fix invalid loader fixups from shared libobjc with John David Anglin
2001-07-10 13:33 ` LO_SUM still breaking rs6000, revert patch? John David Anglin
2001-08-09 14:46 ` ../../gcc/java/class.c:1882: `JCR_SECTION_NAME' undeclared in emit_register_classes John David Anglin
2001-08-09 16:13   ` Richard Henderson
2001-08-09 15:12 ` Simple returns are broken in gcc 3.X John David Anglin
2001-08-09 15:48   ` Richard Henderson
2001-08-22  8:50 ` fix execute/20010518-2.c John David Anglin
2001-08-23 22:55 ` John David Anglin
2001-08-23 22:57   ` Richard Henderson
2001-08-26 14:28     ` as: error 7403: undefined label - _ZTVN10__cxxabiv120__si_class_type_infoE [was Re: fix execute/20010518-2.c] John David Anglin
2001-09-05 22:59 ` CVS Problem: java/parse.c and java/parse-scan.c deleted John David Anglin
2001-09-22 11:35 ` PATCH: pass outgoing float arguments in both floating and general registers in indirect calls using 32 bit ABI John David Anglin
2001-09-24  8:47   ` law
2001-09-24 14:19 ` tiny tree.c update John David Anglin
2001-09-25  5:35   ` Jan Hubicka
2001-09-25  6:54     ` John David Anglin
2001-10-03 12:08 ` PATCH: Check all insns in fallthru to see if label is mentioned John David Anglin
2001-12-04 17:46   ` Richard Henderson
2001-12-08  9:23     ` John David Anglin
2001-12-09 16:12       ` Richard Henderson
2001-10-31 10:39 ` PATCH: Use PLUS instead of HIGH/LO_SUM for large constants - take 2 for PA John David Anglin
2001-11-09 16:21   ` law
2001-11-13  5:27     ` law
2001-11-13 15:03     ` law
2001-11-13 15:03 ` Last alignment change for MEM tracking John David Anglin
2001-11-21 16:04 ` C++ pcc struct return fix John David Anglin
2001-11-30 19:36   ` John David Anglin
2001-12-03  2:52   ` Jason Merrill
2001-12-03  8:40     ` John David Anglin
2001-12-03  8:52       ` Mark Mitchell
2001-12-03 15:19         ` John David Anglin
2001-12-07 11:30           ` Mark Mitchell
2001-12-07 20:55             ` John David Anglin
2001-12-08  3:04               ` Jason Merrill
2001-12-08  9:12                 ` John David Anglin
2001-12-03 10:41       ` Jason Merrill
2001-12-03 11:54         ` John David Anglin
2001-12-01 11:48 ` HPUX 11 "size_t" fixinc problems John David Anglin
2001-12-03 10:37   ` Bruce Korb
2001-12-17 12:39     ` John David Anglin
2001-12-03 14:20 ` Unreviewed C++ patch for PA (HP assembler) John David Anglin
2001-12-03 14:49   ` Benjamin Kosnik
2001-12-04  8:25   ` Jason Merrill
2001-12-04  9:18     ` John David Anglin
2001-12-08  9:29     ` John David Anglin
2001-12-09 19:25       ` Jason Merrill
2001-12-09 19:27       ` Phil Edwards
2001-12-09 14:55 ` PATCH: Check all insns in fallthru to see if label is mentioned John David Anglin
2002-01-08 20:57 ` fix aix -fcprop-register miscompilation John David Anglin
2002-01-10  9:33 ` PATCH: more portable way to fix g77.f-torture/execute/io1.f (was Re: [PATCH] alias.c find_base_value fix) John David Anglin
2002-01-10 16:38   ` John David Anglin
2002-01-14 15:33     ` Toon Moene
2002-01-15 15:35 ` PATCH: Re: ICE in 920624-1.c with -O3 -funroll-loops on vax-dec-ultrix4.3 John David Anglin
2002-01-15 19:31   ` Richard Henderson
2002-01-15 20:27     ` John David Anglin
2002-02-04 16:04     ` John David Anglin
2002-02-04 16:31       ` Richard Henderson
2002-02-04 17:39         ` law
2002-02-04 18:23           ` Richard Henderson
2002-02-04 21:21             ` law
2002-02-04 22:10               ` PATCH: Re: ICE in 920624-1.c with -O3 -funroll-loops on John David Anglin
2002-02-05  0:06                 ` law
2002-02-05  7:34                   ` Jan Hubicka
2002-02-05  8:50                     ` law
2002-02-05 10:40                       ` Jan Hubicka
2002-02-05  6:01                 ` Jan Hubicka
2002-02-05  0:33               ` PATCH: Re: ICE in 920624-1.c with -O3 -funroll-loops on vax-dec-ultrix4.3 Richard Henderson
2002-02-05  0:11                 ` law
2002-02-05  7:08                 ` Jan Hubicka
2002-02-05  7:58                   ` law
2002-02-05  9:32                   ` Richard Henderson
2002-02-05 10:52                     ` Jan Hubicka
2002-02-04 18:01       ` law
2002-01-16  8:53   ` Jan Hubicka
2002-01-16  9:09     ` John David Anglin
2002-01-16  9:58       ` Jan Hubicka
2002-01-21 13:02 ` Fix ld_library_path in g77.exp for hppa64-hp-hpux11.X John David Anglin
2002-01-21 15:22 ` Fix predicate in decrement_and_branch_until_zero pattern on PA John David Anglin
2002-01-21 15:24   ` Richard Henderson
2002-01-21 15:29     ` law
2002-01-21 16:24       ` Richard Henderson
2002-01-21 15:32     ` John David Anglin
2002-01-21 16:27       ` Richard Henderson
2002-01-21 21:58         ` John David Anglin
2002-01-21 22:21           ` Richard Henderson
2002-01-21 22:48         ` John David Anglin
2002-01-22 23:30 ` PATCH: Fix loop.c for targets without HAVE_prefetch John David Anglin
2002-01-23 12:15   ` H . J . Lu
2002-01-28  9:28 ` gcc failed to bootstrap on Linux/mipsel John David Anglin
2002-01-28 11:10   ` Richard Henderson
2002-01-28 11:18     ` John David Anglin
2002-01-28 11:19       ` Richard Henderson
2002-01-28 11:39         ` John David Anglin
2002-01-28 12:07           ` Richard Henderson
2002-01-28 16:04             ` John David Anglin
2002-01-28 17:00               ` Richard Henderson
2002-02-04 13:02 ` Define _GNU_SOURCE in unwind-dw2-fde-glibc.c John David Anglin
2002-02-04 13:43   ` Richard Henderson
2002-02-05 21:17 ` Add missing predicate to PREDICATE_CODES on PA John David Anglin
2002-02-05 23:20   ` Graham Stott
2002-02-06  9:06     ` John David Anglin
2002-02-10 12:30     ` John David Anglin
2002-02-16 16:12 ` Don't use lib2funcs.asm " John David Anglin
2002-02-16 17:56   ` law
2002-02-16 19:45     ` John David Anglin
2002-02-17  9:02       ` law
2002-02-17 11:29         ` John David Anglin
2002-02-18  3:21           ` Olivier Hainque
2002-02-18  9:26             ` John David Anglin
2002-02-18 10:23               ` Olivier Hainque
2002-02-18 10:27                 ` John David Anglin
2002-02-19  2:35                   ` Olivier Hainque
2002-02-18 12:18           ` Hans-Peter Nilsson
2002-02-18 12:30 ` John David Anglin
2002-02-19  2:24   ` Olivier Hainque
2002-03-13  8:34 ` fix for strct-pack-1.c regressions John David Anglin
2002-03-28 15:44 ` Letext John David Anglin
2002-05-08 13:54 ` [PATCH] checking version of rtl flag access macros John David Anglin
2002-06-03 14:02 ` [PATCH] Jump bypassing and improved cprop (take 2) John David Anglin
2002-06-04  6:31   ` law
2002-06-04  6:45     ` Jan Hubicka
2002-06-04  9:09       ` John David Anglin
2002-06-04  9:12         ` Jan Hubicka
2002-06-05 21:30           ` John David Anglin
2002-06-05 23:19             ` law
2002-06-05 14:23 ` Patch: Use tm_defines to configure default scheduling model on PA John David Anglin
2002-06-12 10:03 ` John David Anglin
2002-06-12 10:23   ` DJ Delorie
2002-06-12 10:51     ` John David Anglin
2002-06-12 11:17       ` DJ Delorie
2002-06-12 11:47         ` John David Anglin
2002-06-12 12:01           ` DJ Delorie
2002-06-12 13:01             ` John David Anglin
2002-06-15 11:04     ` John David Anglin
2002-06-18 16:01 ` [PATCH/RFA] Allow register other than SP for DWARF2 CFA John David Anglin
2002-06-24 12:48 ` PATH: inline does not work with -O3 specified Herman ten Brugge
2002-06-30 16:59   ` Michael Hayes
2002-07-11 12:17 ` PATCH: Fix failure of arith-rand-ll.c on hppa 32-bit targets John David Anglin
2002-08-02 22:10 ` [RFA] Fix libsupc++/Makefile.in John David Anglin
2002-08-02 23:49   ` Neil Booth
2002-08-21  9:31 ` PATCH: fix warning and return value for remove_dup_nonsys_dirs John David Anglin
2002-08-21 10:13   ` Zack Weinberg
2002-08-31  9:24 ` 128 bit floats on PA64 John David Anglin
2002-09-23 11:53 ` Patch for PR c/4319 John David Anglin
2002-09-30 21:03 ` PATCH for sibcalls on i386 John David Anglin
2002-10-21 15:48 ` [PATCH] Inline __udiv_w_sdiv into __divdi3 etc John David Anglin
2002-10-24 12:51 ` Reload patch for PA call rewrite John David Anglin
2002-10-24 16:26 ` John David Anglin
2002-10-25  8:54   ` Jeff Law
2002-10-25 10:10     ` John David Anglin
2002-10-30 19:23 ` Call rewrite for PA John David Anglin
2002-11-09 15:18 ` C++ PATCH: ABI bug for vcall offsets John David Anglin
2002-11-09 15:27   ` John David Anglin
2002-11-10 18:21   ` Mark Mitchell
2002-11-10 19:42     ` John David Anglin
2002-11-13 13:12 ` gcc-64 20021111 broken on HP-UX 11.00 John David Anglin
2002-11-26 11:28 ` Unreviewed patch John David Anglin
2002-11-26 15:53 ` PATCH: Fix handling of return values handled in PARALLELs John David Anglin
2002-11-26 17:58   ` Richard Henderson
2002-11-26 19:52 ` clean up some hook routines John David Anglin
2002-12-04 14:22 ` HP-UX PA long double alignment change John David Anglin
2002-12-04 14:31   ` Steve Ellcey
2002-12-04 18:14 ` John David Anglin
2003-01-17 17:15 ` [PATCH] Fix RTL sharing problem in CSE John David Anglin
2003-01-17 17:24   ` law
2003-01-17 18:25     ` Jan Hubicka
2003-01-17 18:59       ` Roger Sayle
2003-01-17 22:33         ` David Edelsohn
2003-01-17 23:56           ` Dale Johannesen
2003-01-17 22:46         ` law
2003-01-19 16:59 ` [PATCH]: Fix ICE in convert_move on PA John David Anglin
2003-01-20 17:31   ` Richard Henderson
2003-01-24  3:44 ` [PATCH] Fix find_reloads_address bug, take 2 Ulrich Weigand
2003-02-01 21:40 ` ping: Unreviewed patch to fix patch to fix bootstrap failure on PA John David Anglin
2003-02-01 21:43   ` Zack Weinberg
2003-02-02  0:23   ` Geoff Keating
2003-02-03  5:02 ` hppa-linux regressions and 3.2.2 release John David Anglin
2003-02-03 11:03   ` Gabriel Dos Reis
2003-02-03 16:26   ` John David Anglin
2003-02-03 16:54     ` Gabriel Dos Reis
2003-02-03 18:02       ` John David Anglin
2003-02-04 21:20 ` Mainline bootstrap failure on hppa2.0w-hp-hpux11.00 John David Anglin
2003-02-05 18:21 ` John David Anglin
2003-02-05 18:46 ` John David Anglin
2003-02-05 19:12   ` Kaveh R. Ghazi
2003-02-11 19:37 ` Bootstrap failure on hppa-unknown-linux-gnu, trunk John David Anglin
2003-02-11 22:37   ` Josef Zlomek
2003-02-11 22:51     ` John David Anglin
2003-03-05 22:00   ` Josef Zlomek
2003-03-05 22:03     ` Josef Zlomek
2003-03-11  2:04 ` jcf-io.c:339: warning: `origsep' might be used uninitialized John David Anglin
2003-03-21  0:02 ` [PATCH]: PA long unconditional branch generation (PR10062) John David Anglin
2003-04-10 19:52 ` Failure of test07 in 27_io/filebuf_members.cc under HP-UX (PR 9964) John David Anglin
2003-04-11  1:22   ` Benjamin Kosnik
2003-04-18 16:32 ` PATCH: Fix PR 8866 John David Anglin
2003-05-10  2:15 ` [PATCH] allow zero_extract combines - checked in John David Anglin
2003-05-12  2:26   ` Eric Christopher
2003-05-12  2:43     ` John David Anglin
2003-05-12  9:11       ` Eric Christopher
2003-05-12 16:50   ` Eric Christopher
2003-05-12 17:05     ` John David Anglin
2003-05-12 17:13       ` Eric Christopher
2003-05-12 17:59         ` John David Anglin
2003-05-12 18:03           ` Eric Christopher
2003-05-23  1:17 ` speedup collect2 (by not using it) John David Anglin
2003-06-19 22:29 ` [PATCH] Fix PCH failures on SPARC John David Anglin
2003-06-20 19:12 ` Hookize CFG debugging code John David Anglin
2003-06-20 19:35   ` Jan Hubicka
2003-06-20 20:47 ` [PATCH]: Fix label replacement in REG_NOTES John David Anglin
2003-07-03 20:17 ` Bootstrap failure compiling ada/misc.c John David Anglin
2003-07-04 17:54 ` [Boehm-GC] Limit +ESdbgasm to HPUX cc on PA John David Anglin
2003-07-04 18:16   ` Tom Tromey
2003-07-04 18:37     ` John David Anglin
2003-07-04 20:24 ` Unreviewed fix for bootstrap failure John David Anglin
2003-10-06 16:53 ` [PATCH] Bootstrap failure due to reload bug Ulrich Weigand
2003-11-01 23:48 ` [PATCH] Fix AMD64 handling of functions with huge stack frames (take 2) John David Anglin
2004-01-22 21:43 ` [PATCH] Optimize subregs of zero and sign extensions " John David Anglin
2004-02-28  5:22 ` [patch] do not disregard LD_LIBRARY_PATH for c++, g77 and objc tests John David Anglin
2004-02-28 18:12   ` Geoff Keating
2004-02-28 18:30     ` Eric Botcazou
2004-04-16 22:12 ` [committed 3.5] Tweak xfail for gcc.dg/const-elim-1.c John David Anglin
2004-04-17 19:09   ` Mark Mitchell
2004-04-18 22:01 ` [patch 3.3/3.4/3.5] Fix PR bootstrap/14671 John David Anglin
2004-04-18 22:51   ` Mark Mitchell
2004-04-18 23:04     ` John David Anglin
2004-04-19  3:24 ` John David Anglin
2004-04-19  3:27   ` Mark Mitchell
2004-04-19  5:30   ` Zdenek Dvorak
2004-04-19 13:58     ` John David Anglin
2004-04-19 14:49     ` Mark Mitchell
2004-04-19 15:01       ` Zdenek Dvorak
2004-04-19 16:22         ` John David Anglin
2004-04-19 17:45           ` Zdenek Dvorak
2004-04-19 19:57         ` John David Anglin
2004-04-19 20:03           ` Andrew Pinski
2004-04-20 16:05             ` John David Anglin
2004-04-21 19:07               ` Mark Mitchell
2004-04-21 21:44               ` Richard Henderson
2004-04-22 20:38                 ` Gabriel Dos Reis
2004-04-21 19:23 ` [committed 3.5] Fix DBX register numbering for hppa64 John David Anglin
2004-04-22 17:25   ` Mark Mitchell
2004-04-22 17:40     ` John David Anglin
2004-04-25 16:00 ` [PATCH] Re: Fix problem with constant modulus John David Anglin
2004-04-25 22:17 ` [ping] Unreviewed patch John David Anglin
2004-04-27 23:34   ` Mark Mitchell
2004-05-04  0:50 ` [PATCH] Ulrich Weigand
2004-05-04  0:52   ` [PATCH] Eric Christopher
2004-06-04 15:56 ` building sh-elf / sh-linux (Was: Re: [PATCH/RFA] PR target/13250) Joern Rennecke
2004-06-04 18:25   ` Joern Rennecke
2004-07-07 21:10 ` [PATCH] Fix PR target/16344 John David Anglin
2004-07-08  5:56   ` Mark Mitchell
2004-07-09 21:01 ` [RFT/RFA] gimplify pa va_arg John David Anglin
2004-07-10 18:38 ` gimple va_arg for hppa John David Anglin
2004-07-11 13:07 ` [PATCH] DWARF-2 unwinder off-by-one problem with signal frames Ulrich Weigand
2004-10-31 20:11 ` [PATCH] Fix PR target/16304: AIX 4.x forward reference proble John David Anglin
2004-11-27 17:39 ` [committed] Fix pch/14940 on hppa-unknown-linux-gnu John David Anglin
2004-11-28 20:24 ` [ping] Fix PR target/16304: AIX 4.x forward reference problem John David Anglin
2004-12-05  0:01 ` [patch] Fix for PR 14838 John David Anglin
2004-12-05  1:17   ` Richard Henderson
2004-12-05  5:18   ` Gabriel Dos Reis
2004-12-27  2:57 ` [committed] Fix PR target/17643 on main and 3.4, and 3.3 John David Anglin
2005-01-21  0:25 ` Change to gcc.dg/tree-ssa/loop-1.c John David Anglin
2005-01-21  0:31   ` John David Anglin
2005-01-21  0:43     ` John David Anglin
2005-01-21  0:49       ` Steve Ellcey
2005-01-21 14:57         ` John David Anglin
2005-01-21 16:44           ` Steve Ellcey
2005-01-21 17:42             ` John David Anglin
2005-01-21 20:33               ` Janis Johnson
2005-04-06 16:49 ` [patch] Add Ada tasking support for hppa-unknown-linux-gnu (take 2) John David Anglin
2005-04-29 10:27   ` Arnaud Charlet
2005-04-29 13:43     ` John David Anglin
2005-04-29 15:07       ` Arnaud Charlet
2005-04-29 15:19         ` John David Anglin
2005-04-29 23:41         ` Richard Henderson
2005-05-01 22:52           ` Mark Mitchell
2005-05-02 17:49             ` Florian Weimer
2005-05-02 18:54               ` Mark Mitchell
2005-04-30  0:14     ` John David Anglin
2005-05-02  9:54       ` Arnaud Charlet
2005-05-02 13:40         ` John David Anglin
2005-05-02 13:44           ` Arnaud Charlet
2005-05-02 15:45             ` John David Anglin
2005-05-02 15:48               ` Arnaud Charlet
2005-05-02 16:05                 ` John David Anglin
2005-05-03  8:22                   ` Arnaud Charlet
2005-06-13  1:33         ` John David Anglin
2005-06-13  6:31           ` Arnaud Charlet
2005-06-13 14:16             ` John David Anglin
2005-06-13 15:22               ` Arnaud Charlet
2005-08-20 16:15 ` [patch]: Fix PR testsuite/23239 John David Anglin
2005-12-07  0:52 ` fix post-weakref gthr-*.h on HP-UX (and others?) John David Anglin
2006-01-17  4:54 ` [PING * 2] One line patch John David Anglin
2006-01-17  4:58 ` [committed] Fix PR target/20754: ACATS cxg1005 fails at runtime on hppa-linux John David Anglin
2006-02-05 16:29 ` [committed] Fix PR target/25926: A87B59A SIGABRT John David Anglin
2006-11-18 18:11 ` Ping: [PATCH] Limit precision of *bitsizetypes types John David Anglin
2006-11-18 21:47   ` Roger Sayle
2006-11-18 21:51     ` John David Anglin
2006-11-18 23:27       ` Roger Sayle
2007-01-25 23:55 ` [PATCH, commited] PR other/30182, Fix __builtin_finite on HP-UX John David Anglin
2007-01-26  0:58   ` Steve Ellcey
2007-02-28 10:53 ` [committed] Fix bug target/30634 John David Anglin
2007-03-17  0:31 ` [committed] Fix long local calls on PA HP-UX SOM target John David Anglin
2007-08-27  2:07 ` [patch,testsuite] Fix PR testsuite/33153 John David Anglin
2007-08-27  8:56   ` Jakub Jelinek
2007-08-28  5:31     ` John David Anglin
2007-09-13  2:28     ` John David Anglin
2007-09-13  5:45       ` Mark Mitchell
2007-09-16  9:20 ` ping: [PATCH] Fix PR middle-end/33273 John David Anglin
2007-09-16  9:21   ` Jakub Jelinek
2007-09-16 19:49   ` Richard Guenther
2007-12-10  3:24 ` [committed] [PR target/34091] Secondary reloads for floating-point register classes John David Anglin
2007-12-14  1:57 ` John David Anglin
2007-12-22 11:05 ` [committed] Fix PR target/34525 - unrecognized insn (take 2) John David Anglin
2008-01-18 10:22 ` [ping] Ignore thread local symbols when generating dbx debug info John David Anglin
2008-02-08  2:49   ` John David Anglin
2008-03-05  3:28     ` Jim Wilson
2008-03-08 20:48       ` [ping] Ignore thread local symbols when generating dbx debug John David Anglin
2008-03-10 16:27         ` [Bulk] " Jim Wilson
2008-03-10 16:45           ` [Bulk] Re: [ping] Ignore thread local symbols when generating John David Anglin
2008-03-12  6:32             ` Jim Wilson
2008-02-07  2:32 ` [committed] Remove xfail for hppa*-*-* from g++.dg/tree-ssa/ivopts-1.C John David Anglin
2008-02-09 22:03 ` RFC: Fix PR middle-end/34150 -- Lost LABEL_NUSES counts John David Anglin
2008-08-18 14:23 ` update dwarf2 asm unwind info [hppa64-*-* failures] John David Anglin
2008-08-21 20:10   ` Richard Henderson
2008-08-21 21:28     ` John David Anglin
2008-08-22  0:09       ` Richard Henderson
2008-08-22  3:27         ` John David Anglin
2008-08-22 17:53           ` Richard Henderson
2008-08-22 18:30             ` John David Anglin
2008-08-22 20:57               ` Richard Henderson
2008-08-23 19:46       ` John David Anglin
2008-08-23 21:14         ` John David Anglin
2008-08-24 20:09           ` Richard Henderson
2008-08-24 21:06             ` John David Anglin
2008-08-25  1:42               ` Richard Henderson
2008-08-25  3:31                 ` John David Anglin
2008-08-25  4:57                 ` John David Anglin
2009-08-02 19:35 ` [committed] Fix previous change to pa.c John David Anglin
2009-11-25  3:28 ` [committed] Shorten non PIC PA 1.1 calls on hppa-hpux John David Anglin
2010-03-27 15:44 ` [PATCH] Fix visibility of constructors/destructors with -fwhole-program John David Anglin
2010-03-27 15:52   ` Richard Guenther
2010-03-27 17:53   ` Jan Hubicka
2010-03-27 21:11     ` [PATCH] Fix visibility of constructors/destructors with John David Anglin
2010-03-27 21:48       ` Jan Hubicka
2010-03-27 21:54         ` Richard Guenther
2010-03-28  1:39           ` Jan Hubicka
2003-06-20 17:23 Hookize CFG debugging code John David Anglin
2003-06-20 17:38 ` Jan Hubicka
2003-06-20 18:57   ` John David Anglin
2003-06-30  3:39   ` John David Anglin
2003-06-30 11:09     ` Jan Hubicka
  -- strict thread matches above, loose matches on Subject: below --
2003-06-06 10:17 Jan Hubicka
2003-06-08  4:24 ` Richard Henderson
     [not found] <no.id@sources.redhat.com>

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).