------- 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 <[EMAIL PROTECTED]>
> Reply-To: <[EMAIL PROTECTED]>
> Date: 11 Nov 2004 02:49:28 -0000
> To: <[EMAIL PROTECTED]>
> 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

Reply via email to