On Mon, Nov 17, 2003 at 11:36:47PM +1030, Alan Modra wrote: > On Mon, Nov 17, 2003 at 11:42:34AM +0100, Gabriel Paubert wrote: > > What does it do about floating point constants? > > Puts them in the TOC, then accesses with, eg. > > lfd f1,some_offset(r2) > > > Recent versions of GCC have an annoying bug which makes many > > (but not all) floating-point constant load take 3 instructions > > in 32 bit mode (never tried 64 bit, no hardware): > > > > li rx,[EMAIL PROTECTED]@ > > la ry,[EMAIL PROTECTED](rx) > > lfd frz,0(ry) > > Hmm, that does seem a bit poor.
With -fpic this gives: lwz 9,[EMAIL PROTECTED](30) lfd 0,0(9) for every single damned FP constant in the code (double indirection just for the sake of making the code slower and both i- and d-cache footprints bigger). With -fPIC it is more or less the same: lwz 31,.LC13-.LCTOC1(30) lfd 8,0(31) at least I'm happy to see that PPC64 looks much better in this respect. Anyway, I'm going to do a few more tests with more recent GCC snapshots (building from gcc's CVS right now) before sending a report to gcc mailing lists. Gabriel