0
我目前正在使用LLVM编写通行证,并且有几个关于变量/参数/参数名称的问题。在LLVM IR中提取名称
说我有这样的结构:
struct Kid { char name[30]; int age; char hobby[30]; };
我运行一个模块通,发现Kid
的模块中的相应StructType
。我想使用Kid
的成员的名字,但我不知道如何访问它们。我尝试使用element_iterator
,但它只返回成员Type
。我如何访问结构的数据成员的名称?
编辑:这样做的目的是让我能够确定,我目前正在处理类型“字符”的成员是否为“名”或“业余爱好”,这样我就可以执行各自不同的动作案件。例如:
case "name" do something;
case "hobby" do something else;
是否有另一种方法来区分同一类型的成员?
- 说我有一个功能
foo(int a, int b)
。 如何获取函数参数的名称? 我试着在foo
的电话上运行一个arg_iterator
来找到 的参数,但是当我在一个参数上调用getName()
时,它返回一个空的StringRef
。
将不胜感激任何帮助。
好的,谢谢。我将编辑该问题以更具体地说明我想要做什么。 第二个问题呢? – baronzo1
我相信我也回答了第二个问题。所有的“名称”都是源代码级别的功能,所以你在IR中没有它们。这是有原因的,例如否则你将无法处理C/C++联合或位域。因此,如果您需要使用源代码级别的东西,那么您需要在前端内部执行所有操作。或者使用其他方式来恢复必要的信息,例如调试信息。 –
是的,我想编辑该评论,直到某个时刻我才注意到。 谢谢! – baronzo1