aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2009-04-24 15:25:40 +0000
committerNick Clifton <nickc@gcc.gnu.org>2009-04-24 15:25:40 +0000
commitac4fc08a0a80b216618a84b9452b38d5a22e82de (patch)
tree9155d50ceef1a28592a2f9110bf1a75b85d79be4
parente34ccb4cd1f39f31ff1bd7374ece738ec7521d74 (diff)
downloadgcc-ac4fc08a0a80b216618a84b9452b38d5a22e82de.zip
gcc-ac4fc08a0a80b216618a84b9452b38d5a22e82de.tar.gz
gcc-ac4fc08a0a80b216618a84b9452b38d5a22e82de.tar.bz2
iq2000.c (function_arg): Handle TImode values.
* config/iq2000/iq2000.c (function_arg): Handle TImode values. (function_arg_advance): Likewise. * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the 5th alternative. From-SVN: r146734
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/iq2000/iq2000.c11
-rw-r--r--gcc/config/iq2000/iq2000.md2
3 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8d9bc2b..30ad268 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-04-24 Nick Clifton <nickc@redhat.com>
+
+ * config/iq2000/iq2000.c (function_arg): Handle TImode values.
+ (function_arg_advance): Likewise.
+ * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
+ 5th alternative.
+
2009-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/constraints.md ('I', 'J'): Fix condition.
diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c
index 1a99eea..d853b1f 100644
--- a/gcc/config/iq2000/iq2000.c
+++ b/gcc/config/iq2000/iq2000.c
@@ -1175,6 +1175,11 @@ function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
cum->arg_words += 2;
break;
+ case TImode:
+ cum->gp_reg_found = 1;
+ cum->arg_words += 4;
+ break;
+
case QImode:
case HImode:
case SImode:
@@ -1245,6 +1250,12 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, const_tree type,
case DImode:
cum->arg_words += (cum->arg_words & 1);
regbase = GP_ARG_FIRST;
+ break;
+
+ case TImode:
+ cum->arg_words += (cum->arg_words & 3);
+ regbase = GP_ARG_FIRST;
+ break;
}
if (*arg_words >= (unsigned) MAX_ARGS_IN_REGISTERS)
diff --git a/gcc/config/iq2000/iq2000.md b/gcc/config/iq2000/iq2000.md
index 225147c..919f6a2 100644
--- a/gcc/config/iq2000/iq2000.md
+++ b/gcc/config/iq2000/iq2000.md
@@ -737,7 +737,7 @@
"* return iq2000_move_1word (operands, insn, FALSE);"
[(set_attr "type" "move,load,arith,arith,load,load,store,store,xfer,xfer,move,move,move,move")
(set_attr "mode" "SI")
- (set_attr "length" "4,8,4,8,4,8,4,8,4,4,4,4,4,4")])
+ (set_attr "length" "4,8,4,8,8,8,4,8,4,4,4,4,4,4")])
;; 16-bit Integer moves