This patch implements Clang front end support for the OpenMP TR8
present motion modifier for omp target update directives. The
next patch in this series implements OpenMP runtime support.
Details
Diff Detail
Unit Tests
Time | Test | |
---|---|---|
3,810 ms | linux > Clang.OpenMP::Unknown Unit Message ("") | |
8,680 ms | linux > Clang.OpenMP::Unknown Unit Message ("") |
Event Timeline
clang/lib/Parse/ParseOpenMP.cpp | ||
---|---|---|
3462 | I think you mean:
Is all that right? |
clang/lib/Parse/ParseOpenMP.cpp | ||
---|---|---|
3462 | Ah, I misread your comment here. I thought it is a bug in a compiler. Then just leave it as is. |
clang/lib/Basic/OpenMPKinds.cpp | ||
---|---|---|
73–74 | I think I've done what you're after here. This now looks a look like the related code for map type modifiers above. |
clang/lib/CodeGen/CGOpenMPRuntime.cpp | ||
---|---|---|
8055–8057 | I haven't managed to locally reproduce the bot failures I saw today when trying to push this patch. Somehow they're dropping the present modifiers during codegen. I think it's due to memory corruption that my machines aren't managing to experience. The culprit seems to be that MapModifiers is local here, but the InfoGen call below stores it in a MapInfo as an ArrayRef, which becames a dangling ref by the time it's used. One solution is to change MapInfo to store a SmallVector instead. Another would be for MapInfo to store a second ArrayRef for C->getMotionModifiers(), which would be translated to runtime map flags later. I'm planning to try the latter solution tomorrow. I prefer it because it seems more space efficient and because it translates motion modifiers directly to runtime flags instead of translating to map type modifiers first. |
clang/lib/CodeGen/CGOpenMPRuntime.cpp | ||
---|---|---|
8055–8057 | 9f2f3b9de6314a009322b6081c792ebf9a469460 relands this patch with the latter solution. |
clang-format: please reformat the code