如何使用整数列表在LLVM中初始化整数数组
How do I initialize an integer array in LLVM using a list of integers?
我有以下我要生成C 的IR代码:
@gArray = global [10 x i32] [i32 3, i32 4, i32 5, i32 6, i32 0, i32 0, i32 0, i32 0, i32 12, i32 0], align 16
我知道我可以使用这些代码线将数组初始化为所有零:
ConstantAggregateZero* const_array_2 = ConstantAggregateZero::get(ArrayTy_0);
GArray->setInitializer(const_array_2);
如何将LLVM中的数组初始化为值列表?
您可以创建一个常数初始器列表:
std::vector<llvm::Constant*> values;
...
/* Make the value 42 appear in the array - ty is "i32" */
llvm::Constant* c = llvm::Constant::getIntegerValue(ty, 42);
values.push_back(c);
... // Add more values here ...
llvm::Constant* init = llvm::ConstantArray::get(arrayTy_0, values);
GArray->setInitializer(init);
此代码(以及前面的20行左右)创建了一个初始化的全局结构:https://github.com/leporacanthicus/lacsap/blob/master/expr.cpp#l2585
这是使用setInitializer的另一个示例 - 同样,它不是数组,而是一个结构,但是从概念上讲,数组和结构之间没有太大区别:https://github.com/leporacanthicus/lacsap/blob/master/expr.cpp#l3376
另请参见(例如):http://llvm.org/docs/doxygen/html/classllvm_1_1_1 constantarray.html
相关文章:
- C++使用整数的压缩数组初始化对象
- 整数在VSCommunity2019,windows10中未初始化
- 为什么初始化 std::vector 时不能使用模板整数?
- 在标头中C++整数初始化
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 如何初始化整数+字符串数组
- 如何将整数重新初始化/设置为空值
- 使用整数初始化列表初始化长双精度的向量
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- 使用 size_t 初始化循环变量时的整数下溢
- C++11 整数初始化
- 错误 C2864:'element::next':只能在类 (STRUCT) 中初始化静态常量整数数据成员
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 如何初始化无符号整数uint8_t
- 为什么可以将Char指针变量初始化为字符串,而INT指针变量不能初始化到整数数组
- 从签名的字符到整数,过早促销的价值初始化
- 如何使用整数初始化 GMP mpz_t
- 矢量类型 字符串,但当用整数初始化时
- Visual Studio 2010 SP1 中的 64 位整数初始化错误
- c++模板:用一个特定的整数初始化一个变量(作为类型)