aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bcardosolopes@users.noreply.github.com>2023-09-22 02:52:05 -0300
committerGitHub <noreply@github.com>2023-09-21 22:52:05 -0700
commit34415fd611e2d92da570bc4adf931a6410fb406e (patch)
treed6fed77224d578665849464ed014e24aa513b14b /llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
parentc618e131611c8d24a64dc3899f32a9aa52f18182 (diff)
downloadllvm-34415fd611e2d92da570bc4adf931a6410fb406e.zip
llvm-34415fd611e2d92da570bc4adf931a6410fb406e.tar.gz
llvm-34415fd611e2d92da570bc4adf931a6410fb406e.tar.bz2
[Clang][LLVM][Coroutines] Prevent __coro_gro from outliving __promise (#66706)
When dealing with short-circuiting coroutines (e.g. expected), the deferred calls that resolve the get_return_object are currently being emitted after we delete the coroutine frame. This was caught by ASAN when using optimizations -O1 and above: optimizations after inlining would place the __coro_gro in the heap, and subsequent delete of the coroframe followed by the conversion -> BOOM. This patch forbids the GRO to be placed in the coroutine frame, by adding a new metadata node that can be attached to `alloca` instructions. Fix #49843
Diffstat (limited to 'llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp')
0 files changed, 0 insertions, 0 deletions