6

LLVM IR 命令の場合、%cmp7 = icmp eq i32 %6 %73 つのレジスタ/シンボル名をすべて取得したい (つまり%cmp %6 and %7)

これで、pi が命令ポインターである%cmpコマンドで文字列を取得できます。pi->getName()しかし、オペランド名を取得しようとすると、 と入力して空の文字列pi->getOperand(0)->getName()を取得しました。

isa<Instruction>(pi->getOperand(0))これが命令であるかどうかを確認しようとしましたが、true がpi->getOperand(0)->hasName()返されましたが、false が返されました。なぜ と の両方pipi->getOperand(0)指示であるのpiに名前しかないのですか?

APIを使用してオペランド名(文字列%6と ここ)を取得できると思いますか?%7

私が使用しているLLVMのバージョンは3.4.2です

4

1 に答える 1

8

名前はLLVM 命令ではオプションですicmp。実際、この場合の命令の 2 つのオペランドには名前がないため、空の文字列になります。

LLVM モジュールを .ll ファイルに出力すると、ライターは人間が読めるように各命令に名前を割り当てますが%<num>これはライターが印刷中に行うことだけであり、その文字列は実際のモジュールには存在しません。

于 2014-06-26T19:09:54.473 に答える