+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>
* fold-const.c (range_binop): Take account of the bounded nature
which set the argument registers into the delay slot of the millicode
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
in particular. */
&& GET_CODE (PATTERN (X)) != SEQUENCE \
&& GET_CODE (PATTERN (X)) != USE \
&& GET_CODE (PATTERN (X)) != CLOBBER \
- && get_attr_type (X) == TYPE_SFUNC))
+ && get_attr_is_sfunc (X)))
#define INSN_REFERENCES_ARE_DELAYED(X) \
((GET_CODE (X) == INSN \
&& GET_CODE (PATTERN (X)) != SEQUENCE \
&& GET_CODE (PATTERN (X)) != USE \
&& 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
the same cost. */
(eq_attr "length" "2") (const_string "yes")
] (const_string "no")))
+(define_attr "is_sfunc" ""
+ (if_then_else (eq_attr "type" "sfunc") (const_int 1) (const_int 0)))
+
(define_delay
(eq_attr "needs_delay_slot" "yes")
[(eq_attr "in_delay_slot" "yes") (nil) (nil)])