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/ADT/STLExtras.h"
17#include "llvm/MC/MCSymbol.h"
18
19using namespace llvm;
20
21//===----------------------------------------------------------------------===//
22// MachineModuleInfoMachO
23//===----------------------------------------------------------------------===//
24
25// Out of line virtual method.
26void MachineModuleInfoMachO::anchor() {}
27void MachineModuleInfoELF::anchor() {}
28void MachineModuleInfoCOFF::anchor() {}
29void MachineModuleInfoWasm::anchor() {}
30
31using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>;
32static int SortSymbolPair(const PairTy *LHS, const PairTy *RHS) {
33 return LHS->first->getName().compare(RHS: RHS->first->getName());
34}
35
36MachineModuleInfoImpl::SymbolListTy MachineModuleInfoImpl::getSortedStubs(
37 DenseMap<MCSymbol *, MachineModuleInfoImpl::StubValueTy> &Map) {
38 MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end());
39
40 array_pod_sort(Start: List.begin(), End: List.end(), Compare: SortSymbolPair);
41
42 Map.clear();
43 return List;
44}
45
46using ExprStubPairTy = std::pair<MCSymbol *, const MCExpr *>;
47static int SortAuthStubPair(const ExprStubPairTy *LHS,
48 const ExprStubPairTy *RHS) {
49 return LHS->first->getName().compare(RHS: RHS->first->getName());
50}
51
52MachineModuleInfoImpl::ExprStubListTy MachineModuleInfoImpl::getSortedExprStubs(
53 DenseMap<MCSymbol *, const MCExpr *> &ExprStubs) {
54 MachineModuleInfoImpl::ExprStubListTy List(ExprStubs.begin(),
55 ExprStubs.end());
56
57 array_pod_sort(Start: List.begin(), End: List.end(), Compare: SortAuthStubPair);
58
59 ExprStubs.clear();
60 return List;
61}
62