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).