summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/expression_command/timeout/TestCallWithTimeout.py
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2019-07-25 17:59:29 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2019-07-25 17:59:29 +0000
commit930df11a0d00c467b17c76f2b782a96bf721599b (patch)
treeae52fcdfc3035a15d5a0e44ae5a162a29bf17bbc /lldb/packages/Python/lldbsuite/test/expression_command/timeout/TestCallWithTimeout.py
parentbaeab1fc442e2781d0d527f22b3ff4722a35f11c (diff)
downloadbcm5719-llvm-930df11a0d00c467b17c76f2b782a96bf721599b.tar.gz
bcm5719-llvm-930df11a0d00c467b17c76f2b782a96bf721599b.zip
CodeGen: ensure placeholder instruction for cleanup is created
A placeholder instruction for use in generation of cleanup code for an initializer list would not be emitted if the base class contained a non-trivial destructor and the class contains no fields of its own. This would be the case when using CTAD to deduce the template arguments for a struct with an overloaded call operator, e.g. ``` template <class... Ts> struct ctad : Ts... {}; template <class... Ts> ctad(Ts...)->ctad<Ts...>; ``` and this class was initialized with a list of lambdas capturing by copy, e.g. ``` ctad c {[s](short){}, [s](long){}}; ``` In a release build the bug would manifest itself as a crash in the SROA pass, however, in a debug build the following assert in CGCleanup.cpp would fail: ``` assert(dominatingIP && "no existing variable and no dominating IP!"); ``` By ensuring that a placeholder instruction is emitted even if there's no fields in the class, neither the assert nor the crash is reproducible. See https://bugs.llvm.org/show_bug.cgi?id=40771 Patch by Øystein Dale! llvm-svn: 367042
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/timeout/TestCallWithTimeout.py')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud