LLVM 19.0.0git
MachineModuleInfoImpls.h
Go to the documentation of this file.
1//===- llvm/CodeGen/MachineModuleInfoImpls.h --------------------*- C++ -*-===//
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 defines object-file format specific implementations of
10// MachineModuleInfoImpl.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H
15#define LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H
16
17#include "llvm/ADT/DenseMap.h"
18#include "llvm/ADT/SetVector.h"
20#include <cassert>
21
22namespace llvm {
23
24class MCSymbol;
25
26/// MachineModuleInfoMachO - This is a MachineModuleInfoImpl implementation
27/// for MachO targets.
29 /// GVStubs - Darwin '$non_lazy_ptr' stubs. The key is something like
30 /// "Lfoo$non_lazy_ptr", the value is something like "_foo". The extra bit
31 /// is true if this GV is external.
33
34 /// ThreadLocalGVStubs - Darwin '$non_lazy_ptr' stubs. The key is something
35 /// like "Lfoo$non_lazy_ptr", the value is something like "_foo". The extra
36 /// bit is true if this GV is external.
37 DenseMap<MCSymbol *, StubValueTy> ThreadLocalGVStubs;
38
39 virtual void anchor(); // Out of line virtual method.
40
41public:
43
45 assert(Sym && "Key cannot be null");
46 return GVStubs[Sym];
47 }
48
50 assert(Sym && "Key cannot be null");
51 return ThreadLocalGVStubs[Sym];
52 }
53
54 /// Accessor methods to return the set of stubs in sorted order.
57 return getSortedStubs(ThreadLocalGVStubs);
58 }
59};
60
61/// MachineModuleInfoELF - This is a MachineModuleInfoImpl implementation
62/// for ELF targets.
64 /// GVStubs - These stubs are used to materialize global addresses in PIC
65 /// mode.
67
68 virtual void anchor(); // Out of line virtual method.
69
70public:
72
74 assert(Sym && "Key cannot be null");
75 return GVStubs[Sym];
76 }
77
78 /// Accessor methods to return the set of stubs in sorted order.
79
81};
82
83/// MachineModuleInfoCOFF - This is a MachineModuleInfoImpl implementation
84/// for COFF targets.
86 /// GVStubs - These stubs are used to materialize global addresses in PIC
87 /// mode.
89
90 virtual void anchor(); // Out of line virtual method.
91
92public:
94
96 assert(Sym && "Key cannot be null");
97 return GVStubs[Sym];
98 }
99
100 /// Accessor methods to return the set of stubs in sorted order.
101
103};
104
105/// MachineModuleInfoWasm - This is a MachineModuleInfoImpl implementation
106/// for Wasm targets.
108 virtual void anchor(); // Out of line virtual method.
109
110public:
112
114};
115
116} // end namespace llvm
117
118#endif // LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H
This file defines the DenseMap class.
Symbol * Sym
Definition: ELF_riscv.cpp:479
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file implements a set that has insertion order iteration characteristics.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition: MCSymbol.h:40
MachineModuleInfoCOFF - This is a MachineModuleInfoImpl implementation for COFF targets.
StubValueTy & getGVStubEntry(MCSymbol *Sym)
SymbolListTy GetGVStubList()
Accessor methods to return the set of stubs in sorted order.
MachineModuleInfoCOFF(const MachineModuleInfo &)
MachineModuleInfoELF - This is a MachineModuleInfoImpl implementation for ELF targets.
MachineModuleInfoELF(const MachineModuleInfo &)
StubValueTy & getGVStubEntry(MCSymbol *Sym)
SymbolListTy GetGVStubList()
Accessor methods to return the set of stubs in sorted order.
This class can be derived from and used by targets to hold private target-specific information for ea...
std::vector< std::pair< MCSymbol *, StubValueTy > > SymbolListTy
static SymbolListTy getSortedStubs(DenseMap< MCSymbol *, StubValueTy > &)
Return the entries from a DenseMap in a deterministic sorted orer.
MachineModuleInfoMachO - This is a MachineModuleInfoImpl implementation for MachO targets.
StubValueTy & getGVStubEntry(MCSymbol *Sym)
StubValueTy & getThreadLocalGVStubEntry(MCSymbol *Sym)
SymbolListTy GetGVStubList()
Accessor methods to return the set of stubs in sorted order.
MachineModuleInfoMachO(const MachineModuleInfo &)
MachineModuleInfoWasm - This is a MachineModuleInfoImpl implementation for Wasm targets.
MachineModuleInfoWasm(const MachineModuleInfo &)
SetVector< StringRef > MachineSymbolsUsed
This class contains meta information specific to a module.
PointerIntPair - This class implements a pair of a pointer and small integer.
A vector that has set insertion semantics.
Definition: SetVector.h:57
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18