sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use AGGREGATE_TYPE_P so QUAL_UNION_TYPE...
authorPer Bothner <bothner@gcc.gnu.org>
Fri, 12 Jan 1996 00:25:11 +0000 (16:25 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Fri, 12 Jan 1996 00:25:11 +0000 (16:25 -0800)
* 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

gcc/config/sparc/sparc.h

index a23066d92afebb28c9842dace11a3d16f4da2b5b..52f4ef4e61a64fa9b44b7c0d4b9e0c24e3e1bc3f 100644 (file)
@@ -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