コンパイラを GCC から XCode 4.2 で LLVM GCC 4.2 に切り替えたところ、OpenMP の下で組み込みの _mm_shuffle_ps に対して奇妙なリンカ エラーが発生しました。この関数は他の場所でも機能しますが、omp ブロック内に配置すると、次のリンカー エラーが生成され始めます。
"___builtin_ia32_shufps", referenced from:
__ZN7Annulus12traceFactorsEP9PrimitiveP8VFMatrix.omp_fn.0 in Annulus.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
私のコードの基本的な構造は次のとおりです。
#pragma omp parallel {
//Some stuff
#pragma omp for {
//Do more stuff including _mm_shuffle_ps
}
}
コードは GCC 4.2 で問題なく動作しますが、これは OpenMP の LLVM GCC 実装のバグですか、それとも特殊なコンパイラ フラグが必要ですか?