From 0603a39d29a6d2edde51c9587802fb284690d781 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 11 Feb 1999 07:48:50 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/sh/sh.h | 6 +++--- gcc/config/sh/sh.md | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 50b3a2e5b18..b86e61196f5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Feb 11 15:20:49 1999 J"orn Rennecke + + * 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 * fold-const.c (range_binop): Take account of the bounded nature diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 260e9cb13da..db07aaea9c2 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -1636,7 +1636,7 @@ extern struct rtx_def *sh_builtin_saveregs (); 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. */ @@ -1645,14 +1645,14 @@ extern struct rtx_def *sh_builtin_saveregs (); && 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. */ diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 29979cd1309..8dc823cef76 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -482,6 +482,9 @@ (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)])