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 | |
18 | using namespace llvm; |
19 | |
20 | //===----------------------------------------------------------------------===// |
21 | // MachineModuleInfoMachO |
22 | //===----------------------------------------------------------------------===// |
23 | |
24 | // Out of line virtual method. |
25 | void MachineModuleInfoMachO::anchor() {} |
26 | void MachineModuleInfoELF::anchor() {} |
27 | void MachineModuleInfoCOFF::anchor() {} |
28 | void MachineModuleInfoWasm::anchor() {} |
29 | |
30 | using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>; |
31 | static int SortSymbolPair(const PairTy *LHS, const PairTy *RHS) { |
32 | return LHS->first->getName().compare(RHS: RHS->first->getName()); |
33 | } |
34 | |
35 | MachineModuleInfoImpl::SymbolListTy MachineModuleInfoImpl::getSortedStubs( |
36 | DenseMap<MCSymbol *, MachineModuleInfoImpl::StubValueTy> &Map) { |
37 | MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end()); |
38 | |
39 | array_pod_sort(Start: List.begin(), End: List.end(), Compare: SortSymbolPair); |
40 | |
41 | Map.clear(); |
42 | return List; |
43 | } |
44 |