really, we should have compiler targets for optimizing on the P4 'netburst' CPUs and another for the core processors as they are all pipelined differently. as it turns out, however, the core 2 and core I3/5/7 do pretty well with pentium-II and -III style optimization strategies, as well as, of course, the x86_64 support.
gcc does have compiler flags (read up on -march & -mtune) for optimizing to specific families of Intel CPU's. The problem is that the performance improvement of tuning say an i7 to it's family(-march=corei7) vs a generic i686 tune(-march=i686) is minimal (less then 1% in benchmarks I've seen) and not worth the extra complexity of managing entire branches of packages for specific processor families. It makes sense however for the x86 vs x86-64 as there's some pretty fundamental differences there.