17#ifndef LLVM_TRANSFORMS_IPO_GLOBALDCE_H
18#define LLVM_TRANSFORMS_IPO_GLOBALDCE_H
25#include <unordered_map>
40 GlobalDCEPass(
bool InLTOPostLink =
false) : InLTOPostLink(InLTOPostLink) {}
49 bool InLTOPostLink =
false;
57 std::unordered_map<Constant *, SmallPtrSet<GlobalValue *, 8>>
58 ConstantDependenciesCache;
61 std::unordered_multimap<Comdat *, GlobalValue *> ComdatMembers;
76 void AddVirtualFunctionDependencies(
Module &M);
77 void ScanVTables(
Module &M);
78 void ScanTypeCheckedLoadIntrinsics(
Module &M);
This file defines the DenseMap class.
This header defines various interfaces for pass management in LLVM.
This file defines the SmallSet class.
This is an important base class in LLVM.
LLVM_ABI void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
GlobalDCEPass(bool InLTOPostLink=false)
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &)
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
An efficient, type-erasing, non-owning reference to a callable.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI ModulePass * createGlobalDCEPass()
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
A CRTP mix-in to automatically provide informational APIs needed for passes.