aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1994-10-04 20:47:05 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1994-10-04 20:47:05 +0000
commit713225d41db4603c3b42a96b7017190088f05623 (patch)
tree65021030fe50f1e6c5c7afdb3371e27ca32d10ad
parent80dd7630623737fe903af295e80646e5cfeade2b (diff)
downloadgcc-713225d41db4603c3b42a96b7017190088f05623.zip
gcc-713225d41db4603c3b42a96b7017190088f05623.tar.gz
gcc-713225d41db4603c3b42a96b7017190088f05623.tar.bz2
Fix return complex doubles with -fpic clobbering %ebx
From-SVN: r8212
-rw-r--r--gcc/config/i386/i386.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 562f0bd..831ce91 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -462,6 +462,27 @@ extern int target_flags;
/* Place in which caller passes the structure value address.
0 means push the value on the stack like an argument. */
#define STRUCT_VALUE 0
+
+/* A C expression which can inhibit the returning of certain function
+ values in registers, based on the type of value. A nonzero value
+ says to return the function value in memory, just as large
+ structures are always returned. Here TYPE will be a C expression
+ of type `tree', representing the data type of the value.
+
+ Note that values of mode `BLKmode' must be explicitly handled by
+ this macro. Also, the option `-fpcc-struct-return' takes effect
+ regardless of this macro. On most systems, it is possible to
+ leave the macro undefined; this causes a default definition to be
+ used, whose value is the constant 1 for `BLKmode' values, and 0
+ otherwise.
+
+ Do not use this macro to indicate that structures and unions
+ should always be returned in memory. You should instead use
+ `DEFAULT_PCC_STRUCT_RETURN' to indicate this. */
+
+#define RETURN_IN_MEMORY(TYPE) \
+ ((TYPE_MODE (TYPE) == BLKmode) || int_size_in_bytes (TYPE) > 12)
+
/* Define the classes of registers for register constraints in the
machine description. Also define ranges of constants.