[llvm] [BOLT] Add support for safe-icf (PR #116275)
Alexander Yermolovich via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 13 15:18:53 PST 2024
================
@@ -27,15 +27,49 @@ class IdenticalCodeFolding : public BinaryFunctionPass {
return false;
if (BF.hasSDTMarker())
return false;
+ if (BF.hasAddressTaken())
+ return false;
return BinaryFunctionPass::shouldOptimize(BF);
}
public:
+ enum class ICFLevel {
+ None, // No ICF. (Default)
+ Safe, // Safe ICF for all sections.
+ All, // Aggressive ICF for code.
+ };
explicit IdenticalCodeFolding(const cl::opt<bool> &PrintPass)
: BinaryFunctionPass(PrintPass) {}
const char *getName() const override { return "identical-code-folding"; }
Error runOnFunctions(BinaryContext &BC) override;
+
+private:
+ /// Bit vector of memory addresses of vtables.
+ llvm::BitVector VtableBitVector;
----------------
ayermolo wrote:
My understanding random access is O(n) for it?
Considering how much debug information processing takes, seems fine?
https://github.com/llvm/llvm-project/pull/116275
More information about the llvm-commits
mailing list