aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-12-23 17:59:00 -0800
committerJim Wilson <wilson@gcc.gnu.org>1996-12-23 17:59:00 -0800
commit46af8e31a333e6ef7066c006b8e47d1e2140c3a3 (patch)
tree5a0e363efddce92152bad38f83139a6dd17f0395
parent64ed0f40d3b4dbeaaa00318808ef93e9701a6ebd (diff)
downloadgcc-46af8e31a333e6ef7066c006b8e47d1e2140c3a3.zip
gcc-46af8e31a333e6ef7066c006b8e47d1e2140c3a3.tar.gz
gcc-46af8e31a333e6ef7066c006b8e47d1e2140c3a3.tar.bz2
(FUNCTION_ARG_REGNO_P): Correct for TARGET_SOFT_FLOAT and
TARGET_FLOAT64 cases. From-SVN: r13341
-rw-r--r--gcc/config/mips/mips.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 9b430ab..df52654 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -2088,11 +2088,15 @@ extern struct mips_frame_info current_frame_info;
#define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN)
-/* 1 if N is a possible register number for function argument passing. */
-
-#define FUNCTION_ARG_REGNO_P(N) (((N) >= GP_ARG_FIRST && (N) <= GP_ARG_LAST) \
- || ((N) >= FP_ARG_FIRST && (N) <= FP_ARG_LAST \
- && (0 == (N) % 2)))
+/* 1 if N is a possible register number for function argument passing.
+ We have no FP argument registers when soft-float. When FP registers
+ are 32 bits, we can't directly reference the odd numbered ones. */
+
+#define FUNCTION_ARG_REGNO_P(N) \
+ (((N) >= GP_ARG_FIRST && (N) <= GP_ARG_LAST) \
+ || (! TARGET_SOFT_FLOAT \
+ && ((N) >= FP_ARG_FIRST && (N) <= FP_ARG_LAST) \
+ && (TARGET_FLOAT64 || (0 == (N) % 2))))
/* A C expression which can inhibit the returning of certain function
values in registers, based on the type of value. A nonzero value says