問題タブ [llvm-codegen]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance - LLVM が Rust の想定組み込みを無視しているように見えるのはなぜですか?
LLVM はcore::intrinsics::assume(..)
呼び出しを無視しているようです。それらは最終的にバイトコードになりますが、結果のマシン コードは変更されません。たとえば、次の (無意味な) コードを見てみましょう。
これは、多くのアセンブリにコンパイルされます。
これで、 (これは夜間のみですxs
)の後に(容量で)いっぱいではないという仮定を導入できます。pop()
LLVM バイトコードに表示されているにもかかわらずassume
、アセンブリは変更されていません。ただし、次core::hint::unreachable_unchecked()
のような想定外のケースで分岐パスを作成するために使用する場合:
次の結果が得られます。
これは基本的にノーオペレーションですが、それほど悪くはありません。もちろん、次を使用して値をそのままにしておくこともできます。
これは、私たちが期待するものにコンパイルされます:
assume
LLVM が組み込みを無視しているように見えるのはなぜですか?
c++ - C/C++ ビルダーから実行可能コードを作成する LLVM
hereからllvmコードの例を取得しました。このコードにはいくつかの問題があり、私もそれらを修正しました。この時点では、変換された IR コードをダンプするだけです。私が求めているのは、bash で // を呼び出さずにコードから実行可能ファイルを作成することですC++
。どうすればそれを達成できますか?llvm-as
llc
clang
IR やバイトコードの中間ファイルも作成したくありません。
副次的な質問: ところで、LLVM の例を検索しているときに、多くの結果が IR の例です。C++ からの作成を教えるために結果を得るにはどうすればよいですか?