C++ 如何在LLVM IR中实现非标量别名?

C++ 如何在LLVM IR中实现非标量别名?,c++,llvm,llvm-ir,llvm-c++-api,C++,Llvm,Llvm Ir,Llvm C++ Api,我的目标是能够创建一个数组别名,例如,对于位于非连续内存中的变量a和b,我可以创建一个变量c,该变量可以被取消引用,c[0]是a的别名,c[1]是b的别名。现在我使用的LLVM ConstantArray初始值设定项包含所需变量的全局别名,结果如下: @C = alias i16, i16* @A @C.1 = alias i16, i16* @B 这是实现所需行为的正确方法吗?我在创建将此变量导入C(通过extern)时遇到问题,其行为如上所述。引用数组是非法的。我当时描述的行为是否无法实现

我的目标是能够创建一个数组别名,例如,对于位于非连续内存中的变量
a
b
,我可以创建一个变量
c
,该变量可以被取消引用,
c[0]
a
的别名,
c[1]
b
的别名。现在我使用的LLVM ConstantArray初始值设定项包含所需变量的全局别名,结果如下:

@C = alias i16, i16* @A
@C.1 = alias i16, i16* @B

这是实现所需行为的正确方法吗?我在创建将此变量导入C(通过extern)时遇到问题,其行为如上所述。

引用数组是非法的。我当时描述的行为是否无法实现?您可以使用std::reference\u包装器数组。