我正在编写一个适用于 LLVM IR 代码的 LLVM 通行证。目标的一部分是读取全局变量的初始值,其中全局变量可以是任何类型,从基本类型到结构和类。我该如何做到这一点?
问问题
1539 次
1 回答
4
如果您getInitializer
在GlobalVariable
实例上调用,您将获得类型的初始化程序Constant
(尽管请确保您首先调用hasInitializer
或其姊妹方法之一,以验证是否有初始化程序)。IIRC 全局变量和常量也被实现为同一事物,因此isConstant
如果您不想要它们,请使用它们来过滤掉常量。
当然,aConstant
是抽象基类;实际类型将是它的一个子类型,您可以在文档页面上的图表中看到它。isa
您可以通过/ cast
/以通常的方式查询并获取实际的常量类型dyn_cast
,或者您可以在其上使用(毕竟getType
是常量)并从那里开始工作。Value
最后,要从一个Module
使用global_begin
/global_end
迭代器中获取所有全局变量,或者只使用getGlobalList
它(它有自己的迭代器)。
于 2013-02-03T12:51:44.697 回答