Mercurial > hg > CbC > CbC_gcc
diff gcc/config/spu/spu-c.c @ 19:58ad6c70ea60
update gcc from 4.4.0 to 4.4.1.
author | kent@firefly.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Thu, 24 Sep 2009 13:21:57 +0900 |
parents | a06113de4d67 |
children | 77e2b8dfacca |
line wrap: on
line diff
--- a/gcc/config/spu/spu-c.c Thu Sep 24 13:06:16 2009 +0900 +++ b/gcc/config/spu/spu-c.c Thu Sep 24 13:21:57 2009 +0900 @@ -32,7 +32,6 @@ #include "insn-codes.h" #include "recog.h" #include "optabs.h" -#include "spu-builtins.h" /* Keep the vector keywords handy for fast comparisons. */ @@ -101,8 +100,7 @@ #define SCALAR_TYPE_P(t) (INTEGRAL_TYPE_P (t) \ || SCALAR_FLOAT_TYPE_P (t) \ || POINTER_TYPE_P (t)) - spu_function_code new_fcode, fcode = - DECL_FUNCTION_CODE (fndecl) - END_BUILTINS; + int new_fcode, fcode = DECL_FUNCTION_CODE (fndecl) - END_BUILTINS; struct spu_builtin_description *desc; tree match = NULL_TREE; @@ -122,8 +120,15 @@ tree decl = spu_builtins[new_fcode].fndecl; tree params = TYPE_ARG_TYPES (TREE_TYPE (decl)); tree arg, param; + bool all_scalar; int p; + /* Check whether all parameters are scalar. */ + all_scalar = true; + for (param = params; param != void_list_node; param = TREE_CHAIN (param)) + if (!SCALAR_TYPE_P (TREE_VALUE (param))) + all_scalar = false; + for (param = params, arg = fnargs, p = 0; param != void_list_node; param = TREE_CHAIN (param), arg = TREE_CHAIN (arg), p++) @@ -155,10 +160,7 @@ parameter. */ if ((!SCALAR_TYPE_P (param_type) || !SCALAR_TYPE_P (arg_type) - || ((fcode == SPU_SPLATS || fcode == SPU_PROMOTE - || fcode == SPU_HCMPEQ || fcode == SPU_HCMPGT - || fcode == SPU_MASKB || fcode == SPU_MASKH - || fcode == SPU_MASKW) && p == 0)) + || (all_scalar && p == 0)) && !comptypes (TYPE_MAIN_VARIANT (param_type), TYPE_MAIN_VARIANT (arg_type))) break;