This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] PR target/21128



On Apr 22, 2005, at 4:58 AM, Paul Brook wrote:


On Friday 22 April 2005 02:37, Josh Conner wrote:
On Apr 21, 2005, at 5:37 PM, Paul Brook wrote:
	else
		return in memory

You are changing the ABI for vector types under the APCS. Given we already do complex types "wrong" it may be desirable to preserve this behaviour for vectors < 4 words.

Makes sense. Did you mean <= 4 words, by any chance?

Yes, I did.


Paul

Whoops - I forgot to include an updated ChangeLog entry last time...


Thanks -

Josh
~~~~

2005-04-20 Josh Conner <jconner@apple.com>

	PR target/21128
	* arm.c (arm_return_in_memory): Add handling for vector
	return types.

Index: arm.c
===================================================================
RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.c,v
retrieving revision 1.444
diff -c -3 -p -r1.444 arm.c
*** arm.c       19 Apr 2005 22:12:59 -0000      1.444
--- arm.c       23 Apr 2005 00:54:37 -0000
*************** arm_return_in_memory (tree type)
*** 2338,2343 ****
--- 2338,2344 ----
    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. */
*************** arm_return_in_memory (tree type)
*** 2352,2357 ****
--- 2353,2363 ----
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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]