1//===- llvm/CodeGen/MachineModuleInfoImpls.cpp ----------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file implements object-file format specific implementations of
10// MachineModuleInfoImpl.
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/CodeGen/MachineModuleInfoImpls.h"
15#include "llvm/ADT/DenseMap.h"
16#include "llvm/MC/MCSymbol.h"
17
18using namespace llvm;
19
20//===----------------------------------------------------------------------===//
21// MachineModuleInfoMachO
22//===----------------------------------------------------------------------===//
23
24// Out of line virtual method.
25void MachineModuleInfoMachO::anchor() {}
26void MachineModuleInfoELF::anchor() {}
27void MachineModuleInfoCOFF::anchor() {}
28
29using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>;
30static int SortSymbolPair(const PairTy *LHS, const PairTy *RHS) {
31  return LHS->first->getName().compare(RHS->first->getName());
32}
33
34MachineModuleInfoImpl::SymbolListTy MachineModuleInfoImpl::getSortedStubs(
35    DenseMap<MCSymbol *, MachineModuleInfoImpl::StubValueTy> &Map) {
36  MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end());
37
38  array_pod_sort(List.begin(), List.end(), SortSymbolPair);
39
40  Map.clear();
41  return List;
42}
43