如何使用 LLVM 访问外部结构?

How to access external struct using LLVM?

我在我的模块中有这个结构 ,在我的 C++ 实现中:

struct A {
  int a;
};

如何创建这个接受 A 指针并更改它的函数?喜欢:

define void @func(%struct.A*) {
  %2 = alloca %struct.A*, align 8
  store %struct.A* %0, %struct.A** %2, align 8
  ...
}

还是不可能?我需要在我的模块中创建一个结构并更新外部结构吗?

是的,类型声明应该存在于它们使用的每个模块中。对于 C++ 也是一样的——如果你没有在源代码中声明它或者任何包含,你就不能使用 struct A

但是,您似乎在对代码中指向该结构的指针进行操作。 AFAIK,在这种情况下声明一个空结构并使用指向它的指针是安全的。