summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-24 15:25:40 +0000
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-24 15:25:40 +0000
commit32e5e2b7da355542041892462b42e9b7572746cd (patch)
tree9155d50ceef1a28592a2f9110bf1a75b85d79be4 /gcc
parent3323e9b1c788040290adbe78d9ebf3e6ac998084 (diff)
downloadgcc-32e5e2b7da355542041892462b42e9b7572746cd.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146734 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-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 8d9bc2b0176..30ad2682e09 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 1a99eeabb14..d853b1fbfc6 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 225147cfc6d..919f6a20231 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