【问题标题】:error in compiling cilk plus with gcc-4.7使用 gcc-4.7 编译 cilk plus 时出错
【发布时间】:2012-06-20 16:11:35
【问题描述】:

我收到以下错误

main.c:107:2: internal compiler error: in extract_for_fields, at cilk-spawn.c:1857
}

相关的行是:

cilk_for (index = 0; table_name[index]!=NULL; ++index )
{
      /* some work*/
}

Line 107 对应于 cilk_for 循环的右大括号。

感谢任何帮助!

【问题讨论】:

  • 这是一个编译器错误。它在 4.6 中有效吗?您使用的是 4.7 的一些预发布版本吗?
  • 没有。 cilk plus 只能使用gcc-4.7 构建,因为英特尔仅将该分支添加到gcc-4.7。那么除了发送错误报告之外我无能为力吗

标签: gcc cilk cilk-plus


【解决方案1】:

尝试不优化构建(省略任何优化标志,或明确使用-O0)。

如果有帮助,您可以尝试看看-O1(一些优化)是否有效,然后是-O2,等等。 如果幸运的话,您可以找出导致问题的优化方式,然后简单地使用一些 -fno-foo 标志禁用该优化。

【讨论】:

  • 我得到了修复并在上面发布了它。
【解决方案2】:

我上面所做的不是有效的cilk_for 循环,因为cilk_for 循环必须测试控制变量。还必须能够预测循环将运行多少次,在这种情况下这是不可能的。所以正确的版本是

int count=0;
while(table_name[count]!=NULL)
    count++;
cilk_for (index = 0; index!=count; ++index )
{
      /* some work*/
}

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多