我无法理解来自 IBM XL C/C++ 的警告。我正在编译农场的 GCC119 上工作,这是一台 AIX ppc64-be 机器。
$ cat test.cxx
#if defined(__ALTIVEC__)
# include <altivec.h>
# undef vector
# undef pixel
# undef bool
#endif
__vector unsigned char VecLoad(unsigned char data[])
{
return vec_ld(0, data);
}
编译它会导致:
$ xlC -qarch=pwr5 -qaltivec test.cxx -c
1540-2142 (W) "-qaltivec" is not compatible with "-qarch=pwr5". "-qnoaltivec" is being set.
"test.cxx", line 8.10: 1540-0040 (S) The text "unsigned" is unexpected. "__vector" may be undeclared or ambiguous.
删除-qarch
并不能解决问题,因为编译器默认为-qarch=pwr4
.
我只在使用 XLC 编译器的 AIX 机器上看到这个问题。GCC 在同一台机器上没问题。我用于测试的另外两台机器都可以。事实上,AIX 机器是 S822,运行 Linux 并安装 XLC 的相同 S822 是可以的。
有什么问题,我该如何解决?为什么我们不能在带有 XLC 的 AIX 上使用 Altivec 和 POWER5?