On Wed, Sep 14, 2005 at 02:15:43PM -0300, Alexandre Oliva wrote: > On Sep 13, 2005, Daniel Jacobowitz <[EMAIL PROTECTED]> wrote: > > > This bit binutils, in the form of a crash in a hash function on > > Solaris. I think that was pointer subtraction, rather than comparison, > > however. > > > Perhaps someone who remembers this problem more clearly than > > I do can chip in if I've gotten it totally wrong. > > Yep, it was pointer subtraction, and GCC actually optimized the > division, that could in theory be assumed to be exact, into a > multiplication by a large constant (aah, the wonders of modulo > arithmetics :-), and that's what broke some sorting function on > Solaris. And I was the lucky guy who got to debug that :-)
People that don't like the GCC optimization should be prepared to take a very large speed penalty on inner loops that have a pointer subtraction for an array or std::vector of objects whose size is not a power of two. There are processors where integer division is 20x slower than integer multiplication, or even more.