LLVM: include/llvm/DebugInfo/LogicalView/Core/LVLocation.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVLOCATION_H

15#define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVLOCATION_H

16

19

20namespace llvm {

22

24

25

27

29

30

31

32

33

34

35

38

39public:

42 : Opcode(Opcode), Operands(Operands) {}

46

50

52

53#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)

55#endif

56};

57

59 enum class Property {

60 IsAddressRange,

61 IsBaseClassOffset,

62 IsBaseClassStep,

63 IsClassOffset,

64 IsFixedAddress,

65 IsLocationSimple,

66 IsGapEntry,

67 IsOperation,

68 IsOperationList,

69 IsRegister,

70 IsStackOffset,

71 IsDiscardedRange,

72 IsInvalidRange,

73 IsInvalidLower,

74 IsInvalidUpper,

75 IsCallSite,

76 LastEntry

77 };

78

80

81

82 bool hasAssociatedRange() const {

83 return !getIsClassOffset() && !getIsDiscardedRange();

84 }

85

86protected:

87

90

91

92

93

96

98

99public:

104

108 PROPERTY_1(Property, IsClassOffset, IsLocationSimple);

109 PROPERTY_1(Property, IsFixedAddress, IsLocationSimple);

115 PROPERTY_1(Property, IsStackOffset, IsLocationSimple);

121

122 const char *kind() const override;

123

125

126

131

132

137

138 std::string getIntervalInfo() const;

139

140 bool validateRanges();

141

142

143

144

145

146

147

149 float &Percentage);

150

154

156 void printInterval(raw_ostream &OS, bool Full = true) const;

159

161 void printExtra(raw_ostream &OS, bool Full = true) const override;

162};

163

165

166 std::unique_ptr Entries;

167

168 void updateKind() override;

169

170public:

175

177 uint64_t LocDescOffset) override;

179

182};

183

184}

185}

186

187#endif

static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

void printExtra(raw_ostream &OS, bool Full=true) const override

LVLocationSymbol()

Definition LVLocation.h:171

~LVLocationSymbol() override=default

LVLocationSymbol(const LVLocationSymbol &)=delete

void printRawExtra(raw_ostream &OS, bool Full=true) const override

LVLocationSymbol & operator=(const LVLocationSymbol &)=delete

void addObject(LVAddress LowPC, LVAddress HighPC, LVUnsigned SectionOffset, uint64_t LocDescOffset) override

PROPERTY(Property, IsDiscardedRange)

const char * kind() const override

PROPERTY(Property, IsBaseClassStep)

LVAddress HighPC

Definition LVLocation.h:95

PROPERTY(Property, IsInvalidLower)

void setUpperAddress(LVAddress Address) override

Definition LVLocation.h:136

LVLocation(const LVLocation &)=delete

LVLocation & operator=(const LVLocation &)=delete

PROPERTY(Property, IsOperationList)

LVLine * UpperLine

Definition LVLocation.h:89

PROPERTY_1(Property, IsFixedAddress, IsLocationSimple)

const LVLine * getLowerLine() const

Definition LVLocation.h:127

void setUpperLine(LVLine *Line)

Definition LVLocation.h:130

PROPERTY(Property, IsInvalidRange)

virtual void updateKind()

Definition LVLocation.h:124

PROPERTY_1(Property, IsStackOffset, IsLocationSimple)

PROPERTY(Property, IsInvalidUpper)

PROPERTY(Property, IsBaseClassOffset)

PROPERTY(Property, IsLocationSimple)

LVLine * LowerLine

Definition LVLocation.h:88

virtual void addObject(LVAddress LowPC, LVAddress HighPC, LVUnsigned SectionOffset, uint64_t LocDescOffset)

Definition LVLocation.h:151

PROPERTY(Property, IsAddressRange)

PROPERTY_1(Property, IsClassOffset, IsLocationSimple)

LVAddress LowPC

Definition LVLocation.h:94

virtual void printRawExtra(raw_ostream &OS, bool Full=true) const

Definition LVLocation.h:158

PROPERTY(Property, IsOperation)

~LVLocation() override=default

LVAddress getLowerAddress() const override

Definition LVLocation.h:133

PROPERTY(Property, IsRegister)

virtual void addObject(LVSmall Opcode, ArrayRef< LVUnsigned > Operands)

Definition LVLocation.h:153

const LVLine * getUpperLine() const

Definition LVLocation.h:129

LVLocation()

Definition LVLocation.h:100

PROPERTY(Property, IsGapEntry)

PROPERTY(Property, IsCallSite)

void setLowerLine(LVLine *Line)

Definition LVLocation.h:128

LVAddress getUpperAddress() const override

Definition LVLocation.h:135

void setLowerAddress(LVAddress Address) override

Definition LVLocation.h:134

LLVM_ABI void print(raw_ostream &OS, bool Full=true) const

LVOperation(const LVOperation &)=delete

LLVM_ABI std::string getOperandsDWARFInfo()

LVOperation & operator=(const LVOperation &)=delete

LVSmall getOpcode() const

Definition LVLocation.h:47

LLVM_ABI std::string getOperandsCodeViewInfo()

LVOperation(LVSmall Opcode, ArrayRef< LVUnsigned > Operands)

Definition LVLocation.h:41

void dump() const

Definition LVLocation.h:54

This class implements an extremely fast bulk output stream that can only output to a stream.

std::pair< LVLine *, LVLine * > LVLineRange

Definition LVLocation.h:23

const LVSmall LVLocationMemberOffset

Definition LVLocation.h:26

SmallVector< LVLocation *, 8 > LVLocations

This is an optimization pass for GlobalISel generic memory operations.

LLVM_ABI raw_ostream & dbgs()

dbgs() - This returns a reference to a raw_ostream for debugging messages.