This is the mail archive of the gcc-bugs@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]

[Bug rtl-optimization/16060] [3.5 Regression] ICE 'unrecognizable insn' with -ftracer


------- Additional Comments From joern dot rennecke at superh dot com  2004-06-21 13:56 -------
Subject: Re:  [3.5 Regression] ICE 'unrecognizable insn' with -ftracer

> I think this is a very recent regression caused by (or one of the followup):
> 2004-06-14  J"orn Rennecke <joern.rennecke@superh.com>
> 
>         * basic-block.h (could_fall_through): Declare.
>         * cfganal.c (can_fallthru): Succeed if the target is EXIT_BLOCK_PTR.
>         Fail if the source already has a fallthrough edge to the exit
>         block pointer.
>         (could_fall_through): New function.
>         * cfgbuild.c (make_edges): Check if we already have a fallthrough
>         edge to the exit block pointer.
>         * cfglayout.c (fixup_fallthru_exit_predecessor): Check that it is
>         not called before reload has completed.
>         Handle special case of first block having a fall-through exit edge.
>         (cfg_layout_finalize): Don't call it before reload or if we have
>         rtl epilogues.
>         (fixup_reorder_chain): A fall through to the exit block does not
>         require the block to come last.  Add sanity checks.
>         * cfgrtl.c (rtl_split_edge): Add special handling of fall through
>         edges to the exit block.
>         * function.c (cfglayout.h): #include.
>         (thread_prologue_and_epilogue_insns): If we have neither return nor
>         epilogue, but a fall through to the exit block from mid-function,
>         force a non-fall-through exit.
>         * Makefile.in (function.o): Depend on CFGLAYOUT_H. 

The appended testcase makes the compilation succeed for the testcase;
I am currently bootstrapping / regtesting this for i686-pc-linux-gnu.

2004-06-21  J"orn Rennecke <joern.rennecke@superh.com>

	* cfglayout.c (fixup_reorder_chain): Don't do anything for
	e_fall->dest == EXIT_BLOCK_PTR.

Index: cfglayout.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfglayout.c,v
retrieving revision 1.59.2.5
diff -p -r1.59.2.5 cfglayout.c
*** cfglayout.c	16 Jun 2004 17:14:21 -0000	1.59.2.5
--- cfglayout.c	21 Jun 2004 13:39:56 -0000
*************** fixup_reorder_chain (void)
*** 665,672 ****
  	    {
  	      /* If the old fallthru is still next, nothing to do.  */
  	      if (bb->rbi->next == e_fall->dest
! 	          || (!bb->rbi->next
! 		      && e_fall->dest == EXIT_BLOCK_PTR))
  		continue;
  
  	      /* The degenerated case of conditional jump jumping to the next
--- 665,671 ----
  	    {
  	      /* If the old fallthru is still next, nothing to do.  */
  	      if (bb->rbi->next == e_fall->dest
! 	          || e_fall->dest == EXIT_BLOCK_PTR)
  		continue;
  
  	      /* The degenerated case of conditional jump jumping to the next


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16060


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