Lines Matching defs:LexicalScope

43 /// LexicalScope - This class is used to track scope information.
45 class LexicalScope {
48 LexicalScope(LexicalScope *P, const MDNode *D, const MDNode *I, bool A)
56 LexicalScope *getParent() const { return Parent; }
61 SmallVectorImpl<LexicalScope *> &getChildren() { return Children; }
65 void addChild(LexicalScope *S) { Children.push_back(S); }
88 void closeInsnRange(LexicalScope *NewScope = nullptr) {
100 bool dominates(const LexicalScope *S) const {
108 // Depth First Search support to walk and manipulate LexicalScope hierarchy.
118 LexicalScope *Parent; // Parent to this scope.
123 SmallVector<LexicalScope *, 4> Children; // Scopes defined in scope.
153 bool isCurrentFunctionScope(const LexicalScope *LS) {
158 LexicalScope *getCurrentFunctionScope() const {
174 LexicalScope *findLexicalScope(DebugLoc DL);
177 ArrayRef<LexicalScope *> getAbstractScopesList() const {
182 LexicalScope *findAbstractScope(const MDNode *N) {
189 LexicalScope *findInlinedScope(DebugLoc DL);
192 LexicalScope *findLexicalScope(const MDNode *N) {
201 LexicalScope *getOrCreateAbstractScope(const MDNode *N);
206 LexicalScope *getOrCreateLexicalScope(DebugLoc DL);
209 LexicalScope *getOrCreateRegularScope(MDNode *Scope);
212 LexicalScope *getOrCreateInlinedScope(MDNode *Scope, MDNode *InlinedAt);
217 DenseMap<const MachineInstr *, LexicalScope *> &M);
218 void constructScopeNest(LexicalScope *Scope);
221 DenseMap<const MachineInstr *, LexicalScope *> &M);
228 std::unordered_map<const MDNode *, LexicalScope> LexicalScopeMap;
232 std::unordered_map<std::pair<const MDNode *, const MDNode *>, LexicalScope,
238 std::unordered_map<const MDNode *, LexicalScope> AbstractScopeMap;
242 SmallVector<LexicalScope *, 4> AbstractScopesList;
246 LexicalScope *CurrentFnLexicalScope;