On Sun, Apr 12, 2009 at 9:56 AM, Thomas Neumann <tneum...@users.sourceforge.net> wrote: > Curious. I ran both g++ variants in oprofile, and then compared the > generated assembler code for the most critical functions. > > The top 1 function in both cases is pointer_set_insert, and there the > assembler code is 100% identical (module one choice between r14 and r15). > > The second most critical function in the gcc-in-cxx build is walk_tree_1, > which is only place 4 in mainline gcc. > There the code seems to be identical, too, except for code layout: The > compiler arranges the code in a different order, and apparently has > different a different branch prediction. The non-branching code is nearly > identical, too. > The "hottest" assembler instructions in walk_tree_1 are memory accesses, > apparently the mainline version causes slightly less cache misses or better > prediction? (my interpretation, not measured yet) > > I am a bit unsure how to proceed. The gcc-in-cxx assembler code looks ok, as > it is nearly identical to the mainline code. The main differences are in the > code/branch layout, and I wouldn't know how to debug this.
I suggest to compare against trunk at the latest merge point for gcc-in-cxx (which was likely before the alias-improvements branch merge which brought quite some changes in the tree verifiers and improved compile-time overall). Or just ask Ian to merge again from trunk ... Richard. > Thomas > > > >