問題タブ [llvm]

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 投票する
5 に答える
3255 参照

c++ - LLVMとは何ですか、またそれを使用してクロスプラットフォームのコンパイルを行うにはどうすればよいですか?

私はc++でのクロスプラットフォームコンパイルの苦痛を和らげるために使用できるllvmについてあちこち読んでいました、私はドキュメントを読み込もうとしていましたが、実際の開発問題でそれをどのように使用できるかわかりませんでした誰かが説明できますか簡単に言えば、どうすれば使用できますか?

0 投票する
5 に答える
16082 参照

string - LLVM で文字列データ型を実装するにはどうすればよいですか?

私は最近LLVMを見てきましたが、非常に興味深いアーキテクチャであることがわかりました。ただし、チュートリアルと参考資料を調べても、文字列データ型を実装する方法の例が見つかりません。

整数、実数、その他の数値型、さらには配列、関数、構造体に関するドキュメントはたくさんありますが、文字列については知る限り何もありません。バックエンドに新しいデータ型を追加する必要がありますか? 組み込みのデータ型を使用する方法はありますか? 任意の洞察をいただければ幸いです。

0 投票する
3 に答える
36140 参照

gcc - makefileを介してgccフラグを渡す

llvmを使用してパスを構築しようとしていますが、llvmとそれに関連するコンポーネントの構築が完了しました。ただし、 makefileを含むパスを作成するためのすべての手順を実行した後、makeを実行すると、次のようになります。

共有オブジェクトを作成する場合、「ローカルシンボル」に対する再配置R_X86_64_32は使用できません。-fPICで再コンパイルします

エラーメッセージをグーグルで検索して修正を見つけるのに苦労した後、これはllvmに固有のものではないことがわかりました。いくつかの解決策は、configureの実行中に「--enable-shared」を使用することを提案しましたが、それは私の場合には役に立ちませんでした。fPICエラーが示すように、今度はを使用してllvmを再構築したいと思います。しかし、makefileを使用してこれを行うにはどうすればよいですか?

0 投票する
2 に答える
1060 参照

llvm - llvm コードで発生する %"alloca point" 行の目的は何ですか?

最近、llvm-gcc によって作成された LLVM アセンブリを調べていて、その目的がよくわからないステートメントが繰り返し表示されていることに気付きました。

たとえば、次の C プログラム:

「llvm-gcc -emit-llvm -S」でコンパイルすると、次のコードが生成されます (無関係な部分は削除されています)。

行の目的に興味があります:

割り当て先の変数は二度と使用されず、ビットキャスト自体は無意味であるため、何もしないようです。私が考えることができるのは、後でコード生成/分析の目的で実際に nop として挿入され、コードの興味深い部分を示しているということだけです。

0 投票する
5 に答える
5523 参照

xcode - Xcode 3.2 + LLVM = デバッグ時にローカル シンボルがない

Xcode 3.2 を使用して 10.6 でビルドしている Mac OS X 10.5 用のプロジェクトがあります。デバッグ ビルドに GCC 4.2 を使用してブレークポイントにヒットすると、Xcode デバッガーはローカル変数情報を正常に表示します。LLVM GCC 4.2 または Clang LLVM を選択すると、ブレークポイントに到達したときにローカル シンボルが使用できず、自己またはその他のローカル シンボルを出力しようとすると、GDB は現在のコンテキストでシンボル「自己」がないと表示します。いずれの場合も、Generate debug infoオプションが設定されています。デバッグ構成が に設定され、10.5 SDK、アクティブなアーキテクチャのみをビルドするオプションが設定されています。GDB が起動すると、x86_64-apple-darwin として構成されていることがわかります。明らかな何かが欠けているに違いありません。LLVM コンパイラを使用しているときに GDB にローカル シンボルを表示させるにはどうすればよいですか?$(NATIVE_ARCH)

0 投票する
3 に答える
5289 参照

c - LLVM-リンクの問題

私は言語Timber用のLLVMコードジェネレーターを書いています。現在のコンパイラーはCコードを出力します。私の問題は、生成されたLLVMファイルからC関数を呼び出す必要があることです。たとえば、コンパイラにはリアルタイムのガベージコレクタがあり、新しいオブジェクトがヒープに割り当てられたときに通知する関数を呼び出す必要があります。これらの関数を生成されたLLVMファイルとリンクする方法がわかりません。

