2

GCCコンパイラを介してコンパイルするときに、C++コード内の特定のポインタを__制限することの影響を調査しました。

ランタイムがまったく同じであるだけでなく、実行可能ファイルも変更されていないようで、バイト単位のサイズは以前とまったく同じであることが判明しました。

私のGCCバージョンは

gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)

また、解析時にこのC ++拡張機能を受け入れますが、コードをアセンブルするときにそれを考慮していないようです。したがって、理由があるか、コンパイラがこのセマンティック情報の使用方法を知らないか、この情報の処理が完全に無効になっています。

このコードは多くの数値計算を実行します。テスト目的で有効にしたいと考えています。手伝ってくれますか?

4

1 に答える 1

7

restrict修飾子は基本的に、ユーザーがコンパイラーが特定のエイリアシング関連の最適化を実行するのを支援する方法です。これらは、これらの最適化の機会がコードにすでに存在する場合にのみ効果があります。したがってrestrict、コンパイラが以前に「より安全な」(最適化されていない)コード生成を使用する必要があった状況で、これらを使用すると有効になります。他のコンテキストrestrictでは、まったく効果がありません。

restrictそのため、コードにいくつかの修飾子を追加しました。しかし、それらのいずれかが実際に重要なコンテキストで使用されましたか?つまり、実際にコンパイラーにコードを最適化するためのより多くの自由を与える場所で使用されましたか?そうでない場合は、コードが変更されることを期待することはできません。

于 2010-08-19T15:03:03.313 に答える