diff options
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/config/arm/arm.c | 6 | 
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6082e7462e1..a6034e2a8e5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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>  	* 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 c1d1fa8e897..4129a99651f 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  | 

