From 96fc7ea76dd22a15e67e318c6f930a3ca9aa4fad Mon Sep 17 00:00:00 2001 From: Rick Lavoie Date: Mon, 26 Aug 2019 18:42:04 -0700 Subject: [PATCH] Remove trivial nops before jump optimizations Summary: Some vasm passes can leave behind trivial nops. These will eventually get cleaned up before code emission, but they may hang around for multiple passes. The presence of trivial nops can inhibit some optimizations that optimizeJmps performs, so clean them up before running the pass. Reviewed By: ottoni, mxw Differential Revision: D17053304 fbshipit-source-id: 2f80cb6ad72a639667ddf95e62585726f9327ff9 --- hphp/runtime/vm/jit/vasm-jumps.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hphp/runtime/vm/jit/vasm-jumps.cpp b/hphp/runtime/vm/jit/vasm-jumps.cpp index e350a54604c..2f4c27ad436 100644 --- a/hphp/runtime/vm/jit/vasm-jumps.cpp +++ b/hphp/runtime/vm/jit/vasm-jumps.cpp @@ -274,6 +274,8 @@ void optimizeJmps(Vunit& unit, MaybeVinstrId clobber) { bool changed = false; bool ever_changed = false; + removeTrivialNops(unit); + // The number of incoming edges from (reachable) predecessors for each block. jit::vector npreds(unit.blocks.size(), 0); -- 2.11.4.GIT