Welche Optimierung hättest du denn erwartet?

Mit dem Attribut kann man Funktionen kennzeichnen, die nur von ihren Argumenten abhängen. Dazu gehört, daß sie keine globale/statische Variable schreibt oder liest (falls sie nicht konstant ist), und keine Zeiger dereferenziert (der zeiger mag konstant sein, aber nicht das, worauf er zeigt,...). Zudem darf die Funktion keine andere Funktion aufrufen, die nicht auch CONST ist.

Ein Beispiel für so ne Funktion ist sin(). sin(x) hat immer den selben Wert, wenn x den selben Wert hat. sin() ist also eine Funktion im mathematischen Sinne. Wenn mehrfach in der Quelle sin(x) gebraucht wird, und der GCC nachweisen kann, daß x jeweils den gleichen Wert hat (damit der das kann, müssen auch einige Voraussetzungen erfüllt sein), kann er das Ergebnis der Berechnung wiederverwenden, falls er das als günstig erachtet.

const hat also keine Wirkung auf den Callee (aufgerufene Func), sondern bestenfalls auf den Caller (Aufrufer).

Ein inkorrekt angegebenes const lässt GCC inkorrekte Annahmen über die Quelle machen und kann zu fehlerhaftem Code führen.

Die Frage ist auch, was (und auch warum) du optimieren willst:
-- Programmspeicher
-- Datenspeicher
-- Laufzeit
-- Entwicklungszeit
-- Wartbarkeit
-- Portabilität

Wo was zu holen ist, sieht man am besten, wenn man nen Blick auf C-Quelle und s-File wirft.