From: nickc Date: Fri, 24 Apr 2009 15:25:40 +0000 (+0000) Subject: * config/iq2000/iq2000.c (function_arg): Handle TImode values. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=32e5e2b7da355542041892462b42e9b7572746cd;p=thirdparty%2Fgcc.git * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d9bc2b01765..30ad2682e09e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-04-24 Nick Clifton + + * 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 * config/s390/constraints.md ('I', 'J'): Fix condition. diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c index 1a99eeabb14c..d853b1fbfc65 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 225147cfc6d9..919f6a20231d 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