1f22ef01cSRoman Divacky //===-- 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" 16f22ef01cSRoman Divacky #include "llvm/MC/MCSymbol.h" 17f22ef01cSRoman Divacky using namespace llvm; 18f22ef01cSRoman Divacky 19f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 20f22ef01cSRoman Divacky // MachineModuleInfoMachO 21f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 22f22ef01cSRoman Divacky 23f22ef01cSRoman Divacky // Out of line virtual method. 243861d79fSDimitry Andric void MachineModuleInfoMachO::anchor() {} 253861d79fSDimitry Andric void MachineModuleInfoELF::anchor() {} 26f22ef01cSRoman Divacky 27f22ef01cSRoman Divacky static int SortSymbolPair(const void *LHS, const void *RHS) { 28f22ef01cSRoman Divacky typedef std::pair<MCSymbol*, MachineModuleInfoImpl::StubValueTy> PairTy; 29f22ef01cSRoman Divacky const MCSymbol *LHSS = ((const PairTy *)LHS)->first; 30f22ef01cSRoman Divacky const MCSymbol *RHSS = ((const PairTy *)RHS)->first; 31f22ef01cSRoman Divacky return LHSS->getName().compare(RHSS->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 38f22ef01cSRoman Divacky if (!List.empty()) 39f22ef01cSRoman Divacky qsort(&List[0], List.size(), sizeof(List[0]), SortSymbolPair); 40ff0cc061SDimitry Andric 41ff0cc061SDimitry Andric Map.clear(); 42f22ef01cSRoman Divacky return List; 43f22ef01cSRoman Divacky } 44f22ef01cSRoman Divacky 45