GCC C ++コンパイラは__Restrict-ステートメントを考慮していますか?
-
29-09-2019 - |
質問
GCCコンパイラを介してコンパイルするときに、C ++ - コードで特定のポインターを制限する効果を調査しています。
実行時間がまったく同じままであるだけでなく、実行可能ファイルが変更されていないようで、バイトのサイズは以前とまったく同じです。
私のGCCバージョンはそうです
gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)
また、このC ++ - 解析時に拡張機能を受け入れますが、コードを組み立てるときはそれを考慮していないようです。そのため、コンパイラはこのセマンティック情報の使用方法がわからないか、この情報の処理が完全に無効になっていることがあります。
コードは多くの数のクランチを実行します。テストの目的で有効にしたいと考えています。手伝ってくれますか?
解決
restrict
予選は基本的に、ユーザーがコンパイラが特定のエイリアシング関連の最適化を実行するのを支援する方法です。これらの最適化の機会がすでにコードに存在している場合にのみ効果があるので、使用する restrict
コンパイラが以前に「より安全な」(最適ではない)コード生成を使用する必要がある状況でそれらを有効にするだけです。他のコンテキストで restrict
まったく効果がありません。
それで、あなたはいくつか追加しました restrict
コードの予選。しかし、それらのいずれかが実際に重要なコンテキストで使用されていましたか?そうでない場合、コードが変更されることを期待することは想定されていません。
所属していません StackOverflow