LibJS: Don't try to merge blocks not ending in Jumps

This commit is contained in:
Hendiadyoin1 2022-11-08 20:13:55 +01:00 committed by Ali Mohammad Pur
parent 192897c269
commit 186237aec8
Notes: sideshowbarker 2024-07-17 05:09:48 +09:00

View File

@ -30,6 +30,9 @@ void MergeBlocks::perform(PassPipelineExecutable& executable)
if (executable.exported_blocks->contains(*entry.value.begin()))
continue;
if (entry.key->terminator()->type() != Instruction::Type::Jump)
continue;
{
InstructionStreamIterator it { entry.key->instruction_stream() };
auto& first_instruction = *it;
@ -95,6 +98,7 @@ void MergeBlocks::perform(PassPipelineExecutable& executable)
auto it = blocks_to_merge.begin();
auto const* current_block = *it;
blocks_to_merge.remove(it);
Vector<BasicBlock const*> successors { current_block };
for (;;) {
auto const* last = successors.last();