0

我目前正在尝试了解 gcc Vectorizer 的输出。我使用-O2 -ftree-vectorize -fopt-info-vec-all和 gcc 8.2.0 编译了我的程序。

但是,我不明白某些输出消息是什么意思,并且似乎无法在互联网上找到解释。

以下示例中的 PHI 是什么意思?

test.c:14: note: Analyze phi: i_53 = PHI <i_18(7), 0(5)>
test.c:14: note: Access function of PHI: {1024, +, 4294967295}_2

这里有什么问题?

test.c:5: note: not vectorized: not enough data-refs in basic block.

任何帮助是极大的赞赏。

(我不是在寻求解决问题的帮助,只是想首先了解它们是什么)

4

1 回答 1

2

至于你的第一个问题,Phi或者函数是编译器设计中的一个概念。在这个阶段,编译器似乎正在以静态单一赋值形式表达您的程序,其中每个变量只能写入一次,并且函数用于从不同变量中选择值,这些变量可能并不都存在于程序中的给定点.

有关gcc 特定的描述,请参阅https://gcc.gnu.org/onlinedocs/gccint/SSA.html 。

我不知道你的第二个问题的答案。

于 2020-05-17T13:36:54.530 回答