問題タブ [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.
gcc - パラメーターまたは変数を__attribute__((未使用))として指定すると、コンパイラーは追加の最適化を実行できますか?
私はLLVM4.1に特に興味がありますが、他のコンパイラーの動作にも興味があります。
GCCドキュメント(LLVMが少なくとも部分的にサポートしている)によると、unused
属性の動作は次のとおりです。
ただし、コンパイラーが未使用のパラメーターと変数について警告できる場合は、おそらく、ユーザーが通知しなくても、どのパラメーターと変数が未使用であるかを既に認識しているはずです(特に、unused
属性は変数が未使用である可能性があることを示しているだけなので)。したがって、このunused
属性により、コンパイラーは追加の最適化を実行できますか、それともその目的は、より読みやすいコードを可能にすることだけですか?また、unused
属性によってコンパイラーが追加の最適化を実際に実行できる場合、実際に次のように指定されたパラメーターまたは変数を使用するとどうなりますunused
か?LLVM(XCode内)はこのケースについて不満を言っているようには見えませんでしたが、適切な最適化レベルで、または適切な警告を有効にしてコンパイルしていなかった可能性があります。
c++ - 基本クラスオブジェクトの保護されたメンバーへのアクセス
検討:
パーミッションはオブジェクトではなくクラスに基づいているため、最初のコピーコンストラクターは正しいです。したがって、自分のクラスオブジェクトから保護されたメンバーに到達できます。2番目のコンストラクター(または同様のメソッド)でコンパイル時エラーが発生するのはなぜですか?
つまり、この場合、C ++でのアクセス許可チェックがクラス継承ルールを考慮しないのはなぜですか?
また、これはApple LLVM-4.2で発生しましたが、AppleLLVM-4.1では発生しませんでした。
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月号
何か案が
build - LLVM 3.3 用のゴールド プラグイン
LLVM をビルドして使用していましたが、リンカーとして使用するゴールド プラグインを追加したいのですが、LLVM Web サイトの「プラグイン サポートを使用してゴールドをビルドする」に従って、ld-new を使用しましたが、LLVM を再ビルドしたくありません、LLVMを再構築せずにこのプラグインを追加する方法はありますか?
linker - LLVM3.2およびClang3.3でリンク時間の最適化にGoldを使用するにはどうすればよいですか?
llvm.orgには、ゴールドプラグインをLLVM-gccに追加する方法についての説明があります。ただし、バージョン3.2以降、LLVM-gccを使用せず、代わりにClangを使用しており、使用方法が不明です。
- ゴールドプラグインをLLVM3.2に追加する方法を知っている人はいますか?
- このプラグインをインストールする必要がありますか、それともClangに組み込まれていますか?
リンカーとしてGoldプラグインがない場合-O4
、LTOを試してみると、それはとして扱われると読みまし-O3
たが、Clangを使用しているときではなく、gccシステムリンカーを使用しているときだと思います。
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 ビット バージョンでは有効にできません)、サポートされる最小の MacOS バージョンは 10.6 です。
ツールが MacOS 10.7 で呼び出されると、すぐに次のようなログでクラッシュします。
私の知識に基づく推測 (他の人々の助けを借りて) は、" char *
" を渡すか、何かを " _unsafe_unretained
" として宣言する必要があるかもしれないということです。確かに、最新の Xcode 4.6 コンパイラが処理すべきもののように思えます。
私が間違っているかもしれないことについて誰かが推測していますか?
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 で失敗しました
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を生成しようとすると、エラーがポップアップ表示されます。
ここで何が起こっているのかについての指針はありますか?
python - Clangバインディングを使用してタイプ文字列を抽出します
私は、Cヘッダーを解析し、関数に関する情報(名前、戻り値の型、引数の型)を抽出するPythonスクリプト(python clangバインディングを使用)を作成しています。
関数名の抽出に問題はありませんが、clang.cindex.Type
Cタイプの文字列に変換する方法が見つかりません。(例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
ですか?