問題タブ [llvm-clang]

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

clang - visit* メソッド内のステートメントの基本ブロック ID を取得する方法

visit* メソッドをオーバーライドするときに、ステートメントの基本ブロック ID (blockID) を取得するにはどうすればよいですか?

たとえば、以下に示す基本ブロックの場合、VisitIfStmt() が訪問されたとき、この訪問メソッド内で blockID を取得する方法は?
[B4]
1: x == 0
T: if [B4.1]
Preds (1): B6
Succs (2): B3 B2

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

c++ - Apple llvm 4.1 で libc++ と libstc++ を使用する場合の c++11 サポートの正確な違いは?

Apple LLVMコンパイラに同梱されているlibc ++とlibstdc ++を使用する場合のc ++ 11サポートの違いを判断する方法を誰か提案できますか?

特に、私は現在、Xcode 4.5.2 に同梱されている LLVM 4.1 を使用しています。

おそらく、答えは、clang がこのバージョンで提供する c++11 サポートのレベルと、4.1 に同梱されている libc++ と libstdc++ のバージョンに部分的に依存します。

私の一般的な感覚では、libc++ を使用する場合、最近の c++11 のサポートは「ほぼ完全」ですが、libstdc++ に切り替えると何かが失われますが、何を理解できません - いくつかの単純な c++11 機能のようです両方でうまく動作するようにします。

gcc 4.8 に同梱されている libstdc++ の c++11 サポートは非​​常に優れているように感じますが、llvm 4.1 に同梱されている libstdc++ が古いかどうかはわかりません。

また、osx または ios 6.01 用にコンパイルする場合、c++11 サポートのレベル (libc++ で llvm 4.1 を使用) に違いはないように感じますが、私は肯定的ではありません。

これらすべてを理解する方法について何か提案はありますか?

[コンテキスト: アップストリームの依存関係により、libc++ ではなく libstdc++ にリンクする必要がある場合があるため、何を失う可能性があるかを把握したい]

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

llvm - llvm/optで正規帰納法変数を見つけるためのindvars最適化パスの使用

L-> getCanonicalInductionVariable()を使用して、参照L *が与えられた場合に、ループパスのループの正規帰納法変数を取得しようとしています。

しかし、私が遭遇するループの多くは標準形ではありません。例:

llvmのドキュメントhttp://llvm.org/docs/Passes.html#indvars-canonicalize-induction-variables)によると、「opt」で「indvars」パスを使用すると、ループの帰納法変数を標準形に変換することでトリックを実行できます。 。私は走ってみました:

ここで、「test.bc」は上記のforループのビットコード形式です。しかし、indvarsパスは効果がないようです(ここではアセンブリコードを省略しましたが、チェックしました)。

後で、L-> getCanonicalInductionVariable()を使用するとnullが返されます。また、「loops」、「loop-simplify」などの他のパスで「indvars」を使用してみましたが、役に立ちませんでした。

これを機能させる方法について何かアイデアはありますか?

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

llvm - clang を使用して Apache httpd を LLVM バイトコードにコンパイルする

clangを使用してhttpdを LLVM バイトコードにコンパイルしたいと考えています。まず、 gccを使用してコンパイルしてみました。そのために、次のことを行いました。

そして無事インストール!

今、私はそれをclangでコンパイルしてみます。そのために、次のことを行います:

そして、構成自体が失敗します。-O4 または -emit-llvm を CFLAGS として使用すると LLVM がバイトコードを出力することを読んだので、 -O4を選択しました (どちらも機能しません)。

これは私が得るエラーです:

これは、リンカが LLVM バイトコード ファイルをリンクできないことに関連していますか?

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

llvm - clangの-O4に対してどのような最適化パスが実行されますか?

パフォーマンスがclang-o4で実行するのと同じであると想定されるjitコンパイラを実装しようとしています。-o4を指定してclangによって呼び出される最適化パスのリストを簡単に取得できる場所はありますか?

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

llvm - llvm で jited コードを実行しようとすると、シンボル __Unwind_resume および __assert_fail が見つからない

ここでは、clang-llvm インタープリター コードを適応させて、特に stl ベクトルと c++ 文字列を使用する c++ コードを実行しようとしています。これにより、未解決のシンボルが多数発生し、それらを除去した後も、まだ __Unwind_resume と __assert_fail でスタックしています。

これを解決するための助けをいただければ幸いです。

注: jit する必要があるコードのインクルードに問題があったため、clang++ を実行して前処理を行い、その出力はローカル インクルードに依存しない単一の C++ ファイルです。それがいくつかの問題を引き起こしたかどうかはわかりません。

注 2: これは Ubuntu 12.01 上にあり、clang+llvm 3.1 と gcc 4.6.3 の両方で clang インタープリターをコンパイルしようとしました。

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

clang-static-analyzer - llvm で人間が読める中間コードを生成する方法

私は、clang を使用して人間が読める形式で抽象構文ツリーを出力したいと考えています。バイナリ バイトコードは必要ありません。

利用した:

  1. astプリント
  2. ast ダンプ

しかし、彼らは読めないコードを提供しています..

誰かが助けてくれますか?

0 投票する
4 に答える
940 参照

objective-c - Xcode での有効なファイル参照のコンパイル時チェック

コードで参照されているファイルが有効であることを Xcode コンパイラに確認させることはできますか?

NSString を介してプログラムでファイルを自然に参照する場合、Cocoa 開発には複数のポイントがあります。

これらのファイル参照が有効かどうかをコンパイル時にチェックする方法はありますか?

上記の方法を使用した後、参照ファイルの名前を変更してしまうことがよくありますが、コードで名前を変更するのを忘れています。すべてが問題なく準拠しており、このファイルにアクセスするアプリの部分にたまたまアクセスした場合にのみ、バグが明らかになります.

この種のエラーを回避するために人々が使用する別のアプローチまたは手法はありますか?
文字列を介してファイル名を参照することは、非常に壊れやすいと感じます。

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

c++ - libclang を使用して、特定の警告を有効または無効にするにはどうすればよいですか?

libclang API を使用して、C++ プロジェクトをプログラムで分析しようとしています。コンパイルは問題なく、ツールは生成された AST を適切に解析していますが、特定の警告をオン/オフする方法がわかりません。

関連するコード スニペットは次のとおりです。「未使用の変数」警告を有効/無効にしたいと思います。

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

objective-c - LLVM 4 を使用した Objective-C の自動アンボックス

私は、Objective-C でオートボクシングを見てきました (ここでは、たとえば)。ボックス化解除のための新しい構文はありますか?

たとえば、私はこれをやりたいのですが、もっと短くします:

2 行目の構文は恐ろしいものです。これに対処するための新しい言語機能はありますか?