This is the mail archive of the gcc-patches@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: IA64 compilation failure


Steve Ellcey wrote:
With -O2 and if-conversion the compile dies with:
x.c:20: error: unrecognizable insn:

I suggest filing a bugzilla bug report so that this doesn't get lost. If you want to work on the problem yourself, you can always assign it to yourself.


I noticed one odd thing in ia64.md that I couldn't understand and may or
may not be related.  In ia64.md after the definition of shift_mix4left,
there are two define_split's.  They are identical except that one has a
condition "reload_completed" and the other a condition "! reload_completed".

This is trivial to fix, so I went ahead and wrote a patch for it. This patch was tested with an ia64-linux bootstrap and make check.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
2004-02-20  James E Wilson  <wilson@specifixinc.com>

	* config/ia64/ia64.md (shift_mix4left+1): Delete reload_completed
	check.
	(shift_mix4left+2): Delete redundant pattern.

Index: ia64.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.md,v
retrieving revision 1.123
diff -p -r1.123 ia64.md
*** ia64.md	31 Jan 2004 02:06:58 -0000	1.123
--- ia64.md	21 Feb 2004 00:31:11 -0000
***************
*** 1134,1151 ****
  			 (const_int 32) (const_int 0))
  	(match_operand:DI 1 "register_operand" ""))
     (clobber (match_operand:DI 2 "register_operand" ""))]
!   "reload_completed"
!   [(set (match_dup 3) (ashift:DI (match_dup 1) (const_int 32)))
!    (set (zero_extract:DI (match_dup 0) (const_int 32) (const_int 0))
! 	(lshiftrt:DI (match_dup 3) (const_int 32)))]
!   "operands[3] = operands[2];")
! 
! (define_split
!   [(set (zero_extract:DI (match_operand:DI 0 "register_operand" "")
! 			 (const_int 32) (const_int 0))
! 	(match_operand:DI 1 "register_operand" ""))
!    (clobber (match_operand:DI 2 "register_operand" ""))]
!   "! reload_completed"
    [(set (match_dup 3) (ashift:DI (match_dup 1) (const_int 32)))
     (set (zero_extract:DI (match_dup 0) (const_int 32) (const_int 0))
  	(lshiftrt:DI (match_dup 3) (const_int 32)))]
--- 1134,1140 ----
  			 (const_int 32) (const_int 0))
  	(match_operand:DI 1 "register_operand" ""))
     (clobber (match_operand:DI 2 "register_operand" ""))]
!   ""
    [(set (match_dup 3) (ashift:DI (match_dup 1) (const_int 32)))
     (set (zero_extract:DI (match_dup 0) (const_int 32) (const_int 0))
  	(lshiftrt:DI (match_dup 3) (const_int 32)))]

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