我正在尝试打印循环内使用的值的类型和名称,如下所示:
(value->getType())->print(COUT);
errs() << " type: " << COUT.str() << " ";
errs() << " name: " << (value->getName()) << "\n";
我得到以下输出:
type: i32* name: sum
type: [25 x %struct.Book]* name: books
是否可以按程序中使用的方式打印类型?例如,得到像:
这样的东西type: int name: sum
type: struct Book name: books
答案 0 :(得分:0)
你应该编写自己的功能。有关示例,请参阅原始函数TypePrinting::print
。
答案 1 :(得分:0)
不,它无法完成。 LLVM名称和源名称之间没有保证映射;可能没有与给定LLVM类型对应的源类型,或几个。
您甚至可以尝试详细了解特定前端如何将源类型转换为LLVM类型。即使这样,它也只是在该方案的限制范围内 - 例如,我的前端为类型和函数创建GUID名称。