aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-02-28 14:20:46 -0800
committerJim Wilson <wilson@gcc.gnu.org>1996-02-28 14:20:46 -0800
commit58b57c2c7045c0db32a3e1d3c3eb8f40040ebcc7 (patch)
tree4968a82064d6ce72f7d49b99607d195a6fb5eb79
parent5566b478bdfe8bfc554a57f2631c1d3646ac4ae2 (diff)
downloadgcc-58b57c2c7045c0db32a3e1d3c3eb8f40040ebcc7.zip
gcc-58b57c2c7045c0db32a3e1d3c3eb8f40040ebcc7.tar.gz
gcc-58b57c2c7045c0db32a3e1d3c3eb8f40040ebcc7.tar.bz2
(FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P): Include FP registers only when TARGET_SH3E.
(FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P): Include FP registers only when TARGET_SH3E. (PASS_IN_REG_P): Exclude BLKmode only when ! TARGET_SH3E. From-SVN: r11363
-rw-r--r--gcc/config/sh/sh.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 0680c50..13ff97d 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -656,12 +656,13 @@ extern enum reg_class reg_class_from_letter[];
/* 1 if N is a possible register number for a function value. */
#define FUNCTION_VALUE_REGNO_P(REGNO) \
- ((REGNO) == FIRST_RET_REG || (REGNO) == FIRST_FP_RET_REG)
+ ((REGNO) == FIRST_RET_REG || (TARGET_SH3E && (REGNO) == FIRST_FP_RET_REG))
/* 1 if N is a possible register number for function argument passing. */
#define FUNCTION_ARG_REGNO_P(REGNO) \
- (((REGNO) >= FIRST_PARM_REG && (REGNO) < (FIRST_PARM_REG + 4)) \
- || ((REGNO >= FIRST_FP_PARM_REG && (REGNO) < (FIRST_FP_PARM_REG + 8))))
+ (((REGNO) >= FIRST_PARM_REG && (REGNO) < (FIRST_PARM_REG + 4)) \
+ || (TARGET_SH3E \
+ && (REGNO) >= FIRST_FP_PARM_REG && (REGNO) < (FIRST_FP_PARM_REG + 8)))
/* Define a data type for recording info about an argument list
during the scan of that argument list. This data type should
@@ -730,8 +731,9 @@ struct sh_args {
#define PASS_IN_REG_P(CUM, MODE, TYPE) \
(ROUND_REG ((CUM), (MODE)) < NPARM_REGS (MODE) \
- && ((TYPE)==0 || ! TREE_ADDRESSABLE((tree)(TYPE))) \
- && ((TYPE)==0 || (MODE) != BLKmode))
+ && ((TYPE) == 0 || ! TREE_ADDRESSABLE ((tree)(TYPE))) \
+ /* ??? This is questionable. Should perhaps be deleted. */ \
+ && (! TARGET_SH3E || (TYPE) == 0 || (MODE) != BLKmode))
/* Define where to put the arguments to a function.
Value is zero to push the argument on the stack,