LLVM  12.0.0git
Classes | Namespaces | Functions
WholeProgramDevirt.h File Reference
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Transforms/IPO/FunctionImport.h"
#include <cassert>
#include <cstdint>
#include <set>
#include <utility>
#include <vector>
Include dependency graph for WholeProgramDevirt.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::ArrayRef< T >
 ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory), i.e. More...
 
class  llvm::MutableArrayRef< T >
 MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memory), i.e. More...
 
struct  llvm::wholeprogramdevirt::AccumBitVector
 
struct  llvm::wholeprogramdevirt::VTableBits
 
struct  llvm::wholeprogramdevirt::TypeMemberInfo
 
struct  llvm::wholeprogramdevirt::VirtualCallTarget
 
struct  llvm::WholeProgramDevirtPass
 
struct  llvm::VTableSlotSummary
 

Namespaces

 llvm
 This class represents lattice values for constants.
 
 llvm::wholeprogramdevirt
 

Functions

uint64_t llvm::wholeprogramdevirt::findLowestOffset (ArrayRef< VirtualCallTarget > Targets, bool IsAfter, uint64_t Size)
 
void llvm::wholeprogramdevirt::setBeforeReturnValues (MutableArrayRef< VirtualCallTarget > Targets, uint64_t AllocBefore, unsigned BitWidth, int64_t &OffsetByte, uint64_t &OffsetBit)
 
void llvm::wholeprogramdevirt::setAfterReturnValues (MutableArrayRef< VirtualCallTarget > Targets, uint64_t AllocAfter, unsigned BitWidth, int64_t &OffsetByte, uint64_t &OffsetBit)
 
void llvm::updateVCallVisibilityInModule (Module &M, bool WholeProgramVisibilityEnabledInLTO)
 If whole program visibility asserted, then upgrade all public vcall visibility metadata on vtable definitions to linkage unit visibility in Module IR (for regular or hybrid LTO). More...
 
void llvm::updateVCallVisibilityInIndex (ModuleSummaryIndex &Index, bool WholeProgramVisibilityEnabledInLTO)
 If whole program visibility asserted, then upgrade all public vcall visibility metadata on vtable definition summaries to linkage unit visibility in Module summary index (for ThinLTO). More...
 
void llvm::runWholeProgramDevirtOnIndex (ModuleSummaryIndex &Summary, std::set< GlobalValue::GUID > &ExportedGUIDs, std::map< ValueInfo, std::vector< VTableSlotSummary >> &LocalWPDTargetsMap)
 Perform index-based whole program devirtualization on the Summary index. More...
 
void llvm::updateIndexWPDForExports (ModuleSummaryIndex &Summary, function_ref< bool(StringRef, ValueInfo)> isExported, std::map< ValueInfo, std::vector< VTableSlotSummary >> &LocalWPDTargetsMap)
 Call after cross-module importing to update the recorded single impl devirt target names for any locals that were exported. More...