LLVM: include/llvm/MC/MCSymbolXCOFF.h Source File (original) (raw)
1
2
3
4
5
6
7
8#ifndef LLVM_MC_MCSYMBOLXCOFF_H
9#define LLVM_MC_MCSYMBOLXCOFF_H
10
15
16namespace llvm {
17
19
21
22 enum XCOFFSymbolFlags : uint16_t { SF_EHInfo = 0x0001 };
23
24public:
27
29
31 if (Name.back() == ']') {
33 std::tie(Lhs, Rhs) = Name.rsplit('[');
34 assert(!Rhs.empty() && "Invalid SMC format in XCOFF symbol.");
35 return Lhs;
36 }
37 return Name;
38 }
39
43 StorageClass = SC;
44 };
45
47 assert(StorageClass && "StorageClass not set on XCOFF MCSymbol.");
48 return *StorageClass;
49 }
50
52
54
56
58
60
61 bool hasRename() const { return HasRename; }
62
64 SymbolTableName = STN;
65 HasRename = true;
66 }
67
70 return SymbolTableName;
72 }
73
75
77
79
82 "Requested code model for symbol without one");
83 return *PerSymbolCodeModel;
84 }
85
87 PerSymbolCodeModel = Model;
88 }
89
90private:
91 std::optionalXCOFF::StorageClass StorageClass;
92 std::optional PerSymbolCodeModel;
93
97 bool HasRename = false;
98};
99
100}
101
102#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
XCOFF::VisibilityType getVisibilityType() const
Definition MCSymbolXCOFF.h:59
void setExternal(bool Value) const
Definition MCSymbolXCOFF.h:41
StringRef getSymbolTableName() const
Definition MCSymbolXCOFF.h:68
bool isExternal() const
Definition MCSymbolXCOFF.h:40
MCSymbolXCOFF(const MCSymbolTableEntry *Name, bool isTemporary)
Definition MCSymbolXCOFF.h:25
XCOFF::StorageClass getStorageClass() const
Definition MCSymbolXCOFF.h:46
bool hasPerSymbolCodeModel() const
Definition MCSymbolXCOFF.h:78
bool hasRename() const
Definition MCSymbolXCOFF.h:61
void setVisibilityType(XCOFF::VisibilityType SVT)
Definition MCSymbolXCOFF.h:57
void setEHInfo() const
Definition MCSymbolXCOFF.h:76
CodeModel getPerSymbolCodeModel() const
Definition MCSymbolXCOFF.h:80
CodeModel
Definition MCSymbolXCOFF.h:28
@ CM_Small
Definition MCSymbolXCOFF.h:28
@ CM_Large
Definition MCSymbolXCOFF.h:28
bool isEHInfo() const
Definition MCSymbolXCOFF.h:74
void setRepresentedCsect(MCSectionXCOFF *C)
static StringRef getUnqualifiedName(StringRef Name)
Definition MCSymbolXCOFF.h:30
void setSymbolTableName(StringRef STN)
Definition MCSymbolXCOFF.h:63
void setPerSymbolCodeModel(MCSymbolXCOFF::CodeModel Model)
Definition MCSymbolXCOFF.h:86
void setStorageClass(XCOFF::StorageClass SC)
Definition MCSymbolXCOFF.h:42
StringRef getUnqualifiedName() const
Definition MCSymbolXCOFF.h:51
MCSectionXCOFF * getRepresentedCsect() const
MCSymbol(const MCSymbolTableEntry *Name, bool isTemporary)
void modifyFlags(uint32_t Value, uint32_t Mask) const
Modify the flags via a mask.
StringRef getName() const
getName - Get the symbol name.
uint32_t getFlags() const
Get the (implementation defined) symbol flags.
unsigned IsExternal
True if this symbol is visible outside this translation unit.
bool isTemporary() const
isTemporary - Check if this is an assembler temporary symbol.
const MCExpr * Value
If non-null, the value for a variable symbol.
StringRef - Represent a constant reference to a string, i.e.
constexpr bool empty() const
empty - Check if the string is empty.
@ C
The default llvm calling convention, compatible with C.
VisibilityType
Values for visibility as they would appear when encoded in the high 4 bits of the 16-bit unsigned n_t...
This is an optimization pass for GlobalISel generic memory operations.
StringMapEntry< MCSymbolTableValue > MCSymbolTableEntry
MCContext stores MCSymbolTableValue in a string map (see MCSymbol::operator new).