問題タブ [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 投票する
1 に答える
1745 参照

gcc - パラメーターまたは変数を__attribute__((未使用))として指定すると、コンパイラーは追加の最適化を実行できますか?

私はLLVM4.1に特に興味がありますが、他のコンパイラーの動作にも興味があります。

GCCドキュメント(LLVMが少なくとも部分的にサポートしている)によると、unused属性の動作は次のとおりです。

ただし、コンパイラーが未使用のパラメーターと変数について警告できる場合は、おそらく、ユーザーが通知しなくても、どのパラメーターと変数が未使用であるかを既に認識しているはずです(特に、unused属性は変数が未使用である可能性があることを示しているだけなので)。したがって、このunused属性により、コンパイラーは追加の最適化を実行できますか、それともその目的は、より読みやすいコードを可能にすることだけですか?また、unused属性によってコンパイラーが追加の最適化を実際に実行できる場合、実際に次のように指定されたパラメーターまたは変数を使用するとどうなりますunusedか?LLVM(XCode内)はこのケースについて不満を言っているようには見えませんでしたが、適切な最適化レベルで、または適切な警告を有効にしてコンパイルしていなかった可能性があります。

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

c++ - 基本クラスオブジェクトの保護されたメンバーへのアクセス

検討:

パーミッションはオブジェクトではなくクラスに基づいているため、最初のコピーコンストラクターは正しいです。したがって、自分のクラスオブジェクトから保護されたメンバーに到達できます。2番目のコンストラクター(または同様のメソッド)でコンパイル時エラーが発生するのはなぜですか?

つまり、この場合、C ++でのアクセス許可チェックがクラス継承ルールを考慮しないのはなぜですか?

また、これはApple LLVM-4.2で発生しましたが、AppleLLVM-4.1では発生しませんでした。

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

iphone - po オブジェクトでエラーが発生しました: '$__lldb_objc_class' のインターフェイス宣言が見つかりません

デバッグ コンソールでこの奇妙な機能を使用しています。

次のコードがあるとします。

issueDictionary 関数の po が正しく:

{ タイトル = "2012 年 12 月"; coverUrl = "htt://toeete.com/CoverURL/77111a51-32d8-4c39-912e-a889bad250e6.png"; downloadUrl = "htt://oetoeto.com/pdfFile/TR 2012 年 12 月 Single.pdf"; "end_date" = "2013 年 12 月 31 日"; 画像 = ( ); "release_date" = "02/26/2013"; summary = "2012 年 12 月号"; uniqueId = "2012 年 12 月_1"; 更新 = "2013 年 2 月 11 日"; }

しかし、「anIssue.issueID」または「[issueDictionary objectForKey:@"uniqueId"]」のオブジェクトを印刷しようとするたびに、次のエラーで失敗します: エラー: '$__lldb_objc_class' のインターフェイス宣言が見つかりません

次のように言います:

po [anIssue issueID]

また

po [issueDictionary objectForKey:@"uniqueId"]

どちらもエラーで失敗します...

po anIssue

成功します!!!!!!!!

: ID=2012年12月_1 Title=2012年12月 Released=2013-02-25 22:00:00 +0000 Free=YES Description=2012年12月号

何か案が

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

build - LLVM 3.3 用のゴールド プラグイン

LLVM をビルドして使用していましたが、リンカーとして使用するゴールド プラグインを追加したいのですが、LLVM Web サイトの「プラグイン サポートを使用してゴールドをビルドする」に従って、ld-new を使用しましたが、LLVM を再ビルドしたくありません、LLVMを再構築せずにこのプラグインを追加する方法はありますか?

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

linker - LLVM3.2およびClang3.3でリンク時間の最適化にGoldを使用するにはどうすればよいですか?

llvm.orgには、ゴールドプラグインをLLVM-gccに追加する方法についての説明があります。ただし、バージョン3.2以降、LLVM-gccを使用せず、代わりにClangを使用しており、使用方法が不明です。

  1. ゴールドプラグインをLLVM3.2に追加する方法を知っている人はいますか?
  2. このプラグインをインストールする必要がありますか、それともClangに組み込まれていますか?

リンカーとしてGoldプラグインがない場合-O4、LTOを試してみると、それはとして扱われると読みまし-O3たが、Clangを使用しているときではなく、gccシステムリンカーを使用しているときだと思います。

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

macos - シンボルが見つかりません: MacOS コマンド ライン ツールの _objc_retainAutoreleasedReturnValue

タイトルと同じキーワードの質問がいくつ かありますが、 Objective-C の iOS 側に焦点を当てています。私の問題は、MacOS コマンド ライン ツールにあります。

基本的に何が起こっているかというと、Foundation (Cocoa) ツールが別の Foundation メソッドを呼び出す C 関数を呼び出しているということです。Foundation メソッドが C 関数から呼び出されると、Symbol not found: _objc_retainAutoreleasedReturnValue実行時に " " エラーが発生します。

コードは次のようになります。

log.h

log.m

main.m

ARC は 64 ビット コンパイル済みツールで有効になり ( 32 ビット バージョンでは有効にできません)、サポートされる最小の Ma​​cOS バージョンは 10.6 です。

ツールが MacOS 10.7 で呼び出されると、すぐに次のようなログでクラッシュします。

私の知識に基づく推測 (他の人々の助けを借りて) は、" char *" を渡すか、何かを " _unsafe_unretained" として宣言する必要があるかもしれないということです。確かに、最新の Xcode 4.6 コンパイラが処理すべきもののように思えます。

私が間違っているかもしれないことについて誰かが推測していますか?

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

ios - Apple LLVM コンパイラ エラー 4.1 [-stdlib=libc++ の無効なデプロイメント ターゲット]

誰でもこのエラーの解決方法を教えてください...私のXコードはバージョン4.5です。私の IOS シミュレーターはバージョン 4.3 です

コマンド /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang が終了コード 1 で失敗しました

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

clang - UNREACHABLEが実行されました!PTXを生成しようとしたときにエラーが発生しました

clang / LLVMバージョン3.2を使用して、「nbody」サンプルプログラムのカーネル(nbody_kernel.cu)のPTXコードを生成しようとしています。nbody CUDAプログラムは、NvidiaのSDKで利用できます。

https://github.com/jholewinski/llvm-ptx-samplesプロジェクトを参照しています。

以下は私のコマンドです、

clang ++ -O4 -S -I / usr / local / cuda / include -emit-llvm -target nvptx64 nbody_kernel.cu -o nbody_kernel.ll

opt -O3 -loop-unroll -unroll-allow-partial nbody_kernel.ll -o nbody_kernel.ll

llc nbody_kernel.ll -o nbody_kernel.ptx

最後のコマンド(llc)を実行した後、UNREACHABLEが実行されました!次のスタックトレースでエラーが発生しました

たとえば、threadIdx.xのようなグローバルインデックスを__builtin_ptx_read_tid_x()などに置き換えました。LLVM IR(つまり、.ll)の生成に問題はありません。llcを使用してIRからPTXを生成しようとすると、エラーがポップアップ表示されます。

ここで何が起こっているのかについての指針はありますか?

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

python - Clangバインディングを使用してタイプ文字列を抽出します

私は、Cヘッダーを解析し、関数に関する情報(名前、戻り値の型、引数の型)を抽出するPythonスクリプト(python clangバインディングを使用)を作成しています。

関数名の抽出に問題はありませんが、clang.cindex.TypeCタイプの文字列に変換する方法が見つかりません。(例clang.cindex.TypeKind.UINT:)unsigned int

現在、一時的な解決策として、clang.cindex.TypeKind -> C type stringポインターとconst修飾子を処理するための辞書とコードがありますが、構造体名を抽出する方法が見つかりませんでした。

のC定義を取得する一般的な方法はありclang.cindex.Typeますか?clang.cindex.TypeKind.RECORDない場合、Cタイプの文字列とタイプを取得するにはどうすればよいclang.cindex.TypeKind.FUNCTIONPROTOですか?