The kernel on i?86 again contains references to __udivdi3 because we no longer
simplify

unsigned int apply_frontend_param (unsigned int spi_bias)
{
  static const int ppm = 8000;
  spi_bias /= 1000ULL + ppm/1000;
  return spi_bias;
}

to return spi_bias / 1008.

In 4.4 we entered convert_to_integer with unfolded

  (long long unsigned int) spi_bias / ((long long unsigned int) ((int) ppm /
1000) + 1000)

while in 4.5 we have

  (long long unsigned int) spi_bias / 1008

I suppose this is a misssed-optimization fallout from the C const-expr changes.


-- 
           Summary: [4.5 Regression] No longer folds (unsigned int) ((long
                    long unsigned int) spi_bias / 1008)
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


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

Reply via email to