llvmgen.c中的xmos内部编译器错误?

时间:2014-03-17 19:41:09

标签: c compilation embedded xmos

我将一些用C编写的代码移植到XC中,因此这就是我的构建输出。

**** Build of configuration Debug for project camera_with_memory ****

xmake CONFIG=Debug all 
Creating dependencies for point.xc
Compiling point.xc
xcc1: internal compiler error
Failed in /build/swnb/autobuild/swview/MacOSX/build/sb/tools_xcc1_c_llvm/BackEnd/LLVM/llvmgen.c, line 9314
    isExpVar(d->components->u.dimension)
For bug reporting instructions, please see:
http://www.xmos.com/support
xmake[1]: *** [.build_Debug/src/point.xc.o] Error 1
xmake: *** [bin/Debug/camera_with_memory_Debug.xe] Error 2

是什么导致这个?我真的很困惑。我的C代码是~80行。这是宣言:

int sort_by_col(int center_points[num_points][2], static const unsigned int num_points, 
    int col_idx[col_idx_size], static const unsigned int col_idx_size);

2 个答案:

答案 0 :(得分:4)

这是编译器中的错误。似乎你不能声明一个多维数组,其第一个维度是一个静态const变量,例如。

void f(static const unsigned n) {
     unsigned a[n][2];
}

应该允许这样做。为了将来参考,由于此编译器由XMOS维护,您可以在此处向他们报告错误:

https://www.xmos.com/en/support/contact

此错误在XMOS编译器的13.0.2版中很明显。

披露:我在编译器上为XMOS工作,因此会报告此错误。

答案 1 :(得分:3)

我找到了消除此错误的方法。但是我认为这是一个错误。

在我的函数中,我有这行代码:

int working_array[size_points][2]; // array for copying data points

用这两行替换它:(并调整其余代码以使用两个数组而不是一个)

int working_array_x[size_points]; // array for copying data points
int working_array_y[size_points]; // array for copying data points

我消除了错误。