optimize 属性はGCC4.4以降にしか無い

そんなの関数のattributeとかoptimizeプラグマで一撃じゃないかと思ったら4.4以降だった。

意外な機能が最近まで無かったんだな。。
プラグマは通常の人間には縁の無い機能かもしれない。。実際gccでは非推奨で、大抵のプラグマの機能はattributeとして提供されている。
個人的には最初に触った32bitのCがCodeWarriorで、これにはpragma onceが実装されていたのでよく使っていた。

pragma onceは、ファイルがシンボリックリンクされていると扱いが難しいという微妙な問題がある。つまり、単にファイル名を比較するだけでは、"あるヘッダファイルが一度しか読まれない"ことは保証できない。正確にシンボリックリンクを取り扱う必要がある。
実はnmoshにもこの問題は有る。nmoshは任意のライブラリを任意のファイルに含むことができるので、本来はライブラリがシンボリックリンクされたものかどうかを調べて、同じライブラリを2度読みこまないように配慮する必要がある。通常のシチュエーションでは、シンボリックリンクされたライブラリはSRFIライブラリでしか使われないので、運用上は大きな問題では無い。
... プログラムの一部に異なる最適化オプションを適用する方法は、明示的にコマンドラインオプションを変えることしかなさそう。ただ、これはgcc4.5のリンク時最適化を使うときには多分うまく行かないので、attributeと両方指定するのが好ましいかもしれない。