aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1996-01-11 16:25:11 -0800
committerPer Bothner <bothner@gcc.gnu.org>1996-01-11 16:25:11 -0800
commit3c0f5ae642ea75acc61853a642f557109f3bb9e4 (patch)
treea4efa7f39e53657f53e99643c29a5e0cee158857
parenta6cc0d48f142afdccc9c31286037c78894f4f0f9 (diff)
downloadgcc-3c0f5ae642ea75acc61853a642f557109f3bb9e4.zip
gcc-3c0f5ae642ea75acc61853a642f557109f3bb9e4.tar.gz
gcc-3c0f5ae642ea75acc61853a642f557109f3bb9e4.tar.bz2
sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use AGGREGATE_TYPE_P so QUAL_UNION_TYPE and SET_TYPE are also passed by...
* sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use AGGREGATE_TYPE_P so QUAL_UNION_TYPE and SET_TYPE are also passed by invisible reference. * sparc.h (INIT_CUMULATIVE_ARGS for SPARCV9): Return types of QUAL_UNION_TYPE and SET_TYPE also make invisible 1st argument. From-SVN: r10967
-rw-r--r--gcc/config/sparc/sparc.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index a23066d..52f4ef4 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -1345,6 +1345,8 @@ extern int sparc_arg_count,sparc_n_named_args;
((FNTYPE) && TYPE_ARG_TYPES (FNTYPE) \
? (list_length (TYPE_ARG_TYPES (FNTYPE)) \
+ (TREE_CODE (TREE_TYPE (FNTYPE)) == RECORD_TYPE \
+ || TREE_CODE (TREE_TYPE (FNTYPE)) == QUAL_UNION_TYPE)\
+ || TREE_CODE (TREE_TYPE (FNTYPE)) == SET_TYPE) \
|| TREE_CODE (TREE_TYPE (FNTYPE)) == UNION_TYPE)) \
/* Can't tell, treat 'em all as named. */ \
: 10000); \
@@ -1448,10 +1450,8 @@ extern int sparc_arg_count,sparc_n_named_args;
/* The SPARC ABI stipulates passing struct arguments (of any size) and
(!v9) quad-precision floats by invisible reference.
For Pascal, also pass arrays by reference. */
-#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \
- ((TYPE && (TREE_CODE (TYPE) == RECORD_TYPE \
- || TREE_CODE (TYPE) == UNION_TYPE \
- || TREE_CODE (TYPE) == ARRAY_TYPE)) \
+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \
+ ((TYPE && AGGREGATE_TYPE_P (TYPE)) \
|| (!TARGET_V9 && MODE == TFmode))
/* A C expression that indicates when it is the called function's