This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Allow more PowerPC sibling calls


On Sat, Apr 09, 2011 at 12:21:46PM +0930, Alan Modra wrote:
> a) Allow sibling calls via function pointer.  At the time
>    rs6000_function_ok_for_sibcall was written, I don't think access to
>    arg types of function pointer calls was available in the target
>    hook/macro.
>
> +      /* Functions with vector parameters are required to have a
> +	 prototype, so the argument type info must be available
> +	 here.  */
> +      for (type = TYPE_ARG_TYPES (fntype);
> +	   type;
> +	   type = TREE_CHAIN (type))
> +	if (TREE_CODE (TREE_VALUE (type)) == VECTOR_TYPE
> +	    && (ALTIVEC_VECTOR_MODE (TYPE_MODE (TREE_VALUE (type)))
> +		|| VSX_VECTOR_MODE (TYPE_MODE (TREE_VALUE (type)))))
> +	  nvreg++;
> +
> +      for (type = TYPE_ARG_TYPES (TREE_TYPE (current_function_decl));
> +	   type;
> +	   type = TREE_CHAIN (type))
> +	if (TREE_CODE (TREE_VALUE (type)) == VECTOR_TYPE
> +	    && (ALTIVEC_VECTOR_MODE (TYPE_MODE (TREE_VALUE (type)))
> +		|| VSX_VECTOR_MODE (TYPE_MODE (TREE_VALUE (type)))))
> +	  nvreg--;

Could I request that you use FOREACH_FUNCTION_ARGS in these two cases?
The conversion is trivial, and avoiding more exposed TYPE_ARG_TYPES
calls is a good thing.

Thanks,
-Nathan


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]