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