This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: IA64 compilation failure
- From: Jim Wilson <wilson at specifixinc dot com>
- To: sje at cup dot hp dot com
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Sat, 21 Feb 2004 00:26:19 -0800
- Subject: Re: IA64 compilation failure
- References: <200402190102.RAA17031@hpsje.cup.hp.com>
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)))]