我目前正在使用LLVM编写传递,我对变量/参数/参数名称有几个问题。
说我有这个结构:
struct Kid {
char name[30];
int age;
char hobby[30];
};
我正在运行模块传递,并在模块中找到Kid
对应的StructType
。我想使用Kid
成员的名字,但我不知道如何访问它们。我尝试使用element_iterator
但它只返回Type
成员。如何访问结构数据成员的名称?
编辑:这样做的目的是让我能够确定我正在处理的'char'类型的成员是'name'还是'hobby',所以我可以在每种情况下执行不同的操作。类似的东西:
case "name" do something;
case "hobby" do something else;
是否有另一种方法可以区分相同类型的成员?
foo(int a, int b)
。
如何获取函数参数的名称?
我尝试在arg_iterator
的电话上运行foo
来查找
参数,但是当我在参数上调用getName()
时,它返回一个空的StringRef
。非常感谢您的帮助。
答案 0 :(得分:1)
LLVM IR中没有“字段名称”。实际上,类型的名称仅用于调试目的,因此您永远不应该依赖它们。对于用于表示参数的值的名称也是如此 - 它们很容易被删除。
如果您需要源名称,那么您需要依赖调试信息。