MachineModuleInfoImpls.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //===- llvm/CodeGen/MachineModuleInfoImpls.cpp ----------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file implements object-file format specific implementations of
  11. // MachineModuleInfoImpl.
  12. //
  13. //===----------------------------------------------------------------------===//
  14. #include "llvm/CodeGen/MachineModuleInfoImpls.h"
  15. #include "llvm/ADT/DenseMap.h"
  16. #include "llvm/MC/MCSymbol.h"
  17. #include <cstdlib>
  18. #include <utility>
  19. using namespace llvm;
  20. //===----------------------------------------------------------------------===//
  21. // MachineModuleInfoMachO
  22. //===----------------------------------------------------------------------===//
  23. // Out of line virtual method.
  24. void MachineModuleInfoMachO::anchor() {}
  25. void MachineModuleInfoELF::anchor() {}
  26. static int SortSymbolPair(const void *LHS, const void *RHS) {
  27. using PairTy = std::pair<MCSymbol *, MachineModuleInfoImpl::StubValueTy>;
  28. const MCSymbol *LHSS = ((const PairTy *)LHS)->first;
  29. const MCSymbol *RHSS = ((const PairTy *)RHS)->first;
  30. return LHSS->getName().compare(RHSS->getName());
  31. }
  32. MachineModuleInfoImpl::SymbolListTy MachineModuleInfoImpl::getSortedStubs(
  33. DenseMap<MCSymbol *, MachineModuleInfoImpl::StubValueTy> &Map) {
  34. MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end());
  35. if (!List.empty())
  36. qsort(&List[0], List.size(), sizeof(List[0]), SortSymbolPair);
  37. Map.clear();
  38. return List;
  39. }