From: jules Date: Fri, 13 May 2005 16:44:16 +0000 (+0000) Subject: * arm.c (arm_return_in_memory): Add handling for vector return types. X-Git-Tag: upstream/4.9.2~61230 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3582e6a89bc272c49fbb3b6f39b7854cad7ef44;p=platform%2Fupstream%2Flinaro-gcc.git * arm.c (arm_return_in_memory): Add handling for vector return types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99666 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6082e74..a6034e2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2005-05-13 Josh Conner + + * arm.c (arm_return_in_memory): Add handling for vector return types. + 2005-05-13 David Ung * config/mips/mips.h (processor_type): Add new PROCESSOR_4KP diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index c1d1fa8..4129a99 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -2467,6 +2467,7 @@ arm_return_in_memory (tree type) HOST_WIDE_INT size; if (!AGGREGATE_TYPE_P (type) && + (TREE_CODE (type) != VECTOR_TYPE) && !(TARGET_AAPCS_BASED && TREE_CODE (type) == COMPLEX_TYPE)) /* All simple types are returned in registers. 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); } + /* 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 ARM and Thumb compilers, which always return aggregates in memory. */ #ifndef ARM_WINCE