https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103344
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Again you misunderstood. There is a cost model for doing the multiple shift from the division and if says the function call will be faster, it uses that. There is also a trade off with respect to code size too. This is one area where gcc could be improved in printing out what choices it made and why but that is a different issue. Again how do you know if the function will be slower than the multiple and shift here?