Почему не работает распараллеливание потоков в gcc?
К сожалению, у меня сейчас gcc собран без поддержки распараллеливания, поэтому включаю телепатию.
В-первых прочитайте как работает автораспараллеливание. Например здесь.
Во-вторых есть подозрение, что без ключа -O3 данные флаги смысла не имеют.
В-третьих посмотрите дампы. Например по ключу -fdump-tree-parloops в данном случае. И вообще посмотрите в man'е gcc какие можно сбрасывать дампы. Они имеют префикс -fdump.
Если ни с -O3 не заработает, ни в дампах ничего полезного не найдёте, то спросите в рассылке gcc-help, там объяснят.
Может имеет смысл смотреть в сторону OpenMP?