This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[3.1.1] Re: Possible bug with -O2 -march=athlon[-tbird]
- From: Jan Hubicka <jh at suse dot cz>
- To: Lawrence Gold <gold at shell dot aros dot net>
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, rth at cygnus dot com
- Date: Sat, 18 May 2002 22:52:33 +0200
- Subject: [3.1.1] Re: Possible bug with -O2 -march=athlon[-tbird]
- References: <20020518010248.A99467@shell.aros.net>
> Since I've already lost face by making a false bug report on GNATS, I
> might as well risk doing it on the mailing list this time...
>
> When I try to compile one of the files from xmess-0.561.1 using
>
> gcc -c -O2 -march=athlon[-tbird]
>
> I get this error:
>
> /tmp/ccRddfe9.s: Assembler messages:
> /tmp/ccRddfe9.s:5300: Error: bad register name `%sil'
>
Hi,
the bug is caused by wrong constrain (cut&paste, as expected).
Simple grepping has shown another two occurences of identical bug.
This is 2.95 regression. Bootstrapped/regtested i386-linux mainline,
branch in progress.
Honza
Sat May 18 22:50:22 CEST 2002 Jan Hubicka <jh@suse.cz>
* i386.md (pushqi2, ashrqi_*): Fix constraint.
Index: i386.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.md,v
retrieving revision 1.361
diff -c -3 -p -r1.361 i386.md
*** i386.md 14 May 2002 10:46:27 -0000 1.361
--- i386.md 18 May 2002 20:47:05 -0000
***************
*** 1361,1367 ****
;; For 64BIT abi we always round up to 8 bytes.
(define_insn "*pushqi2_rex64"
[(set (match_operand:QI 0 "push_operand" "=X")
! (match_operand:QI 1 "nonmemory_no_elim_operand" "ri"))]
"TARGET_64BIT"
"push{q}\t%q1"
[(set_attr "type" "push")
--- 1361,1367 ----
;; For 64BIT abi we always round up to 8 bytes.
(define_insn "*pushqi2_rex64"
[(set (match_operand:QI 0 "push_operand" "=X")
! (match_operand:QI 1 "nonmemory_no_elim_operand" "qi"))]
"TARGET_64BIT"
"push{q}\t%q1"
[(set_attr "type" "push")
***************
*** 11184,11190 ****
(ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0")
(match_operand:QI 2 "const_int_1_operand" "I"))
(const_int 0)))
! (set (match_operand:QI 0 "nonimmediate_operand" "=rm")
(ashiftrt:QI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
&& (TARGET_PENTIUM || TARGET_PENTIUMPRO)
--- 11184,11190 ----
(ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0")
(match_operand:QI 2 "const_int_1_operand" "I"))
(const_int 0)))
! (set (match_operand:QI 0 "nonimmediate_operand" "=qm")
(ashiftrt:QI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
&& (TARGET_PENTIUM || TARGET_PENTIUMPRO)
***************
*** 11205,11211 ****
(ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0")
(match_operand:QI 2 "immediate_operand" "I"))
(const_int 0)))
! (set (match_operand:QI 0 "nonimmediate_operand" "=rm")
(ashiftrt:QI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (ASHIFTRT, QImode, operands)"
--- 11205,11211 ----
(ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0")
(match_operand:QI 2 "immediate_operand" "I"))
(const_int 0)))
! (set (match_operand:QI 0 "nonimmediate_operand" "=qm")
(ashiftrt:QI (match_dup 1) (match_dup 2)))]
"ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (ASHIFTRT, QImode, operands)"