diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 03ac51d20f..d515acf4dc 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -5646,15 +5646,16 @@ public: auto succ = b2->block; - std::vector succ_q{b2->block}; + llvm::SmallSetVector succ_q; + succ_q.insert(b2->block); - for (usz j = 0; j < succ_q.size(); j++) + for (usz j = 0; j < 32 && j < succ_q.size(); j++) { if (!llvm::count(succ_range, (succ = succ_q[j]))) { for (auto pred : llvm::predecessors(succ)) { - succ_q.emplace_back(pred); + succ_q.insert(pred); } } else