コード生成は、.llファイルを生成し、これらを手動でコンパイルすることによって行われます。

LLVMから外部関数を呼び出そうとしていますが、うまくいきません。例では、「puts」や「printf」などのC標準関数のみが呼び出されていることがわかりましたが、自家製の関数を呼び出したいと思います。私は立ち往生しています。

0 投票する
3 に答える
5374 参照

compiler-construction - LLVMを作成した理由は何ですか?

LLVMと通常のコンパイラの違いは何ですか?
それはより動的であり、したがって通常は非常に動的な言語(つまりJavascript)を静的バイナリコードにコンパイルするために使用できますか?作成の背後にある原則は何ですか?
コンパイラ用のDragonBookは知っていますが、LLVM用にそのようなものはありますか?

編集:私はこの興味深いプロジェクトを見つけました。

0 投票する
2 に答える
317 参照

objective-c - -forwardInvocationはClangで動作します-LLVMですが、GCCでは動作しません

次のコードは、メソッドをNSNumberインスタンスに転送するNSProxyサブクラスを実装します。

ただし、[nsproxy floatValue]を呼び出すと、GCC4.2では0.0になります。

LLVM-Clangでは、正解42.0が得られます。

何が起こっているのか分かりますか?

(ちなみに、これはガベージコレクションの下で実行されています)

0 投票する
3 に答える
29561 参照

64-bit - 64 ビット llvm-gcc で 32 ビットをビルドする

llvm-gcc の 64 ビット バージョンがありますが、32 ビットと 64 ビットの両方のバイナリをビルドできるようにしたいと考えています。これにはフラグがありますか?-m32 (通常の gcc で動作) を渡そうとしましたが、次のようなエラー メッセージが表示されます。

これは逆です。64 ビット プロセッサ用の 32 ビット コードを生成したい!

Ubuntu 9.04 x86-64 に付属する llvm-gcc 4.2 を実行しています。


編集: -v フラグを指定して llvm-gcc を実行したときの出力の関連部分は次のとおりです。

/usr/lib/llvm/gcc-4.2/libexec/gcc を調べて別のバイナリを見つけようとしましたが、そこにある唯一のディレクトリは x86_64-linux-gnu です。次に、適切なオプションを使用してソースから llvm-gcc をコンパイルする方法を検討します。

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

iphone - Xcode 3.2.1GCCCLANGおよびLLVMの謎解き

今週の新しいXcode3.2.1に含まれているreadmeには、次のように書かれています。

  • 静的コード分析は、[ビルド]メニューの[ビルドと分析]オプションまたはカスタムビルド設定を介して、XcodeIDEに完全に統合されています。
  • GCC 4.2は、10.6SDKのデフォルトのシステムコンパイラです。
  • オプションのLLVMコンパイラーは、2つの異なるフロントエンドを使用して含まれています。Clangコンパイラーは、コンパイル時間を大幅に改善する最先端のパーサーです。最大限の互換性を実現するために、GCCLLVMコンパイラーはGCC4.2パーサーを備えたLLVMバックエンドを利用します。
  • 新しいオプションのClang-LLVM1.0コンパイラーは、はるかに高速なClangフロントエンドパーサーをLLVMバックエンドコンパイラーと組み合わせて使用​​し、高速コンパイルと高速実行可能コードを実現します。GCC 4.2は依然としてシステムのデフォルトですが、多くのプロジェクトはこのコンパイラの組み合わせから恩恵を受けます。Clang-LLVM 1.0コンパイラは、C ++コードを検出すると、LLVM-GCC4.2の使用にフォールバックします。

当社には、デスクトップおよびiPhone向けの純粋なC、Objective-C、およびObjective-C++の既存のプロジェクトがあります。誰かがLLVM、GCC、CLANG、CLANG-LLVM、WordFooなどの違いを大まかに要約できますか?al。そして、それらが何であるか、そしていつ、そして何のために使用すべきかを説明しますか?より詳細な説明へのリンクがあるといいのですが、私は本当に高レベルの概要を探しています。