On Tue, Jan 15, 2019 at 04:48:27PM +0530, kamlesh kumar wrote:
> Hi all,
> 
> Analysed it further and find out that
> function ' rs6000_promote_function_mode ' (rs6000.c) needs modifcation.
> """
> static machine_mode
> rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
>                               machine_mode mode,
>                               int *punsignedp ATTRIBUTE_UNUSED,
>                               const_tree, int)
> {
>   PROMOTE_MODE (mode, *punsignedp, type);
>   return mode;
> }
> """
> Here, This function is promoting the mode but
> it is not even touching 'punsignedp' and it is always initialized to zero
> by default.
> So in all cases 'punsignedp' remain zero even if it is for unsigned type.
> which cause the sign extension to happen  even for unsigned type.
> 
> is there any way to set 'punsignedp' appropriately here.

No.  The call to promote_function_mode in emit_library_call_value_1
does not pass type info (because it isn't available for libcalls).

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to