D82193 exposed a problem with global type definitions in
OMPConstants.h. This causes a race when running in thinLTO mode.
Types now live inside of OpenMPIRBuilder to prevent this from happening.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Since this is not a small change, I think it would be good if @hoyFB could test if this resolves the issue.
There is one small issue though:
llvm/lib/Transforms/IPO/OpenMPOpt.cpp | ||
---|---|---|
313 | I wasn't sure how to handle __VA_ARGS__ here, since we would need OMPBuilder in front of every type. Not sure if -Wno-unused-variable would be a good thing to do temporarily? Is there another way to handle __VA_ARGS__ here? |
Thanks for the quick turnaround! I confirm the change fixes our build break.
llvm/lib/Transforms/IPO/OpenMPOpt.cpp | ||
---|---|---|
313 | Could it be possible to use OMPBuilder. _Name, OMPBuilder. _ReturnType everywhere? |
LGTM.
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp | ||
---|---|---|
1125 | While we are here, remove uninitializeTypes | |
llvm/lib/Transforms/IPO/OpenMPOpt.cpp | ||
313 | Since this will (soonish) be replaced by tablegen definitions we can apply the following workaround: Keep your helper macros but add |
While we are here, remove uninitializeTypes