我有一个数组和一个向量,它们都保存相同的数据,例如 0、1、2、3、4。然后我使用 GEP 获取数组的 ptr,
%0 = getelementptr [5 x i32]* %arr, i32 0, i32 3
%1 = load i32* %0
所以,%0 是 %arr 指向的数组中第 4 个元素的指针,%1 的值为 3。
但是现在,我将指向向量的指针比特转换为指向 i32 的指针:
%2 = bitcast <5 x i32>* %Vec to i32*
和:
%3 = getelementptr i32* %2, i32 3
%4 = load i32* %3
我不确切知道数组和向量之间的内存布局是否有任何差异。如果没有区别,我认为从向量中获取元素的方式是可以的。那么,我这样做是否正确?