2016-04-22 20 views
0

LLVM clang ++ 4.9.2を使用してOMPディレクティブを使用してcppプログラムをコンパイルすると、隠し関数@ .omp_outlinedが表示されます。ビットコードに生成されました。私はこの隠された機能が何であるのだろうと思っています。LLVMでコンパイルされたompプログラムでomp_outlined

+0

clang 4.9.2がありません。最新のリリースバージョンは3.8です –

答えて

4

いいえ、Clangのアウトラインコードの生成を防ぐことはできません。並列領域コードを独自の関数に概説することは、ClangとGCC、Intel、MSVCなどの多くのコンパイラによってOpenMPがどのように実装されるかです。 GCCの実装方法の詳細はherehereです。 Clangは多かれ少なかれ同じ方法に従います。

私の知る限り、OpenMP並列領域を明示的に囲まない唯一のOpenMPコンパイラは、PGIのものです。いくつかのスタックフレームマジックを実行して、複数のスレッドが機能コードの一部を実行できるようにします。

関連する問題