diff options
author | JF Bastien <jfbastien@apple.com> | 2019-02-15 17:26:29 +0000 |
---|---|---|
committer | JF Bastien <jfbastien@apple.com> | 2019-02-15 17:26:29 +0000 |
commit | 0bae08ae7698869f17b7341f8378cf2de0502be8 (patch) | |
tree | 82e05a7286ac5ae31dadcde2019cd93b48db8649 /lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp | |
parent | d9c4646d051ad6d61a1949df808e0e6f8cb2892a (diff) | |
download | bcm5719-llvm-0bae08ae7698869f17b7341f8378cf2de0502be8.tar.gz bcm5719-llvm-0bae08ae7698869f17b7341f8378cf2de0502be8.zip |
Variable auto-init of blocks capturing self after init bugfix
Summary:
Blocks that capture themselves (and escape) after initialization currently codegen wrong because this:
bool capturedByInit =
Init && emission.IsEscapingByRef && isCapturedBy(D, Init);
Address Loc =
capturedByInit ? emission.Addr : emission.getObjectAddress(*this);
Already adjusts Loc from thr alloca to a GEP. This code:
if (emission.IsEscapingByRef)
Loc = emitBlockByrefAddress(Loc, &D, /*follow=*/false);
Was trying to do the same adjustment, and a GEP on a GEP (returning an int) triggers an assertion.
<rdar://problem/47943027>
Reviewers: ahatanak
Subscribers: jkorous, dexonsmith, cfe-commits, rjmccall
Tags: #clang
Differential Revision: https://reviews.llvm.org/D58218
llvm-svn: 354147
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp')
0 files changed, 0 insertions, 0 deletions