Home
last modified time | relevance | path

Searched refs:ICF (Results 1 – 11 of 11) sorted by relevance

/freebsd-13.1/contrib/llvm-project/lld/COFF/
H A DICF.cpp41 class ICF { class
43 ICF(ICFLevel icfLevel) : icfLevel(icfLevel){}; in ICF() function in lld::coff::ICF
80 bool ICF::isEligible(SectionChunk *c) { in isEligible()
105 void ICF::segregate(size_t begin, size_t end, bool constant) { in segregate()
131 bool ICF::assocEquals(const SectionChunk *a, const SectionChunk *b) { in assocEquals()
149 bool ICF::equalsConstant(const SectionChunk *a, const SectionChunk *b) { in equalsConstant()
200 size_t ICF::findBoundary(size_t begin, size_t end) { in findBoundary()
207 void ICF::forEachClassRange(size_t begin, size_t end, in forEachClassRange()
217 void ICF::forEachClass(std::function<void(size_t, size_t)> fn) { in forEachClass()
249 void ICF::run(ArrayRef<Chunk *> vec) { in run()
[all …]
H A DChunks.h182 friend class ICF; variable
/freebsd-13.1/contrib/llvm-project/lld/MachO/
H A DICF.cpp24 class ICF { class
26 ICF(std::vector<ConcatInputSection *> &inputs);
43 ICF::ICF(std::vector<ConcatInputSection *> &inputs) { in ICF() function in ICF
184 size_t ICF::findBoundary(size_t begin, size_t end) { in findBoundary()
193 void ICF::forEachClassRange(size_t begin, size_t end, in forEachClassRange()
204 void ICF::forEachClass(std::function<void(size_t, size_t)> func) { in forEachClass()
232 void ICF::run() { in run()
287 void ICF::segregate( in segregate()
368 ICF(hashable).run(); in foldIdenticalSections()
/freebsd-13.1/contrib/llvm-project/lld/ELF/
H A DICF.cpp100 template <class ELFT> class ICF { class
200 void ICF<ELFT>::segregate(size_t begin, size_t end, uint32_t eqClassBase, in segregate()
240 bool ICF<ELFT>::constantEq(const InputSection *secA, ArrayRef<RelTy> ra, in constantEq()
314 bool ICF<ELFT>::equalsConstant(const InputSection *a, const InputSection *b) { in equalsConstant()
334 bool ICF<ELFT>::variableEq(const InputSection *secA, ArrayRef<RelTy> ra, in variableEq()
371 bool ICF<ELFT>::equalsVariable(const InputSection *a, const InputSection *b) { in equalsVariable()
378 template <class ELFT> size_t ICF<ELFT>::findBoundary(size_t begin, size_t end) { in findBoundary()
392 void ICF<ELFT>::forEachClassRange(size_t begin, size_t end, in forEachClassRange()
403 void ICF<ELFT>::forEachClass(llvm::function_ref<void(size_t, size_t)> fn) { in forEachClass()
458 template <class ELFT> void ICF<ELFT>::run() { in run()
[all …]
H A DOptions.td264 defm keep_unique: Eq<"keep-unique", "Do not fold this symbol during ICF">;
/freebsd-13.1/contrib/llvm-project/llvm/lib/Analysis/
H A DMustExecute.cpp74 return ICF.hasICF(BB); in blockMayThrow()
83 ICF.clear(); in computeLoopSafetyInfo()
88 if (ICF.hasICF(&*BB)) { in computeLoopSafetyInfo()
97 ICF.insertInstructionTo(Inst, BB); in insertInstructionTo()
102 ICF.removeInstruction(Inst); in removeInstruction()
273 return !ICF.isDominatedByICFIFromSameBlock(&Inst) && in isGuaranteedToExecute()
/freebsd-13.1/contrib/llvm-project/lld/docs/
H A DNewLLD.rst289 * 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-13.1/contrib/llvm-project/llvm/lib/Transforms/Scalar/
H A DGVN.cpp1294 ICF->isDominatedByICFIFromSameBlock(Load); in PerformLoadPRE()
1313 MustEnsureSafetyOfSpeculativeExecution || ICF->hasICF(TmpBB); in PerformLoadPRE()
1524 if (ICF->isDominatedByICFIFromSameBlock(Load)) in performLoopLoadPRE()
2309 ICF->removeUsersOf(I); in processInstruction()
2446 ICF = &ImplicitCFT; in runImpl()
2551 ICF->removeInstruction(I); in processBlock()
2605 ICF->insertInstructionTo(Instr, Pred); in performScalarPREInsertion()
2720 if (ICF->isDominatedByICFIFromSameBlock(CurInst)) in performScalarPRE()
2791 ICF->removeInstruction(CurInst); in performScalarPRE()
2884 ICF->clear(); in cleanupGlobalSets()
/freebsd-13.1/usr.bin/clang/lld/
H A DMakefile61 SRCS+= ELF/ICF.cpp
/freebsd-13.1/contrib/llvm-project/llvm/include/llvm/Analysis/
H A DMustExecute.h136 mutable ImplicitControlFlowTracking ICF; variable
/freebsd-13.1/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/
H A DGVN.h224 ImplicitControlFlowTracking *ICF = nullptr;