This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ifcvt vs. expand_binop
- From: Oleg Endo <oleg dot endo at t-online dot de>
- To: Kyrill Tkachov <kyrylo dot tkachov at arm dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jeff Law <law at redhat dot com>, Richard Henderson <rth at redhat dot com>
- Date: Wed, 23 Sep 2015 02:27:00 +0900
- Subject: Re: ifcvt vs. expand_binop
- Authentication-results: sourceware.org; auth=none
- References: <1442928926 dot 2509 dot 23 dot camel at t-online dot de> <560163D6 dot 7050901 at arm dot com> <1442936932 dot 2509 dot 45 dot camel at t-online dot de>
On Wed, 2015-09-23 at 00:48 +0900, Oleg Endo wrote:
> I haven't checked the details. But I guess because expand_binop wants
> to somehow reuse the input and output it creates a DImode pseudo, puts
> the input there, does the DImode plus and the returned "target" is a
> SImode subreg of the DImode result. The strange thing is the first
> clobber (insn 50)... Maybe there's some other hidden problem in
> expand_binop which is triggered by ifcvt in this case.
OK ... this particular problem is in SH's md. The addsi3 expander
purposefully fails if the output reg is the same as the 1st input reg.
This was added because of some issues with LRA. Because of that
expand_binop_directly fails and a widened op is tried, which goes wrong
for some other reason (not going to investigate now).
I guess there's no need for the ifcvt patch in this case. Sorry for the
noise.
Cheers,
Oleg