12cab237bSDimitry Andric //===- llvm/CodeGen/MachineModuleInfoImpls.cpp ----------------------------===// 2f22ef01cSRoman Divacky // 3f22ef01cSRoman Divacky // The LLVM Compiler Infrastructure 4f22ef01cSRoman Divacky // 5f22ef01cSRoman Divacky // This file is distributed under the University of Illinois Open Source 6f22ef01cSRoman Divacky // License. See LICENSE.TXT for details. 7f22ef01cSRoman Divacky // 8f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 9f22ef01cSRoman Divacky // 10f22ef01cSRoman Divacky // This file implements object-file format specific implementations of 11f22ef01cSRoman Divacky // MachineModuleInfoImpl. 12f22ef01cSRoman Divacky // 13f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 14f22ef01cSRoman Divacky 15f22ef01cSRoman Divacky #include "llvm/CodeGen/MachineModuleInfoImpls.h" 162cab237bSDimitry Andric #include "llvm/ADT/DenseMap.h" 17f22ef01cSRoman Divacky #include "llvm/MC/MCSymbol.h" 182cab237bSDimitry Andric 19f22ef01cSRoman Divacky using namespace llvm; 20f22ef01cSRoman Divacky 21f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 22f22ef01cSRoman Divacky // MachineModuleInfoMachO 23f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 24f22ef01cSRoman Divacky 25f22ef01cSRoman Divacky // Out of line virtual method. 263861d79fSDimitry Andric void MachineModuleInfoMachO::anchor() {} 273861d79fSDimitry Andric void MachineModuleInfoELF::anchor() {} 28f22ef01cSRoman Divacky 292cab237bSDimitry Andric using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>; 302cab237bSDimitry Andric static int SortSymbolPair(const PairTy *LHS, const PairTy *RHS) { 312cab237bSDimitry Andric return LHS->first->getName().compare(RHS->first->getName()); 32f22ef01cSRoman Divacky } 33f22ef01cSRoman Divacky 34ff0cc061SDimitry Andric MachineModuleInfoImpl::SymbolListTy MachineModuleInfoImpl::getSortedStubs( 35ff0cc061SDimitry Andric DenseMap<MCSymbol *, MachineModuleInfoImpl::StubValueTy> &Map) { 36f22ef01cSRoman Divacky MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end()); 37f22ef01cSRoman Divacky 382cab237bSDimitry Andric array_pod_sort(List.begin(), List.end(), SortSymbolPair); 39ff0cc061SDimitry Andric 40ff0cc061SDimitry Andric Map.clear(); 41f22ef01cSRoman Divacky return List; 42f22ef01cSRoman Divacky } 43