sh.md (is_sfunc): New attribute.

* sh.md (is_sfunc): New attribute.
	* sh.h (INSN_SETS_ARE_DELAYED, INSN_REFERENCES_ARE_DELAYED): Use it.

From-SVN: r25152
This commit is contained in:
J"orn Rennecke 1999-02-11 07:48:50 +00:00 committed by Joern Rennecke
parent 9a95b64adf
commit 0603a39d29
3 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,8 @@
Thu Feb 11 15:20:49 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.md (is_sfunc): New attribute.
* sh.h (INSN_SETS_ARE_DELAYED, INSN_REFERENCES_ARE_DELAYED): Use it.
Thu Feb 11 01:06:49 1999 Nathan Sidwell <nathan@acm.org> Thu Feb 11 01:06:49 1999 Nathan Sidwell <nathan@acm.org>
* fold-const.c (range_binop): Take account of the bounded nature * fold-const.c (range_binop): Take account of the bounded nature

View File

@ -1636,7 +1636,7 @@ extern struct rtx_def *sh_builtin_saveregs ();
which set the argument registers into the delay slot of the millicode which set the argument registers into the delay slot of the millicode
call -- thus they act more like traditional CALL_INSNs. call -- thus they act more like traditional CALL_INSNs.
get_attr_type will try to recognize the given insn, so make sure to get_attr_is_sfunc will try to recognize the given insn, so make sure to
filter out things it will not accept -- SEQUENCE, USE and CLOBBER insns filter out things it will not accept -- SEQUENCE, USE and CLOBBER insns
in particular. */ in particular. */
@ -1645,14 +1645,14 @@ extern struct rtx_def *sh_builtin_saveregs ();
&& GET_CODE (PATTERN (X)) != SEQUENCE \ && GET_CODE (PATTERN (X)) != SEQUENCE \
&& GET_CODE (PATTERN (X)) != USE \ && GET_CODE (PATTERN (X)) != USE \
&& GET_CODE (PATTERN (X)) != CLOBBER \ && GET_CODE (PATTERN (X)) != CLOBBER \
&& get_attr_type (X) == TYPE_SFUNC)) && get_attr_is_sfunc (X)))
#define INSN_REFERENCES_ARE_DELAYED(X) \ #define INSN_REFERENCES_ARE_DELAYED(X) \
((GET_CODE (X) == INSN \ ((GET_CODE (X) == INSN \
&& GET_CODE (PATTERN (X)) != SEQUENCE \ && GET_CODE (PATTERN (X)) != SEQUENCE \
&& GET_CODE (PATTERN (X)) != USE \ && GET_CODE (PATTERN (X)) != USE \
&& GET_CODE (PATTERN (X)) != CLOBBER \ && GET_CODE (PATTERN (X)) != CLOBBER \
&& get_attr_type (X) == TYPE_SFUNC)) && get_attr_is_sfunc (X)))
/* Compute the cost of an address. For the SH, all valid addresses are /* Compute the cost of an address. For the SH, all valid addresses are
the same cost. */ the same cost. */

View File

@ -482,6 +482,9 @@
(eq_attr "length" "2") (const_string "yes") (eq_attr "length" "2") (const_string "yes")
] (const_string "no"))) ] (const_string "no")))
(define_attr "is_sfunc" ""
(if_then_else (eq_attr "type" "sfunc") (const_int 1) (const_int 0)))
(define_delay (define_delay
(eq_attr "needs_delay_slot" "yes") (eq_attr "needs_delay_slot" "yes")
[(eq_attr "in_delay_slot" "yes") (nil) (nil)]) [(eq_attr "in_delay_slot" "yes") (nil) (nil)])