[llvm] [BOLT] Gadget scanner: analyze functions without CFG information (PR #133461)

Anatoly Trosinenko via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 7 12:39:53 PDT 2025


================
@@ -124,6 +124,27 @@ class TrackedRegisters {
   }
 };
 
+// Without CFG, we reset gadget scanning state when encountering an
+// unconditional branch. Note that BC.MIB->isUnconditionalBranch neither
+// considers indirect branches nor annotated tail calls as unconditional.
+static bool isStateTrackingBoundary(const BinaryContext &BC,
+                                    const MCInst &Inst) {
+  const MCInstrDesc &Desc = BC.MII->get(Inst.getOpcode());
+  // Adapted from llvm::MCInstrDesc::isUnconditionalBranch().
+  return Desc.isBranch() && Desc.isBarrier();
+}
+
+template <typename T> static void iterateOverInstrs(BinaryFunction &BF, T Fn) {
----------------
atrosinenko wrote:

Updated, thanks!

https://github.com/llvm/llvm-project/pull/133461


More information about the llvm-commits mailing list