gccの-fdump-tree-all-all
-fdump-rtl-all-all
-fdump-ipa-all-all
のように動作するclang/LLVMのデバッグオプションをいくつか探したいと思います。各llvm最適化(各パス)の後にIRをダンプし、llvm irのパスとバックエンドのデバッグ
基本的には、各最適化パスの前後にLLVM IRダンプが必要です。また、clangやコード生成のすべての段階(バックエンド段階、選択DAG、ISEL-SDNodeなど)からASTのすべてのダンプを持つと便利です。レジスタ割り当て、MCInsts)。
clangの-ccc-print-phases
しか見つかりませんでしたが、ハイレベルのフェーズ名しか表示されません。 preprocess-compile-assemble-link; IRのダンプはありません。
また、clang ASTをダンプするオプションがあるLife of an instruction in LLVMペーパーがありますが、特にcodegenの方が望ましいです。
うーん:
clang test.c -Ofast -march=core-avx2 -mllvm -debug-pass=Arguments
はあなたのようなものが表示されます"-print-after-all" - 各パスの後にIRを印刷する; -print-before-all - IRフェーズの場合は '各パスの前にIRを出力する '、bどのようにバックエンドからダンプを取得するのですか? – osgx
バックエンドフェーズからデバッグ情報を自分で印刷することができます。 codegenの 'CGDebugInfo'オブジェクトです。 – shrm
mishr、llvmバックエンドからではなく、clang IRエミッタからのCGDebugInfoですか?私は、LLVM IR-to-machineコードバックエンド(codegen) – osgx