問題タブ [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.

0 投票する
1 に答える
442 参照

performance - LLVM が Rust の想定組み込みを無視しているように見えるのはなぜですか?

LLVM はcore::intrinsics::assume(..)呼び出しを無視しているようです。それらは最終的にバイトコードになりますが、結果のマシン コードは変更されません。たとえば、次の (無意味な) コードを見てみましょう。

これは、多くのアセンブリにコンパイルされます。

これで、 (これは夜間のみですxs)の後に(容量で)いっぱいではないという仮定を導入できます。pop()

LLVM バイトコードに表示されているにもかかわらずassume、アセンブリは変更されていません。ただし、次core::hint::unreachable_unchecked()のような想定外のケースで分岐パスを作成するために使用する場合:

次の結果が得られます。

これは基本的にノーオペレーションですが、それほど悪くはありません。もちろん、次を使用して値をそのままにしておくこともできます。

これは、私たちが期待するものにコンパイルされます:

assumeLLVM が組み込みを無視しているように見えるのはなぜですか?

0 投票する
0 に答える
291 参照

c++ - C/C++ ビルダーから実行可能コードを作成する LLVM

hereからllvmコードの例を取得しました。このコードにはいくつかの問題があり、私もそれらを修正しました。この時点では、変換された IR コードをダンプするだけです。私が求めているのは、bash で // を呼び出さずにコードから実行可能ファイルを作成することですC++。どうすればそれを達成できますか?llvm-asllcclang

IR やバイトコードの中間ファイルも作成したくありません。

副次的な質問: ところで、LLVM の例を検索しているときに、多くの結果が IR の例です。C++ からの作成を教えるために結果を得るにはどうすればよいですか?