This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
x86 fix operand 2 constraint on *ffs_no_cmove"
- From: Graham Stott <graham dot stott at btinternet dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Sun, 15 Jun 2003 16:28:36 +0100
- Subject: x86 fix operand 2 constraint on *ffs_no_cmove"
Hi,
Building an uberbaum mips-elf toolchain with mainline fails on i686-pc-linux-gnu due to
In file included from /usr/local/src/uberbaum/bfd/elfcode.h:1798,
from /usr/local/src/uberbaum/bfd/elf32.c:22:
/usr/local/src/uberbaum/bfd/elflink.h: In function `elf_link_add_object_symbols':
/usr/local/src/uberbaum/bfd/elflink.h:1708: error: insn does not satisfy its constraints:
(insn 5641 5640 5642 200 0x40b1cfd0 (set (strict_low_part (reg:QI 4 sil))
(eq:QI (reg:CCZ 17 flags)
(const_int 0 [0x0]))) 362 {setcc_2} (insn_list 5639 (insn_list 5640 (nil)))
(expr_list:REG_DEAD (reg:CCZ 17 flags)
(nil)))
/usr/local/src/uberbaum/bfd/elflink.h:1708: internal compiler error: in copyprop_hardreg_forward_1, at regrename
The problem here is that "(reg:QI 4 sil)" isn't valid for x86 although it is valid for x64.
Bootstrapped x86-pc-linux-gnu all languages no regressions and sucessfully built an uberbaum mips-elf toolchain.
Graham
ChangeLog
* config/i386/i386.md(ffs_no_cmove): Fix operand 2 constraint,
-------------------------------------------------------------------
Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.470
diff -c -p -r1.470 i386.md
*** i386.md 15 Jun 2003 13:32:29 -0000 1.470
--- i386.md 15 Jun 2003 15:01:15 -0000
***************
*** 14414,14420 ****
(define_insn_and_split "*ffs_no_cmove"
[(set (match_operand:SI 0 "nonimmediate_operand" "=r")
(ffs:SI (match_operand:SI 1 "nonimmediate_operand" "rm")))
! (clobber (match_scratch:SI 2 "=&r"))
(clobber (reg:CC 17))]
""
"#"
--- 14414,14420 ----
(define_insn_and_split "*ffs_no_cmove"
[(set (match_operand:SI 0 "nonimmediate_operand" "=r")
(ffs:SI (match_operand:SI 1 "nonimmediate_operand" "rm")))
! (clobber (match_scratch:SI 2 "=&q"))
(clobber (reg:CC 17))]
""
"#"
---------------------------------------------------------------------