コンパイラが最適化を行うのを助けるために、特定の変数の値が特定の範囲の特定の範囲内になければならないことをコンパイラに示す方法はありますか?私はコンパイル時にいくつかの変数の範囲を知ることを可能にするライブラリを書いています。コンパイラが最適化のためにこの情報をコンパイラに何らかの形で伝えることができればうれしいでしょう。私は、すべてのコンパイラが拡張機能として持つことができるように思えますが、すべてのコンパイラで機能するようにできない場合でも、コンパイラのサポートを追加したいと思います。見つかりました)。範囲情報をC++コンパイラに伝えるには?
if(x < COMPILE_TIME_MIN or x > COMPILE_TIME_MAX)
return;
// compiler will assume for code below that x is in range COMPILE_TIME_MIN..COMPILE_TIME_MAX
これは実行時のチェックです。コンパイラにの範囲を前提にしてのようなチェックをさせないようにするためのトリックがあるのでしょうか?
これはどのような最適化のタイプに役立ちますか? –
テンプレートを使用する場合、コンパイル時にすべての情報がわかっている場合は、実際にコンパイル時間チェックを行うことができます。 –
あなたは "the compiler"というフレーズを使用していますが、あなたは決して私たちに教えてくれません。おそらくg ++やVisual C++のいくつかのバージョンを意味するかもしれませんが、それははっきりしていません。一般的に、最適化は標準では扱われていないため、ここで行うことができるのは実装固有のものです。 –