diff options
author | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-24 15:25:40 +0000 |
---|---|---|
committer | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-24 15:25:40 +0000 |
commit | 32e5e2b7da355542041892462b42e9b7572746cd (patch) | |
tree | 9155d50ceef1a28592a2f9110bf1a75b85d79be4 /gcc | |
parent | 3323e9b1c788040290adbe78d9ebf3e6ac998084 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/iq2000/iq2000.c | 11 | ||||
-rw-r--r-- | gcc/config/iq2000/iq2000.md | 2 |
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 |