mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-19 19:59:58 +08:00
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:
parent
9a95b64adf
commit
0603a39d29
@ -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
|
||||||
|
@ -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. */
|
||||||
|
@ -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)])
|
||||||
|
Loading…
Reference in New Issue
Block a user