/freebsd/contrib/llvm-project/lld/COFF/ |
H A D | ICF.cpp | 40 class ICF { class 42 ICF(COFFLinkerContext &c) : ctx(c){}; in ICF() function in lld::coff::ICF 80 bool ICF::isEligible(SectionChunk *c) { in isEligible() 108 void ICF::segregate(size_t begin, size_t end, bool constant) { in segregate() 134 bool ICF::assocEquals(const SectionChunk *a, const SectionChunk *b) { in assocEquals() 152 bool ICF::equalsConstant(const SectionChunk *a, const SectionChunk *b) { in equalsConstant() 185 bool ICF::equalsVariable(const SectionChunk *a, const SectionChunk *b) { in equalsVariable() 212 size_t ICF::findBoundary(size_t begin, size_t end) { in findBoundary() 219 void ICF::forEachClassRange(size_t begin, size_t end, in forEachClassRange() 229 void ICF::forEachClass(std::function<void(size_t, size_t)> fn) { in forEachClass() [all …]
|
H A D | Chunks.h | 224 friend class ICF; variable
|
/freebsd/contrib/llvm-project/lld/MachO/ |
H A D | ICF.cpp | 31 class ICF { class 33 ICF(std::vector<ConcatInputSection *> &inputs); 36 using EqualsFn = bool (ICF::*)(const ConcatInputSection *, 59 ICF::ICF(std::vector<ConcatInputSection *> &inputs) { in ICF() function in ICF 95 bool ICF::equalsConstant(const ConcatInputSection *ia, in equalsConstant() 176 bool ICF::equalsVariable(const ConcatInputSection *ia, in equalsVariable() 236 size_t ICF::findBoundary(size_t begin, size_t end) { in findBoundary() 245 void ICF::forEachClassRange(size_t begin, size_t end, in forEachClassRange() 256 void ICF::forEachClass(llvm::function_ref<void(size_t, size_t)> func) { in forEachClass() 284 void ICF::run() { in run() [all …]
|
H A D | Options.td | 89 …HelpText<"Generate STABS entries for symbols folded by ICF. These entries can then be used by dsym…
|
/freebsd/contrib/llvm-project/lld/ELF/ |
H A D | ICF.cpp | 98 template <class ELFT> class ICF { class 198 void ICF<ELFT>::segregate(size_t begin, size_t end, uint32_t eqClassBase, in segregate() 238 bool ICF<ELFT>::constantEq(const InputSection *secA, Relocs<RelTy> ra, in constantEq() 315 bool ICF<ELFT>::equalsConstant(const InputSection *a, const InputSection *b) { in equalsConstant() 338 bool ICF<ELFT>::variableEq(const InputSection *secA, Relocs<RelTy> ra, in variableEq() 376 bool ICF<ELFT>::equalsVariable(const InputSection *a, const InputSection *b) { in equalsVariable() 386 template <class ELFT> size_t ICF<ELFT>::findBoundary(size_t begin, size_t end) { in findBoundary() 400 void ICF<ELFT>::forEachClassRange(size_t begin, size_t end, in forEachClassRange() 411 void ICF<ELFT>::forEachClass(llvm::function_ref<void(size_t, size_t)> fn) { in forEachClass() 466 template <class ELFT> void ICF<ELFT>::run() { in run() [all …]
|
H A D | Options.td | 298 defm keep_unique: Eq<"keep-unique", "Do not fold this symbol during ICF">;
|
/freebsd/contrib/llvm-project/llvm/lib/Analysis/ |
H A D | MustExecute.cpp | 72 return ICF.hasICF(BB); in blockMayThrow() 81 ICF.clear(); in computeLoopSafetyInfo() 86 if (ICF.hasICF(&*BB)) { in computeLoopSafetyInfo() 95 ICF.insertInstructionTo(Inst, BB); in insertInstructionTo() 100 ICF.removeInstruction(Inst); in removeInstruction() 280 return !ICF.isDominatedByICFIFromSameBlock(&Inst) && in isGuaranteedToExecute()
|
/freebsd/contrib/llvm-project/lld/docs/MachO/ |
H A D | ld64-vs-lld.rst | 19 - ld64: This turns off ICF (deduplication pass) in the linker. 20 - LLD: This turns off ICF and string merging in the linker.
|
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/ |
H A D | GVN.cpp | 1461 if (Dep.isNonLocal() && !ICF->isDominatedByICFIFromSameBlock(&Inst)) in findLoadToHoistIntoPred() 1527 ICF->insertInstructionTo(NewLoad, UnavailableBlock); in eliminatePartiallyRedundantLoad() 1543 ICF->removeUsersOf(Load); in eliminatePartiallyRedundantLoad() 1592 ICF->isDominatedByICFIFromSameBlock(Load); in PerformLoadPRE() 1611 MustEnsureSafetyOfSpeculativeExecution || ICF->hasICF(TmpBB); in PerformLoadPRE() 1832 if (ICF->isDominatedByICFIFromSameBlock(Load)) in performLoopLoadPRE() 1960 ICF->removeUsersOf(Load); in processNonLocalLoad() 2236 ICF->removeUsersOf(L); in processLoad() 2630 ICF->removeUsersOf(I); in processInstruction() 2769 ICF = &ImplicitCFT; in runImpl() [all …]
|
/freebsd/contrib/llvm-project/lld/docs/ |
H A D | NewLLD.rst | 289 * ICF 293 ICF is an optimization to reduce output size by merging read-only sections 296 they are merged by ICF. It is known as an effective technique, 305 with the linker's default settings, your program should be safe with ICF. 307 On Unix, your program is generally not guaranteed to be safe with ICF, 309 LLD works fine with ICF for example.
|
/freebsd/usr.bin/clang/lld/ |
H A D | Makefile | 60 SRCS+= ELF/ICF.cpp
|
/freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/ |
H A D | MustExecute.h | 136 mutable ImplicitControlFlowTracking ICF; variable
|
/freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/ |
H A D | GVN.h | 227 ImplicitControlFlowTracking *ICF = nullptr;
|