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. anchor()263861d79fSDimitry Andricvoid MachineModuleInfoMachO::anchor() {} anchor()273861d79fSDimitry Andricvoid MachineModuleInfoELF::anchor() {} anchor()28*b5893f02SDimitry Andricvoid MachineModuleInfoCOFF::anchor() {} 29f22ef01cSRoman Divacky 302cab237bSDimitry Andric using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>; SortSymbolPair(const PairTy * LHS,const PairTy * RHS)312cab237bSDimitry Andricstatic int SortSymbolPair(const PairTy *LHS, const PairTy *RHS) { 322cab237bSDimitry Andric return LHS->first->getName().compare(RHS->first->getName()); 33f22ef01cSRoman Divacky } 34f22ef01cSRoman Divacky getSortedStubs(DenseMap<MCSymbol *,MachineModuleInfoImpl::StubValueTy> & Map)35ff0cc061SDimitry AndricMachineModuleInfoImpl::SymbolListTy MachineModuleInfoImpl::getSortedStubs( 36ff0cc061SDimitry Andric DenseMap<MCSymbol *, MachineModuleInfoImpl::StubValueTy> &Map) { 37f22ef01cSRoman Divacky MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end()); 38f22ef01cSRoman Divacky 392cab237bSDimitry Andric array_pod_sort(List.begin(), List.end(), SortSymbolPair); 40ff0cc061SDimitry Andric 41ff0cc061SDimitry Andric Map.clear(); 42f22ef01cSRoman Divacky return List; 43f22ef01cSRoman Divacky } 44