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 Andric void MachineModuleInfoMachO::anchor() {}
anchor()273861d79fSDimitry Andric void MachineModuleInfoELF::anchor() {}
anchor()28*b5893f02SDimitry Andric void MachineModuleInfoCOFF::anchor() {}
29f22ef01cSRoman Divacky 
302cab237bSDimitry Andric using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>;
SortSymbolPair(const PairTy * LHS,const PairTy * RHS)312cab237bSDimitry Andric static 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 Andric MachineModuleInfoImpl::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