如何获取 LLVM IR 指令的文本表示?

问题描述 投票:0回答:3

如果

I
llvm::Instruction
类型,我们可以通过
errs() << I;

以人类可读的形式(文本表示)打印出相同的内容

我希望将完全相同的表示分配给

std::string
到 C 类型字符串。我怎样才能做到这一点?

llvm llvm-clang llvm-ir
3个回答
7
投票

嗯,LLVM 也提供了字符串流:

#include <llvm/Support/raw_ostream.h>

像这样使用它:

std::string str;
llvm::raw_string_ostream(str) << I;

// use str

2
投票

我在使用@eush77的答案时遇到了一些问题。这是我的修复。

std::string str;
llvm::raw_string_ostream ss(str);
ss << I;
errs() << ss.str() << "\n";

0
投票

你应该使用

ss << *I

获取文本表示,而不是

ss << I

获取

I

的地址
© www.soinside.com 2019 - 2024. All rights reserved.