Avoid use of stack allocations in asynchronous calls
NOTE: This is an adaption of the original patch to be applicable to the
LLVM 12 release branch. Logic is the same though.
As reported by Guilherme Valarini [0], we used to pass stack allocations
to calls that can nowadays be asynchronous. This is arguably a problem
and it will inevitably result in UB. To remedy the situation we allocate
the locations as part of the AsyncInfoTy object. The lifetime of that
object matches what we need for now. If the synchronization is not tied
to the AsyncInfoTy object anymore we might need to have a different
buffer construct in global space.
This should be back-ported to LLVM 12 but needs slight modifications as
it is based on refactoring patches we do not need to backport.
[0] https://lists.llvm.org/pipermail/openmp-dev/2021-February/003867.html
Differential Revision: https://reviews.llvm.org/D96667
parent
ee7eaf86
Please register or sign in to comment