峠のとの理由から、誤った認識に五十から五のLLVM毎日話

LLVMの重要な一部として渡し、LLVM IRレベルとLLVMバックエンドのレベルが重要な役割を果たしてきました。多くのLLVMパスのユーザーが簡単にLLVM IRレベルの分析として理解し、LLVMバックエンドレベルの役割のパスを無視して、変換されます。実際には、小さくないLLVMバックエンドレベルの役割に渡します。例として、構造体の終了後:

注:P134「LLVMコアライブラリ入門」。

パスに直接書くことが空白のボックスの内容の、いくつかの小さな峠で構成されるスーパーパスとして解釈灰色のボックスとコンテンツ「LLVMコアライブラリ入門」。この見解によれば、パスは、全体バックエンドの主要部分として理解することができます。もちろん、バックエンドは完全にパスされていませんが、プロセス実行の観点から、パスが全体のバックエンドの主要部分に参加しました。

なぜ、その後、パスのバックエンドは常にそう簡単には無視されますか?

まず、パスサブクラスからのサブカテゴリーとサブカテゴリーの話します。パスサブクラスは以下のとおりです。

その中で、私たちは、ほとんどがLLVM IR FunctionPassのレベルで使用します。峠でLLVMバックエンド、主にMachineFunctionPassの親クラス。そしてMachineFunctionPassはFunctionPassサブクラス、示された構造です。

この構造では、MachineFunctionPassは構造的な弱点である、あなたがパスを無視した場合、バックエンドの使用に直接見落としを渡し、LLVM IRのレベルとは異なり、パスのサブクラスのすべてが使用されています。

第二に、もう一つの理由は、多くの人がパスし、そのソースディレクトリとは無関係のバックエンドさせます。多くの人々はそれがパスのみLLVM IRのレベルで使用されているような錯覚を作成し、LIB / codegenのディレクトリとlib /ディレクトリの内容ターゲットを無視して、ただのlib /分析ディレクトリとlib / Transfromディレクトリにパスを懸念しています。

再次,对LLVM IR层面和LLVM Backend层面的Pass的调用方式不同,也导致很多使用者将二者割裂开来。LLVM IR层面,使用的是opt工具;LLVM Backend层面,使用的是llc工具。

最后,一些使用者忽略Pass在Backend应用是因为对后端的认识比较模糊,没有搞清楚后端的完整架构。默认的将Pass直接和LLVM IR层面进行了绑定。


相关内容:

小乖他爹:LLVM每日谈之四 Pass初探

小乖他爹:LLVM每日谈之八 PASS例子分析

小乖他爹:LLVM每日谈之十二 LLVM的源码分析之Pass相关

小乖他爹:LLVM每日谈之十三 使用LLVM自带的PASS

小乖他爹:LLVM每日谈之四十二 一个添加pass的实例

小乖他爹:LLVM每日谈之四十三 LLVM的utility pass

发布于 2019-06-13

おすすめ

転載: blog.csdn.net/snsn1984/article/details/92208556