私は4.1.2を使用しています。誰も私のコードの中で最も見栄えの良いアイデアを持っていますか?一般的な原因の経験ですか?いくつかの醜いポインタキャスト(つまり、d =(double)(*(float *)p)ですが、ここでpはintへのポインタです)、私は取り組んでいますが、まだ運はありません。
価値があるのは、-O0が正しい答えを出していることです。助けてくれてありがとう。GCCは-O0と-O2で異なる数値結果を与えます
答えて
私はここに示されたように、厳格なエイリアシングの問題を確認したい: http://www.cellperformance.com/mike_acton/2006/06/understanding_strict_aliasing.html
あなたのコードはまったく同じものを知らなくても、の言及私容疑者エイリアシングの問題を作る「醜いポインタがキャスト」。
問題を実証したコードを提供した場合は、お手数をおかけしてお答えしやすくしてください。
投稿はhttp://stackoverflow.com/questions/83962/do-i-have-a-gcc-optimization-bug-or-ac-code-problemにも同様のプロブレンが表示されます – an0nym0usc0ward
。不良行は *(p1 + dcb.ntrc_hdr + r * NTW + t)= *(int *)&ftmp; –
皆さん、ありがとうございます。-fno-strict-aliasing(複数提案)は私の問題を解決しました。あなたのすべての協力に感謝します。
習得済みのこと:警告フラグ付きで常にコンパイルしてください。
スタックオーバーフローはフォーラムではありません。回答は、投票や編集などの理由で並べ替えられるため、他の回答への返信には使用しないでください。コメントを残すか、質問を編集してください。また、回答が原因で問題が解決された場合は、それを承認済みとしてマークしてください(投票カウンタの下の緑のチェックマークをクリックしてください)。役に立つ回答を投票することを忘れないでください! – ephemient
最小(非)動作例を提供できますか? – Gyom
-Wallと-Wextraでコンパイルしていますか? –
申し訳ありません、私はそれに取り組んでいます。重くなる。 –