------- Comment #5 from ubizjak at gmail dot com 2007-12-10 17:12 ------- (In reply to comment #4)
> Fair enough. It looks that this problem is specific to Core2. Here are timings with 'gcc version 4.3.0 20071201 (experimental) [trunk revision 130554] (GCC)' on vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 CPU X6800 @ 2.93GHz stepping : 5 cpu MHz : 2933.389 cache size : 4096 KB -mtune=generic -m32 -O3: 40.763s [*] -mtune=generic -m32 -O2: 32.170s -mtune=core2 -m32 -O3 : 36.850s -mtune=core2 -m32 -O2 : 32.170s -mtune=generic -m64 -O3: 28.550s -mtune=generic -m64 -O2: 28.682s -mtune=core2 -m64 -O3 : 28.670s -mtune=core2 -m64 -O2 : 28.714s With __attribute__((noinline)) to longest_match(): -mtune=generic -m32 -O3: 30.658s -mtune=generic -m32 -O2: 32.154s -mtune=core2 -m32 -O3 : 30.690s -mtune=core2 -m32 -O2 : 32.247s And with FC6 system compiler 'gcc version 4.1.1 20061011 (Red Hat 4.1.1-30)': -mtune=generic -m32 -O3: 30.154s [**] -mtune=generic -m32 -O2: 30.275s Comparing [*] to [**], it _is_ a regression, at least on Core2. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33761