This is the mail archive of the
mailing list for the GCC project.
Re: Bogus libcalls with multiple REG_RETVAL notes
- To: Bernd Schmidt <bernds at redhat dot co dot uk>
- Subject: Re: Bogus libcalls with multiple REG_RETVAL notes
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Fri, 15 Sep 2000 10:06:55 -0600
- cc: gcc-patches at gcc dot gnu dot org
- Reply-To: law at cygnus dot com
In message <Pine.LNX.firstname.lastname@example.org>you
> Currently, gcc will in most cases generate libcalls incorrectly: it creates
> two insns with a REG_RETVAL note. One of them is the weird "equal form"
> generated in calls.c, and the other one the regular one generated by the
> callers of emit_library_call.
> AFAICT the code in emit_library_call_value_1 to create the reg note with
> the equal form is totally bogus and should be deleted. That gives us
> rtl that looks similar to what earlier compilers emitted.
> I've found one place where we don't create a libcall sequence after
> calling emit_library_call, and that's in prepare_float_lib_cmp. That's
> a possibility for further optimization.
> * calls.c (emit_library_call_value_1): Don't create a libcall
> sequence here; our caller will in most cases do it.
Ironic -- I briefly looked at this yesterday for a different port -- the
extra libcall notes just looked weird and they were in an area where we
were somehow getting things wrong.
I removed the libcall block created by emit_library_call_value_1 in the hope
that it would solve my problem, but it didn't and I tabled the change until I
could look at it in more detail. Thanks for unknowingly taking a TODO off
my list :-)
Approved, please install.