------- Additional Comments From schlie at comcast dot net  2004-11-11 15:51 
-------
Subject: Re:  3.4.3 ~6x+ performance regression vs.
 3.3.1, constant trees not being computed.

> From: pinskia at gcc dot gnu dot org <[EMAIL PROTECTED]>
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2004-11-11
> 05:04 -------
> int_val & long_val == (long)(int_val) & long_val by what I had quoted in the
> other bug which you were
> talking about this.
> 
> Also, that simplification comes from combine and knowning that ((int_val &
> long_val) >> (log2
> long_val)) & 1 (where long_val > MAX_INT) is false (nothing else).  The
> problem on PPC and this one is
> the same.  Anyways as I had said before this is not a regression.

For what it's worth, comparable code for ppc (as << 23 is within int range):

int foo ( int a ) {

  if (a & (1L << 55))
      return 1;
    else
      return 2;

}

Which I suspect will show a difference, although due to ppc's multi-bit
shift capabilities, it's literal representation may be detectable during
instruction-generation/peep-hole-optimization, but not on machines where
multi-bit shifts are not as compactly represented, therefore rely on earlier
recognition and optimization as appears to be present in 3.3.4.

Regardless of ppc relative code quality, 3.4.3 is generating substantially
slower & larger code than 3.3.4 for avr with no corresponding target machine
description changes, therefore would think that 3.4.3 is clearly suffering
from an avr target code performance/quality regression, yes?

As another less dramatic example:

int foo ( long a ) {

  if (a & (1L << 23)) // where again (1L << 55) for ppc
      return 1;
    else
      return 2;

}

Also demonstrates 3.4.3's generation of inferior avr code, relative to
3.4.3, with no corresponding changes to it's target description; which
seems to be due to the constant expression (1L << 23) not being computed if
nested within a more complex expression, which 3.3.4 was capable of
detecting, but 3.4.3 isn't.






-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18424

Reply via email to