* arm.c (arm_return_in_memory): Add handling for vector return types.
From-SVN: r99666
This commit is contained in:
parent
ee218a9203
commit
30e5a19843
|
@ -1,3 +1,7 @@
|
||||||
|
2005-05-13 Josh Conner <jconner@apple.com>
|
||||||
|
|
||||||
|
* arm.c (arm_return_in_memory): Add handling for vector return types.
|
||||||
|
|
||||||
2005-05-13 David Ung <davidu@mips.com>
|
2005-05-13 David Ung <davidu@mips.com>
|
||||||
|
|
||||||
* config/mips/mips.h (processor_type): Add new PROCESSOR_4KP
|
* config/mips/mips.h (processor_type): Add new PROCESSOR_4KP
|
||||||
|
|
|
@ -2467,6 +2467,7 @@ arm_return_in_memory (tree type)
|
||||||
HOST_WIDE_INT size;
|
HOST_WIDE_INT size;
|
||||||
|
|
||||||
if (!AGGREGATE_TYPE_P (type) &&
|
if (!AGGREGATE_TYPE_P (type) &&
|
||||||
|
(TREE_CODE (type) != VECTOR_TYPE) &&
|
||||||
!(TARGET_AAPCS_BASED && TREE_CODE (type) == COMPLEX_TYPE))
|
!(TARGET_AAPCS_BASED && TREE_CODE (type) == COMPLEX_TYPE))
|
||||||
/* All simple types are returned in registers.
|
/* All simple types are returned in registers.
|
||||||
For AAPCS, complex types are treated the same as aggregates. */
|
For AAPCS, complex types are treated the same as aggregates. */
|
||||||
|
@ -2481,6 +2482,11 @@ arm_return_in_memory (tree type)
|
||||||
return (size < 0 || size > UNITS_PER_WORD);
|
return (size < 0 || size > UNITS_PER_WORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* To maximize backwards compatibility with previous versions of gcc,
|
||||||
|
return vectors up to 4 words in registers. */
|
||||||
|
if (TREE_CODE (type) == VECTOR_TYPE)
|
||||||
|
return (size < 0 || size > (4 * UNITS_PER_WORD));
|
||||||
|
|
||||||
/* For the arm-wince targets we choose to be compatible with Microsoft's
|
/* For the arm-wince targets we choose to be compatible with Microsoft's
|
||||||
ARM and Thumb compilers, which always return aggregates in memory. */
|
ARM and Thumb compilers, which always return aggregates in memory. */
|
||||||
#ifndef ARM_WINCE
|
#ifndef ARM_WINCE
|
||||||
|
|
Loading…
Reference in New Issue