Die einzelnen Flags findest Du in der gcc Doku. Sind ca. ... uff ich weiss es gar nicht, ein paar Hundert halt...
Zum Kernel kompilieren nutze ich das, was der Kernel per Default verwendet. Alles andere ist unsupported, und kann wie chimaera schon sagte zu Datenverlust führen. Wenn der Compiler auf die lustige Idee kommt, dass Locking Sections ja eigentlich gar keinen Effekt auf den Codepfad haben (haben sie nicht...) und die wegoptimiert, dann hat man keinen Kernel sondern nur ein grosses Binärfile, dass wie ein Kernel aussieht und vielleicht im ersten Momenat auch funktioniert, aber nach 5 Minuten die Festplatte frisst.
Bei normalen Userland Programmen mache ich mir meistens nicht die Mühe an den Compilerflags zu tunen. Wirklich merken tut man es echt erst ab 20 oder 30 % Zuwachs und den gibt gcc einfach nicht her. Gentoo compiliert alles bei der Installation optimiert neu. Effekt: je nach Software ist es zwischen 2% schneller oder 2% langsamer als nicht optimierte Distris... Dafür verbrät man Stunden bei einem Update mit compilieren...
Wenn Du damit experimentieren willst (Userland!) dann ist -O3 -march=ARCHTYPE -mcpu=DEINECPU noch das sinnvollste. Damit erzeugt der Codegenerator nämlich speziell für die CPU angepassten Code (Cacheline Size usw.). Alles oberhalb von -O3 ist IMHO nicht nötig.
Ah, und nochwas: Der Intel Compiler erzeugt SSE Code. Auf den meisten AthlonXPs funktioniert das einwandfrei... Muss man halt entsprechende Compiler Optionen setzen...
Patrick