Changeset View
Changeset View
Standalone View
Standalone View
llvm/include/llvm/Transforms/IPO/WholeProgramDevirt.h
Show First 20 Lines • Show All 230 Lines • ▼ Show 20 Lines | struct WholeProgramDevirtPass : public PassInfoMixin<WholeProgramDevirtPass> { | ||||
PreservedAnalyses run(Module &M, ModuleAnalysisManager &); | PreservedAnalyses run(Module &M, ModuleAnalysisManager &); | ||||
}; | }; | ||||
struct VTableSlotSummary { | struct VTableSlotSummary { | ||||
StringRef TypeID; | StringRef TypeID; | ||||
uint64_t ByteOffset; | uint64_t ByteOffset; | ||||
}; | }; | ||||
void updateVCallVisibilityInModule(Module &M, | |||||
bool WholeProgramVisibilityEnabledInLTO); | |||||
void updateVCallVisibilityInIndex(ModuleSummaryIndex &Index, | |||||
bool WholeProgramVisibilityEnabledInLTO); | |||||
/// Perform index-based whole program devirtualization on the \p Summary | /// Perform index-based whole program devirtualization on the \p Summary | ||||
/// index. Any devirtualized targets used by a type test in another module | /// index. Any devirtualized targets used by a type test in another module | ||||
/// are added to the \p ExportedGUIDs set. For any local devirtualized targets | /// are added to the \p ExportedGUIDs set. For any local devirtualized targets | ||||
/// only used within the defining module, the information necessary for | /// only used within the defining module, the information necessary for | ||||
/// locating the corresponding WPD resolution is recorded for the ValueInfo | /// locating the corresponding WPD resolution is recorded for the ValueInfo | ||||
/// in case it is exported by cross module importing (in which case the | /// in case it is exported by cross module importing (in which case the | ||||
/// devirtualized target name will need adjustment). | /// devirtualized target name will need adjustment). | ||||
void runWholeProgramDevirtOnIndex( | void runWholeProgramDevirtOnIndex( | ||||
Show All 13 Lines |