[Bug middle-end/18424] 3.4.3 ~6x+ performance regression vs 3.3.1, constant trees not being computed.
schlie at comcast dot net
gcc-bugzilla@gcc.gnu.org
Thu Nov 11 03:15:00 GMT 2004
------- Additional Comments From schlie at comcast dot net 2004-11-11 03:15 -------
Subject: Re: 3.4.3 ~6x+ performance regression vs
3.3.1, constant trees not being computed.
Yes but regardless of the size of the constant 1:
if (a & (1L << 24)) or (a & (1 << 24)) yields the same results,
and further, if a simpler expression containing the same constant
Sub-expression is used, it properly computes the constant expression:
int foo (int a) {
a = a + (1 << 24); // apparently simple enough to compute (1 << 24)
if (a & (1 << 24)) { // then utilized here, which yields 0
return 1;
else
return 2;
}
=> return 2;
Which implies that it is not a back-end issue, but that (1 << 24)
is not being calculated as a constant expression if nested within
a more complex expression for some reason, I believe?
although the PPC may have optimized it away in other ways as it has
a more powerful shift instruction, but should not be a back-end thing,
as the embedded constant expression was properly computed and applied
in 3.3.x.
> From: pinskia at gcc dot gnu dot org <gcc-bugzilla@gcc.gnu.org>
> Reply-To: <gcc-bugzilla@gcc.gnu.org>
> Date: 11 Nov 2004 02:49:28 -0000
> To: <schlie@comcast.net>
> Subject: [Bug middle-end/18424] 3.4.3 ~6x+ performance regression vs 3.3.1,
> constant trees not being computed.
>
>
> ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-11
> 02:49 -------
> I amost think the size of long changed for 3.4.0 for avr to 32bits.
>
> --
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18424
>
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18424
More information about the Gcc-bugs
mailing list