問題タブ [llvm-ir]
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.
llvm - LLVM のベクトル加算プログラム
LLVM で 5 要素のベクトル加算プログラムを作成しようとしていますが、結果のベクトル全体を返す方法がわかりません。私のコードは以下で、エラーは
LLVM エラー: main() の戻り値の型が無効です
llvm - llvm 変換パスによって行われた変更を確認する方法
Cプログラムで変換パス(デッドコードの削除など)によって行われた変更を確認する方法。ターミナルで次のコマンドを実行すると、IRを確認できる.bcファイルが作成されます。しかし、Cプログラムで -dce によって行われた変更を確認する方法。コマンド: $opt in.bc -o out.bc -dce
c++ - LLVMは構造値からi8 *を抽出します
バックエンドとして LLVM を使用してコンパイラを作成しています。フロントエンド (パーサーなど) を作成しましたが、今は岐路に立っています。
単一のフィールド、i8* 値、文字配列へのポインターを含む構造体 (%Primitive) があります。
コンパイラでは、 のインスタンスがPrimitive
スタック上で渡されます。関数を使用してこの文字配列を標準出力に書き込もうとしていputs
ますが、期待どおりには機能しません。
(ExecutionEngine または LLVM インタープリター プログラムを使用してlli
) コードを実行しようとすると、同じエラーが発生します。セグメンテーション違反。
エラーは、渡されたアドレスputs
が何らかの形で配列の最初の文字の ASCII 文字コードであるという事実にあります。渡されたアドレスは、8 ビット文字の配列へのポインターではなく、逆参照された文字列に等しい 8 ビット幅のポインターであるようです。
たとえば、 i8* メンバーが stringを@WritePrimitive
指すプリミティブで呼び出すと、文字列アドレスが である が呼び出されます。"hello"
puts
0x68
何か案は?
ありがとう
編集:あなたは正しかった、私はPrimitive
間違って初期化していました、私の新しい初期化関数は次のとおりです:
私はそれを逃しました、ありがとう!
optimization - 「clang」は一般的な部分式の削除を実行しますか?
opencl カーネルを llvm IR にコンパイルしようとしました。
以下の指示で
/home/mypass/llvm/Debug+Asserts/bin/clang -I/home/ian031545/libclc/generic/include -include clc/clc.h -Dcl_clang_storage_class_specifiers -target nvptx--nvidiacl -Xclang -mlink-bitcode-file - Xclang /ian031545/libclc/nvptx--nvidiacl/lib/builtins.bc -S -emit-llvm kernel.cl -o kernel.ll
openclカーネルの構造は次のようになります
そして、上記の命令を使用した後のllvm IRは次のようになります
なぜclangがここでこの種の最適化を行うのか知っている人はいますか? (フロントエンドと言います)
それとも一種の最適化ではないのでしょうか?
なぜclangがここでこれを行うのか、何の目的でわからないのですか?
上記の命令にフラグを追加して、これを行わないようにclangに依頼できますか?
前もって感謝します
gcc - DragonEgg は gcc で利用可能な最適化パスを実行して、llvm IR を生成できますか?
任意のコードで gcc 最適化パスを実行し、最終的に llvm IR を取得することは可能ですか? gcc で利用できるデッド ストアの削除を使用したい。llvm にもこのパスがあることは承知していますが、gcc ほど高度ではありません。
llvm - badref とはどういう意味ですか?
そのIRラインはどういう意味ですか
新しい関数を定義してファイルに書き込むため