Vauto::~Vauto() { auto& areas = this->areas(); for (auto& b : unit().blocks) { if (!b.code.empty()) { // Found at least one nonempty block. Finish up. if (!main().closed()) { main() << fallthru{}; } assertx(areas.size() < 2 || cold().empty() || cold().closed()); assertx(areas.size() < 3 || frozen().empty() || frozen().closed()); Trace::Bump bumper{Trace::printir, 10}; // prevent spurious printir switch (arch()) { case Arch::X64: optimizeX64(unit(), vauto_abi); emitX64(unit(), areas, nullptr); break; case Arch::ARM: finishARM(unit(), areas, vauto_abi, nullptr); break; } return; } } }
Vauto::~Vauto() { for (auto& b : unit().blocks) { if (!b.code.empty()) { // Found at least one nonempty block. Finish up. if (!main().closed()) main() << fallthru{}; // Prevent spurious printir traces. Trace::Bump bumper{Trace::printir, 10}; switch (arch()) { case Arch::X64: optimizeX64(unit(), abi(m_kind)); emitX64(unit(), m_text, nullptr); break; case Arch::ARM: finishARM(unit(), m_text, abi(m_kind), nullptr); break; } return; } } }