GCC の__attribute__((pure))or__attribute__((const))で注釈を付ける基準を満たす C 関数があるとします。ただし、特定の入力パラメーターについては、関数が返す代わりに、またはそのようなものをlongjmp実行する場合があります。abortしたがって、通常「純粋な」関数と呼ぶものではありません。それでも、関数の戻り結果をいつキャッシュして再利用できるかを決定するために GCC がこれらの注釈のみを使用している場合は、これらの注釈をそのような関数に適用する可能性があります。返される場合、その関数は副作用のない、その引数の純粋な結果であると見なすことができます (さらに、pureまたはで注釈を付けているかどうかに応じて、おそらくグローバル状態const)。
そのような場合にこれらの注釈を適用できるかどうかについて、経験や知識を持っている人はいますか? (私は、いくつかのセットアップやコンパイルフラグで何がうまくいくかだけでなく、何がうまくいくかに興味があります。)