ICE in find_reloads

Jan Hubicka jh@suse.cz
Mon Mar 26 04:45:00 GMT 2001


> On Sat, 24 Mar 2001, Philipp Thomas wrote:
> 
> > Bernd,
> >
> > CVS gcc as of two days ago failed with an ICE while trying to compile
> > XFree86 4.0.3. All the additional compiler flags don't matter, it's only -O2
> > that triggers it. Any idea what could cause this? Compressed source is
> > attached.
> 
> > In file included from pl_util.c:49:
> > PEXlibint.h:864: warning: function declaration isn't a prototype
> > pl_util.c: In function `PEXMapXCToNPC':
> > pl_util.c:2381: Unable to generate reloads for:
> > (insn 782 783 868 (set (reg:SF 1 edx [233])
> >         (float_truncate:SF (reg/v:DF 61))) 137 {truncdfsf2_3} (nil)
> >     (expr_list:REG_DEAD (reg/v:DF 61)
> >         (nil)))
> > pl_util.c:2381: Internal compiler error in find_reloads, at reload.c:3486
> 
> I haven't tried debugging it.  From the ChangeLogs, this one seems to be the
> most likely candidate:
The truncsfdf2_3 does have wrong predicate - it should have memory_operand, but
does have nonimmediate.  It seems to be unrelated to my patches, but here is
fix I am testing right now. If it will pass checking, I will install it as obvious

Mon Mar 26 14:44:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (truncdfsf2_3, trunctfsf2_2): Change predicate to memory_operand.

Index: i386.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.md,v
retrieving revision 1.248
diff -c -3 -p -r1.248 i386.md
*** i386.md	2001/03/26 12:36:35	1.248
--- i386.md	2001/03/26 12:43:29
***************
*** 4341,4347 ****
     (set_attr "mode" "DF,SF")])
  
  (define_insn "truncdfsf2_3"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=m")
  	(float_truncate:SF
  	 (match_operand:DF 1 "register_operand" "f")))]
    "TARGET_80387"
--- 4341,4347 ----
     (set_attr "mode" "DF,SF")])
  
  (define_insn "truncdfsf2_3"
!   [(set (match_operand:SF 0 "memory_operand" "=m")
  	(float_truncate:SF
  	 (match_operand:DF 1 "register_operand" "f")))]
    "TARGET_80387"
***************
*** 4490,4496 ****
     (set_attr "mode" "SF")])
  
  (define_insn "*trunctfsf2_2"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=m")
  	(float_truncate:SF
  	 (match_operand:TF 1 "register_operand" "f")))]
    "TARGET_80387"
--- 4490,4496 ----
     (set_attr "mode" "SF")])
  
  (define_insn "*trunctfsf2_2"
!   [(set (match_operand:SF 0 "memory_operand" "=m")
  	(float_truncate:SF
  	 (match_operand:TF 1 "register_operand" "f")))]
    "TARGET_80387"



More information about the Gcc-patches mailing list