This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: new sign/zero extension elimination pass
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: Paolo Bonzini <bonzini at gnu dot org>
- Cc: Tom de Vries <tom at codesourcery dot com>, gcc-patches at gcc dot gnu dot org, Bernd Schmidt <bernds at codesourcery dot com>
- Date: Wed, 3 Nov 2010 19:45:53 +0100
- Subject: Re: new sign/zero extension elimination pass
- References: <4CBC698B.3080204@codesourcery.com> <4CCDAD7E.9040005@codesourcery.com> <AANLkTikbytWHCSiV2+hKa2MysMf1rdMryymp8FOc-KRT@mail.gmail.com>
> No problem, I discovered it the hard way (and had to rewrite fwprop's
> dataflow to work around it).
The other ZEE pass uses UD/DU chains though. The now removed SEE pass used
them as well.
> I think you're right, as Joseph confirmed. There is one occurrence of
> flag_wrapv in simplify-rtx.c and zero in combine.c, so this means that
> indeed RTL treats PLUS/MINUS as wrapping. I remember seeing more but
> my memory must be at fault. Since it's so limited, the one occurrence
> that is there should be removed.
They were introduced to fix PR rtl-optimization/23047.
> If you can fix the performance issues that Eric has without a rewrite,
> and if it's not quadratic, I would have no problem at all with RTL.
Yes, I also think that the pass makes sense at the RTL level, as it does
something that cannot be done (easily) elsewhere. On the other hand, it's
unfortunate to have 2 different ZEE passes.
--
Eric Botcazou