Lines Matching defs:LexicalScope
33 class LexicalScope;
61 bool isCurrentFunctionScope(const LexicalScope *LS) {
66 LexicalScope *getCurrentFunctionScope() const { return CurrentFnLexicalScope;}
80 LexicalScope *findLexicalScope(DebugLoc DL);
83 ArrayRef<LexicalScope *> getAbstractScopesList() const {
88 LexicalScope *findAbstractScope(const MDNode *N) {
94 LexicalScope *findInlinedScope(DebugLoc DL) {
99 LexicalScope *findLexicalScope(const MDNode *N) {
110 LexicalScope *getOrCreateLexicalScope(DebugLoc DL);
113 LexicalScope *getOrCreateRegularScope(MDNode *Scope);
116 LexicalScope *getOrCreateInlinedScope(MDNode *Scope, MDNode *InlinedAt);
119 LexicalScope *getOrCreateAbstractScope(const MDNode *N);
124 DenseMap<const MachineInstr *, LexicalScope *> &M);
125 void constructScopeNest(LexicalScope *Scope);
127 DenseMap<const MachineInstr *, LexicalScope *> &M);
133 /// contained LexicalScope*s.
134 DenseMap<const MDNode *, LexicalScope *> LexicalScopeMap;
137 DenseMap<DebugLoc, LexicalScope *> InlinedLexicalScopeMap;
140 /// AbstractScopes owns its LexicalScope*s.
141 DenseMap<const MDNode *, LexicalScope *> AbstractScopeMap;
145 SmallVector<LexicalScope *, 4>AbstractScopesList;
149 LexicalScope *CurrentFnLexicalScope;
153 /// LexicalScope - This class is used to track scope information.
155 class LexicalScope {
159 LexicalScope(LexicalScope *P, const MDNode *D, const MDNode *I, bool A)
166 virtual ~LexicalScope() {}
169 LexicalScope *getParent() const { return Parent; }
174 SmallVector<LexicalScope *, 4> &getChildren() { return Children; }
178 void addChild(LexicalScope *S) { Children.push_back(S); }
201 void closeInsnRange(LexicalScope *NewScope = NULL) {
213 bool dominates(const LexicalScope *S) const {
221 // Depth First Search support to walk and manipulate LexicalScope hierarchy.
231 LexicalScope *Parent; // Parent to this scope.
236 SmallVector<LexicalScope *, 4> Children; // Scopes defined in scope.