Ошибка компиляции cilk plus с gcc-4.7

Я получаю следующую ошибку

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.

Любая помощь приветствуется!

2 ответа

Решение

То, что я сделал выше, не было действительным cilk_for цикл, потому что cilk_for Цикл должен проверить управляющую переменную. Также нужно уметь предсказывать, сколько раз цикл будет работать, и в этом случае это невозможно. Так что правильная версия для этого будет

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

Попробуйте построить без оптимизации (не используйте флаги оптимизации или используйте -O0 явно).

Если это поможет, вы можете попробовать -O1 (некоторая оптимизация) работает, то -O2, и так далее. Если вам повезет, вы можете выяснить, каким образом оптимизация вызывает проблему, а затем просто отключить эту оптимизацию с некоторыми -fno-foo флаг.

Другие вопросы по тегам