This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/18424] [3.4/4.0 Regression] ~6x+ performance regression, constant trees not being computed.
- From: "schlie at comcast dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Dec 2004 15:52:18 -0000
- Subject: [Bug middle-end/18424] [3.4/4.0 Regression] ~6x+ performance regression, constant trees not being computed.
- References: <20041111023501.18424.schlie@comcast.net>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From schlie at comcast dot net 2004-12-09 15:52 -------
Subject: Re: [3.4/4.0 Regression] ~6x+ performance
regression, constant trees not being computed.
Sorry, lost the fact that only a single bit needs to remain significant in
the resulting trasform:
(((long)x & (1 << 28)) == 0)
=>
((((byte)(sub-word (long)x 3) >> 4) & 1) == 0)
=>
((((byte)x' >> 4) & 1) == 0) :: (((byte)x' & 0x10) == 0)
> From: schlie at comcast dot net <gcc-bugzilla@gcc.gnu.org>
> i.e.
>
> (((long)x & (1 << 28)) == 0) => (((sub-word (long)x 3) >> 4) == 0)
> => (((byte)x >> 4) == 0)
>
> (then possibly => (((byte)x & 0x10) == 0) which I believe avr's
> back-end knows how to transform into a [bit-test x 5] )
>
> Might this be possible, as it would seem generally useful as well?
>
> Thanks again, -paul-
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18424