This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Bootstrap fails with recently CVS'd sources on alphaev6-unknown-linux-gnu.
- To: Toon Moene <toon at moene dot indiv dot nluug dot nl>
- Subject: Re: Bootstrap fails with recently CVS'd sources on alphaev6-unknown-linux-gnu.
- From: Richard Henderson <rth at cygnus dot com>
- Date: Tue, 30 May 2000 08:54:28 -0700
- Cc: gcc at gcc dot gnu dot org
- References: <3932D7C4.ABC0F189@moene.indiv.nluug.nl> <20000529141426.A10024@cygnus.com>
On Mon, May 29, 2000 at 02:14:26PM -0700, Richard Henderson wrote:
> I know. I believe it to be a bug in genrecog, but have yet to find it.
To my surprise, apparently there's no correlation to be drawn
from the pattern being matched and the insn that it belongs to.
Certainly they don't match during recog_for_combine...
So I'll try to be a little less clever next time.
r~
* config/alpha/alpha.md (*setne_internal): Use match_operator
instead of working down from insn.
Index: config/alpha/alpha.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/alpha/alpha.md,v
retrieving revision 1.123
diff -c -p -d -r1.123 alpha.md
*** alpha.md 2000/05/29 07:52:26 1.123
--- alpha.md 2000/05/30 15:50:10
***************
*** 2520,2535 ****
;; Next are all the integer comparisons, and conditional moves and branches
;; and some of the related define_expand's and define_split's.
- (define_insn "*setne_internal"
- [(set (match_operand 0 "register_operand" "=r")
- (ne (match_operand:DI 1 "reg_or_8bit_operand" "rI")
- (const_int 0)))]
- "GET_MODE_CLASS (GET_MODE (operands[0])) == MODE_INT
- && GET_MODE_SIZE (GET_MODE (operands[0])) <= 8
- && GET_MODE (operands[0]) == GET_MODE (SET_SRC (PATTERN (insn)))"
- "cmpult $31,%1,%0"
- [(set_attr "type" "icmp")])
-
(define_insn "*setcc_internal"
[(set (match_operand 0 "register_operand" "=r")
(match_operator 1 "alpha_comparison_operator"
--- 2520,2525 ----
***************
*** 2550,2555 ****
--- 2540,2557 ----
&& GET_MODE_SIZE (GET_MODE (operands[0])) <= 8
&& GET_MODE (operands[0]) == GET_MODE (operands[1])"
"cmp%c1 %r3,%2,%0"
+ [(set_attr "type" "icmp")])
+
+ (define_insn "*setne_internal"
+ [(set (match_operand 0 "register_operand" "=r")
+ (match_operator 1 "signed_comparison_operator"
+ [(match_operand:DI 2 "reg_or_8bit_operand" "rI")
+ (const_int 0)]))]
+ "GET_MODE_CLASS (GET_MODE (operands[0])) == MODE_INT
+ && GET_MODE_SIZE (GET_MODE (operands[0])) <= 8
+ && GET_CODE (operands[1]) == NE
+ && GET_MODE (operands[0]) == GET_MODE (operands[1])"
+ "cmpult $31,%2,%0"
[(set_attr "type" "icmp")])
;; The mode folding trick can't be used with const_int operands, since