re PR target/87807 (passing float/double vectors as variadic args fails on-64bit...
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 29 Nov 2018 23:08:09 +0000 (23:08 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 29 Nov 2018 23:08:09 +0000 (23:08 +0000)
commit856f4c6a9cfac1471c323b1783130879e2bbc15f
tree83a9b48c9e7e0043713d59e13544d39397a82a7b
parent0b1c4b83e44a89b2736671f968c07ca1aab634ae
re PR target/87807 (passing float/double vectors as variadic args fails on-64bit SPARC)

PR target/87807
* config/sparc/sparc-modes.def: Minor tweak.
* config/sparc/sparc.c: Minor reordering.
(sparc_pass_by_reference): Move around.
(traverse_record_type): Change offset from HOST_WIDE_INT to int.
(classify_registers): Likewise for bitpos.
(function_arg_slotno): Remove dead test and tweak comments.
<MODE_RANDOM>: Remove useless assertion and test whether the
parameter is named in order to pass it in FP registers.  Return
the regno for floating-point vector types.
(compute_int_layout): Change bitpos from HOST_WIDE_INT to int.
(compute_fp_layout): Likewise.
(count_registers): Likewise.
(assign_int_registers): Likewise.
(assign_fp_registers): Likewise.
(assign_registers): Likewise.
(function_arg_record_value): Change size from HOST_WIDE_INT to int
and use CEIL_NWORDS to compute the number of registers.
(function_arg_union_value): Minor tweaks.
(function_arg_vector_value): Add slotno and named parameters, use
CEIL_NWORDS to compute the number of registers.
(sparc_function_arg_1): Rework handling of vector types.  Change
size from HOST_WIDE_INT to int.
(sparc_arg_partial_bytes): Rework handling of 32-bit ABI and deal
with vector types for the 64-bt ABI.
(sparc_function_arg_advance): Likewise.
(sparc_return_in_memory): Add reference to -fpcc-struct-return.
(sparc_struct_value_rtx): Return NULL_RTX instead of 0.
(sparc_function_value_1): Rework handling of vector types.  Change
size from HOST_WIDE_INT to int.

From-SVN: r266651
gcc/ChangeLog
gcc/config/sparc/sparc-modes.def
gcc/config/sparc/sparc.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sparc/20181129-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/sparc/20181129-2.c [new file with mode: 0644]