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.