aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1996-09-24 22:14:57 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1996-09-24 22:14:57 +0000
commiteaa9b4d930b9d7dea9cad856b0b091d7a35f017a (patch)
treefd5b95e29e6dd8f5165fe530d162c1d496acae5f
parentb939e29f99ac4321af1df9b1e4d88ba382a29728 (diff)
downloadgcc-eaa9b4d930b9d7dea9cad856b0b091d7a35f017a.zip
gcc-eaa9b4d930b9d7dea9cad856b0b091d7a35f017a.tar.gz
gcc-eaa9b4d930b9d7dea9cad856b0b091d7a35f017a.tar.bz2
Fix SI followed by 4 DFs under AIX
From-SVN: r12838
-rw-r--r--gcc/expr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 1b0ba5b..926a61c 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1785,8 +1785,12 @@ emit_group_load (x, y)
{
if (GET_MODE (target_reg) == GET_MODE (y))
source = y;
+ /* Allow for the target_reg to be smaller than the input register
+ to allow for AIX with 4 DF arguments after a single SI arg. The
+ last DF argument will only load 1 word into the integer registers,
+ but load a DF value into the float registers. */
else if (GET_MODE_SIZE (GET_MODE (target_reg))
- == GET_MODE_SIZE (GET_MODE (y)))
+ <= GET_MODE_SIZE (GET_MODE (y)))
source = gen_rtx (SUBREG, GET_MODE (target_reg), y, 0);
else
abort ();