4

iPhone アプリで厄介な問題が発生しています。最適化レベルを「なし」以外に設定すると、計算エラーが発生します。これは、iPhone SDK 用にビルドする場合にのみ発生します (iPhone シミュレーターは常に問題ありません)。

リリース モードで最適化を無効にしてもかまいませんが、無効にするとアプリケーションが少し遅くなります。

アプリケーションは複雑であるため、積極的に最適化されすぎている部分を見つけるのは困難です。

ARM アーキテクチャ用のコードの最適化に問題があるように見えるので、問題は GCC 側にあると思います。

コードの特定の部分のみ最適化を無効にする方法はありますか? そのような問題にどのように対処しますか?

4

3 に答える 3

12

はい、それは完全に可能です。GCC にはそのための属性があります。

/* disable optimization for this function */
void my_function(void) __attribute__((optimize(0)));

void my_function(void) {
    /* ... */
}

その関数の最適化レベルを に設定し-O0ます。特定の最適化を有効/無効にすることができます:

/* disable optimization for this function */
void my_function(void) __attribute__((optimize("no-inline-functions")));

void my_function(void) {
    /* ... */
}
于 2009-01-11T17:35:31.610 に答える