summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2022-01-14 18:49:50 -0800
committerQuentin Colombet <qcolombet@apple.com>2022-01-14 18:53:18 -0800
commita8ca4046e22d79c0521df3e78924255362d2be4a (patch)
treee1e51256e1239b4898f11c5fa29f7cd994aeccb6 /lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
parentb148348ad4863a78c5f1737c122dbc3026063aa6 (diff)
[LSR] Fix crash in Phi node with EHPad block
This fixes a crash I observed in issue #48708 where the LSR pass tries to insert an instruction in a basic block with only a catchswitch statement in there. This happens because the Phi node being evaluated assumes the same value for different basic blocks. If the basic block associated with the incoming value of the operand being evaluated has an EHPad terminator LSR skips optimizing it. But if that incoming value can come from multiple different blocks there can be some incoming basic blocks which are terminated in an EHPad. If these are then rewritten in RewriteForPhi the ones containing an EHPad terminator will hit the "Insertion point must be a normal instruction" assert in AdjustInsertPositionForExpand. This fix makes CollectLoopInvariantFixupsAndFormulae also ignore cases where the same value has another incoming basic block with an EHPad, same as it already does in case the primary value has one. Patch by Lorenz Brun <lorenz@brun.one> Differential Revision: https://reviews.llvm.org/D98378
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp')
0 files changed, 0 insertions, 0 deletions