https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88877
--- Comment #13 from Kamlesh Kumar <kamleshbhalui at gmail dot com> ---
(In reply to Alan Modra from comment #12)
> I suspect that the patch in comment #1 will break libcalls in other
> situations, eg.
>
> void f1 (int y)
> {
> extern double d;
> d = y;
> }
Thanks Alan for pointing out.
One other patch i am thinking of is
--- optabs.c 2019-01-18 23:28:09.822024657 +0530
+++ optabs.c 2019-01-18 23:28:44.805207684 +0530
@@ -4859,6 +4859,8 @@
libfunc = convert_optab_libfunc (tab, GET_MODE (to), GET_MODE (from));
gcc_assert (libfunc);
start_sequence ();
+ if(unsignedp && !is_narrower_int_mode (GET_MODE (from), SImode))
+ from = convert_to_mode (DImode, from, unsignedp);
value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
GET_MODE (to), from, GET_MODE (from));
insns = get_insns ();
Here, I am promoting mode early when we have signedness information.
Any thought on this?