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