0

我正在使用 C++ 编写 llvm 代码。我的代码中有一个地方发生了以下情况

 1. %117 = phi <2 x double>* [ %105, %aligned ], [ %159, %116 ]
 7. %123 = getelementptr <2 x double>* %117, i32 0
 8. %127 = getelementptr <2 x double>* %123, i32 0
 9. %128 = load <2 x double>* %127
10. %129 = getelementptr <2 x double>* %123, i32 1
11. %130 = load <2 x double>* %129
12. %131 = shufflevector <2 x double> %128, <2 x double> %130, <2 x i32> <i32 1, i32 3>

我正在尝试计算相同的地址,该地址应在第 7 行和第 8 行中两次指向相同的数据类型,但地址参数值不同。这样做是否安全或会导致不确定的结果?

4

1 回答 1

0

该指令

%x = getelementptr %anytype* %y, i32 0

完全没有意义;就好像你写了(非法的):

%x = %y

所以是的,两者%123%127指向同一个内存。它是安全的,但也是多余的:您可以%117直接在任何地方使用%123%127使用。您的代码段中唯一有问题的是值编号不是连续的,但我认为这只是在此处粘贴部分代码。

于 2013-10-29T20:47:09.807 回答