mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-11 06:20:25 +08:00
re PR target/28207 (128-bit IBM long double misaligned on stack)
PR target/28207 * config/rs6000/rs6000.c (function_arg_boundary): Double-word align 128-bit IBM long doubles for ABI_V4. From-SVN: r115170
This commit is contained in:
parent
60410f3ad2
commit
84e9ad15fa
@ -1,3 +1,9 @@
|
||||
2006-07-04 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR target/28207
|
||||
* config/rs6000/rs6000.c (function_arg_boundary): Double-word align
|
||||
128-bit IBM long doubles for ABI_V4.
|
||||
|
||||
2006-07-03 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* tree.c (range_in_array_bounds_p): New predicate.
|
||||
|
@ -4485,7 +4485,12 @@ function_arg_padding (enum machine_mode mode, tree type)
|
||||
of an argument with the specified mode and type. If it is not defined,
|
||||
PARM_BOUNDARY is used for all arguments.
|
||||
|
||||
V.4 wants long longs to be double word aligned.
|
||||
V.4 wants long longs and doubles to be double word aligned. Just
|
||||
testing the mode size is a boneheaded way to do this as it means
|
||||
that other types such as complex int are also double word aligned.
|
||||
However, we're stuck with this because changing the ABI might break
|
||||
existing library interfaces.
|
||||
|
||||
Doubleword align SPE vectors.
|
||||
Quadword align Altivec vectors.
|
||||
Quadword align large synthetic vector types. */
|
||||
@ -4493,7 +4498,11 @@ function_arg_padding (enum machine_mode mode, tree type)
|
||||
int
|
||||
function_arg_boundary (enum machine_mode mode, tree type)
|
||||
{
|
||||
if (DEFAULT_ABI == ABI_V4 && GET_MODE_SIZE (mode) == 8)
|
||||
if (DEFAULT_ABI == ABI_V4
|
||||
&& (GET_MODE_SIZE (mode) == 8
|
||||
|| (TARGET_HARD_FLOAT
|
||||
&& TARGET_FPRS
|
||||
&& mode == TFmode)))
|
||||
return 64;
|
||||
else if (SPE_VECTOR_MODE (mode)
|
||||
|| (type && TREE_CODE (type) == VECTOR_TYPE
|
||||
|
Loading…
x
Reference in New Issue
Block a user