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

Anatoly Trosinenko via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 10 11:17:24 PDT 2025


================
@@ -799,6 +799,19 @@ class BinaryFunction {
     return iterator_range<const_cfi_iterator>(cie_begin(), cie_end());
   }
 
+  /// Iterate over instructions (only if CFG is unavailable or not built yet).
+  iterator_range<InstrMapType::iterator> instrs() {
+    assert(!hasCFG() && "Iterate over basic blocks instead");
+    return make_range(Instructions.begin(), Instructions.end());
+  }
+  iterator_range<InstrMapType::const_iterator> instrs() const {
+    assert(!hasCFG() && "Iterate over basic blocks instead");
+    return make_range(Instructions.begin(), Instructions.end());
+  }
+
+  /// Returns whether there are any labels at Offset.
+  bool hasLabelAt(unsigned Offset) const { return Labels.count(Offset) != 0; }
+
----------------
atrosinenko wrote:

Is it acceptable to extend `BinaryFunction`'s interface this way?

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


More information about the llvm-commits mailing list