re PR target/61853 (ICE: SIGSEGV in store_field)
PR target/61853 * config/pa/pa.c (pa_function_value): Directly handle aggregates that fit exactly in a word or double word. From-SVN: r215309
This commit is contained in:
parent
0e05c303e5
commit
cbf6bcbe72
@ -1,3 +1,9 @@
|
||||
2014-09-16 John David Anglin <danglin@gcc.gnu.org>
|
||||
|
||||
PR target/61853
|
||||
* config/pa/pa.c (pa_function_value): Directly handle aggregates
|
||||
that fit exactly in a word or double word.
|
||||
|
||||
2014-09-16 Ilya Tocar <ilya.tocar@intel.com>
|
||||
|
||||
* config/i386/driver-i386.c (host_detect_local_cpu): Detect lack of
|
||||
|
@ -9298,6 +9298,12 @@ pa_function_value (const_tree valtype,
|
||||
|| TREE_CODE (valtype) == COMPLEX_TYPE
|
||||
|| TREE_CODE (valtype) == VECTOR_TYPE)
|
||||
{
|
||||
HOST_WIDE_INT valsize = int_size_in_bytes (valtype);
|
||||
|
||||
/* Handle aggregates that fit exactly in a word or double word. */
|
||||
if ((valsize & (UNITS_PER_WORD - 1)) == 0)
|
||||
return gen_rtx_REG (TYPE_MODE (valtype), 28);
|
||||
|
||||
if (TARGET_64BIT)
|
||||
{
|
||||
/* Aggregates with a size less than or equal to 128 bits are
|
||||
@ -9306,7 +9312,7 @@ pa_function_value (const_tree valtype,
|
||||
memory. */
|
||||
rtx loc[2];
|
||||
int i, offset = 0;
|
||||
int ub = int_size_in_bytes (valtype) <= UNITS_PER_WORD ? 1 : 2;
|
||||
int ub = valsize <= UNITS_PER_WORD ? 1 : 2;
|
||||
|
||||
for (i = 0; i < ub; i++)
|
||||
{
|
||||
@ -9318,7 +9324,7 @@ pa_function_value (const_tree valtype,
|
||||
|
||||
return gen_rtx_PARALLEL (BLKmode, gen_rtvec_v (ub, loc));
|
||||
}
|
||||
else if (int_size_in_bytes (valtype) > UNITS_PER_WORD)
|
||||
else if (valsize > UNITS_PER_WORD)
|
||||
{
|
||||
/* Aggregates 5 to 8 bytes in size are returned in general
|
||||
registers r28-r29 in the same manner as other non
|
||||
|
Loading…
Reference in New Issue
Block a user