1686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//===-- llvm/CodeGen/MachineModuleInfoImpls.cpp ---------------------------===//
2686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//
3686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//                     The LLVM Compiler Infrastructure
4686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//
5686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner// This file is distributed under the University of Illinois Open Source
6686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner// License. See LICENSE.TXT for details.
7686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//
8686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//===----------------------------------------------------------------------===//
9686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//
10686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner// This file implements object-file format specific implementations of
11686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner// MachineModuleInfoImpl.
12686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//
13686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//===----------------------------------------------------------------------===//
14686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner
15686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner#include "llvm/CodeGen/MachineModuleInfoImpls.h"
16686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner#include "llvm/MC/MCSymbol.h"
17686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattnerusing namespace llvm;
18686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner
19686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//===----------------------------------------------------------------------===//
20686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner// MachineModuleInfoMachO
21686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner//===----------------------------------------------------------------------===//
22686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner
23686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner// Out of line virtual method.
244bb51cc83badd77bdc482b0594b72cb177f052f6Craig Toppervoid MachineModuleInfoMachO::anchor() {}
254bb51cc83badd77bdc482b0594b72cb177f052f6Craig Toppervoid MachineModuleInfoELF::anchor() {}
26686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner
27686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattnerstatic int SortSymbolPair(const void *LHS, const void *RHS) {
28cebae36f57456fe6b0e13726acd1e0250654f02dBill Wendling  typedef std::pair<MCSymbol*, MachineModuleInfoImpl::StubValueTy> PairTy;
29cebae36f57456fe6b0e13726acd1e0250654f02dBill Wendling  const MCSymbol *LHSS = ((const PairTy *)LHS)->first;
30cebae36f57456fe6b0e13726acd1e0250654f02dBill Wendling  const MCSymbol *RHSS = ((const PairTy *)RHS)->first;
31686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner  return LHSS->getName().compare(RHSS->getName());
32686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner}
33686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner
34686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner/// GetSortedStubs - Return the entries from a DenseMap in a deterministic
35686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner/// sorted orer.
369184b25fa543a900463215c11635c2c014ddb623Anton KorobeynikovMachineModuleInfoImpl::SymbolListTy
379184b25fa543a900463215c11635c2c014ddb623Anton KorobeynikovMachineModuleInfoImpl::GetSortedStubs(const DenseMap<MCSymbol*,
38cebae36f57456fe6b0e13726acd1e0250654f02dBill Wendling                                      MachineModuleInfoImpl::StubValueTy>&Map) {
399184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov  MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end());
409184b25fa543a900463215c11635c2c014ddb623Anton Korobeynikov
41f4f1b266fd83c819ea2cf7cbd9bcd377d95c4eb6Benjamin Kramer  if (!List.empty())
42f4f1b266fd83c819ea2cf7cbd9bcd377d95c4eb6Benjamin Kramer    qsort(&List[0], List.size(), sizeof(List[0]), SortSymbolPair);
43686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner  return List;
44686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner}
45686cb3df6a7c88f2c6f29b02064e6f7dc8658d3fChris Lattner
46