003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/include/llvm/Transforms/IPO
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
include
/
llvm
/
Transforms
/
IPO
/
📁
..
📄
AlwaysInliner.h
(1.6 KB)
📄
ArgumentPromotion.h
(1.75 KB)
📄
Attributor.h
(125.79 KB)
📄
CalledValuePropagation.h
(1.36 KB)
📄
ConstantMerge.h
(1.31 KB)
📄
CrossDSOCFI.h
(959 B)
📄
DeadArgumentElimination.h
(5.04 KB)
📄
ElimAvailExtern.h
(1.05 KB)
📄
ForceFunctionAttrs.h
(1.14 KB)
📄
FunctionAttrs.h
(2.93 KB)
📄
FunctionImport.h
(9.74 KB)
📄
GlobalDCE.h
(2.52 KB)
📄
GlobalOpt.h
(1.03 KB)
📄
GlobalSplit.h
(1.14 KB)
📄
HotColdSplitting.h
(2.53 KB)
📄
InferFunctionAttrs.h
(1.18 KB)
📄
Inliner.h
(5.91 KB)
📄
Internalize.h
(3.18 KB)
📄
LowerTypeTests.h
(7.68 KB)
📄
MergeFunctions.h
(1.03 KB)
📄
OpenMPOpt.h
(2.07 KB)
📄
PartialInlining.h
(1004 B)
📄
PassManagerBuilder.h
(10.26 KB)
📄
SCCP.h
(1.18 KB)
📄
SampleProfile.h
(1.31 KB)
📄
StripDeadPrototypes.h
(1.12 KB)
📄
SyntheticCountsPropagation.h
(747 B)
📄
ThinLTOBitcodeWriter.h
(1.34 KB)
📄
WholeProgramDevirt.h
(9.77 KB)
Editing: GlobalDCE.h
//===-- GlobalDCE.h - DCE unreachable internal functions ------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This transform is designed to eliminate unreachable internal globals from the // program. It uses an aggressive algorithm, searching out globals that are // known to be alive. After it finds all of the globals which are needed, it // deletes whatever is left over. This allows it to delete recursive chunks of // the program which are unreachable. // //===----------------------------------------------------------------------===// #ifndef LLVM_TRANSFORMS_IPO_GLOBALDCE_H #define LLVM_TRANSFORMS_IPO_GLOBALDCE_H #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallSet.h" #include "llvm/IR/Module.h" #include "llvm/IR/PassManager.h" #include <unordered_map> namespace llvm { /// Pass to remove unused function declarations. class GlobalDCEPass : public PassInfoMixin<GlobalDCEPass> { public: PreservedAnalyses run(Module &M, ModuleAnalysisManager &); private: SmallPtrSet<GlobalValue*, 32> AliveGlobals; /// Global -> Global that uses this global. DenseMap<GlobalValue *, SmallPtrSet<GlobalValue *, 4>> GVDependencies; /// Constant -> Globals that use this global cache. std::unordered_map<Constant *, SmallPtrSet<GlobalValue *, 8>> ConstantDependenciesCache; /// Comdat -> Globals in that Comdat section. std::unordered_multimap<Comdat *, GlobalValue *> ComdatMembers; /// !type metadata -> set of (vtable, offset) pairs DenseMap<Metadata *, SmallSet<std::pair<GlobalVariable *, uint64_t>, 4>> TypeIdMap; // Global variables which are vtables, and which we have enough information // about to safely do dead virtual function elimination. SmallPtrSet<GlobalValue *, 32> VFESafeVTables; void UpdateGVDependencies(GlobalValue &GV); void MarkLive(GlobalValue &GV, SmallVectorImpl<GlobalValue *> *Updates = nullptr); bool RemoveUnusedGlobalValue(GlobalValue &GV); // Dead virtual function elimination. void AddVirtualFunctionDependencies(Module &M); void ScanVTables(Module &M); void ScanTypeCheckedLoadIntrinsics(Module &M); void ScanVTableLoad(Function *Caller, Metadata *TypeId, uint64_t CallOffset); void ComputeDependencies(Value *V, SmallPtrSetImpl<GlobalValue *> &U); }; } #endif // LLVM_TRANSFORMS_IPO_GLOBALDCE_H
Upload File
Create Folder