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

Re: c++/2296: gcc-2.95.3.test3: internal error--unrecognizable insn:


The following reply was made to PR c++/2296; it has been noted by GNATS.

From: Bernd Schmidt <bernds@redhat.com>
To: <Martin.Spott@uni-duisburg.de>
Cc: <gcc-gnats@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>,
	<gcc-bugs@gcc.gnu.org>, <gcc-patches@gcc.gnu.org>
Subject: Re: c++/2296: gcc-2.95.3.test3: internal error--unrecognizable insn:
Date: Fri, 30 Mar 2001 14:47:34 +0100 (BST)

 On 16 Mar 2001 Martin.Spott@uni-duisburg.de wrote:
 
 > sirius: 0:56:25 ~/FlightGear> g++ -v -O3 -mabi=64 -mips4 -mmips-as -c panel.ii
 > Reading specs from /opt/gnu/lib/gcc-lib/mips-sgi-irix64/2.95.3/specs
 > gcc version 2.95.3 20010125 (prerelease)
 >  /opt/gnu/lib/gcc-lib/mips-sgi-irix64/2.95.3/cc1plus panel.ii -mfp64 -mgp64 -quiet -mabi=64 -mips4 -mmips-as -O3 -version -o /var/tmp/cc5mAv9K.s
 > GNU C++ version 2.95.3 20010125 (prerelease) (mips-sgi-irix64) compiled by GNU C version 2.95.3 20010125 (prerelease).
 > panel.cxx: In method `void FGAdjustAction::doAction()':
 > panel.cxx:124: internal error--unrecognizable insn:
 > (insn 123 122 88 (set:SF (reg/v:SF 82)
 >         (if_then_else:SF (eq (reg:DI 110)
 >                 (const_int 0 [0x0]))
 >             (reg:SF 96)
 >             (reg:SF 93))) -1 (insn_list 122 (nil))
 >     (expr_list:REG_DEAD (reg:DI 110)
 >         (expr_list:REG_DEAD (reg:SF 96)
 >             (expr_list:REG_DEAD (reg:SF 93)
 >                 (nil)))))
 > >How-To-Repeat:
 > g++ -O3 -mabi=64 -mips4 -mmips-as -c panel.ii
 
 Fixed by backporting this patch to the 2.95 branch.  Taken from
    http://gcc.gnu.org/ml/gcc-patches/1999-10/msg00074.html
 
 
 Bernd
 
 Index: ChangeLog
 ===================================================================
 RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v
 retrieving revision 1.3667.4.345
 diff -u -p -r1.3667.4.345 ChangeLog
 --- ChangeLog	2001/03/30 13:21:49	1.3667.4.345
 +++ ChangeLog	2001/03/30 13:37:50
 @@ -7,6 +7,10 @@
 
  	* final.c (cleanup_subreg_operands): Also clean up inside MEMs.
 
 +	Mon Oct  4 02:31:20 1999  Mark Mitchell  <mark@codesourcery.com>
 +	* mips.md: Define conditional move patterns for floating point
 +	operands and DI mode conditions.
 +
  2001-03-28  Bernd Schmidt  <bernds@redhat.com>
 
  	* flow.c (propagate_block): When trying to delete a case vector, cope
 Index: config/mips/mips.md
 ===================================================================
 RCS file: /cvs/gcc/egcs/gcc/config/mips/mips.md,v
 retrieving revision 1.55.4.1
 diff -u -p -r1.55.4.1 mips.md
 --- mips.md	1999/06/29 01:59:20	1.55.4.1
 +++ mips.md	2001/03/30 13:37:51
 @@ -10086,6 +10086,21 @@ move\\t%0,%z4\\n\\
  (define_insn ""
    [(set (match_operand:SF 0 "register_operand" "=f,f")
  	(if_then_else:SF
 +	 (match_operator 4 "equality_op"
 +			 [(match_operand:DI 1 "se_register_operand" "d,d")
 +			  (const_int 0)])
 +	 (match_operand:SF 2 "register_operand" "f,0")
 +	 (match_operand:SF 3 "register_operand" "0,f")))]
 +  "mips_isa >= 4 && TARGET_HARD_FLOAT"
 +  "@
 +    mov%B4.s\\t%0,%2,%1
 +    mov%b4.s\\t%0,%3,%1"
 +  [(set_attr "type" "move")
 +   (set_attr "mode" "SF")])
 +
 +(define_insn ""
 +  [(set (match_operand:SF 0 "register_operand" "=f,f")
 +	(if_then_else:SF
  	 (match_operator 3 "equality_op" [(match_operand:CC 4
  							    "register_operand"
  							    "z,z")
 @@ -10104,6 +10119,21 @@ move\\t%0,%z4\\n\\
  	(if_then_else:DF
  	 (match_operator 4 "equality_op"
  			 [(match_operand:SI 1 "register_operand" "d,d")
 +			  (const_int 0)])
 +	 (match_operand:DF 2 "register_operand" "f,0")
 +	 (match_operand:DF 3 "register_operand" "0,f")))]
 +  "mips_isa >= 4 && TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT"
 +  "@
 +    mov%B4.d\\t%0,%2,%1
 +    mov%b4.d\\t%0,%3,%1"
 +  [(set_attr "type" "move")
 +   (set_attr "mode" "DF")])
 +
 +(define_insn ""
 +  [(set (match_operand:DF 0 "register_operand" "=f,f")
 +	(if_then_else:DF
 +	 (match_operator 4 "equality_op"
 +			 [(match_operand:DI 1 "se_register_operand" "d,d")
  			  (const_int 0)])
  	 (match_operand:DF 2 "register_operand" "f,0")
  	 (match_operand:DF 3 "register_operand" "0,f")))]
 


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