Lines Matching refs:S

29 static void BuildParentMap(MapTy& M, Stmt* S,  in BuildParentMap()  argument
31 if (!S) in BuildParentMap()
34 switch (S->getStmtClass()) { in BuildParentMap()
36 PseudoObjectExpr *POE = cast<PseudoObjectExpr>(S); in BuildParentMap()
43 for (Stmt *SubStmt : S->children()) in BuildParentMap()
46 M[POE->getSyntacticForm()] = S; in BuildParentMap()
52 M[*I] = S; in BuildParentMap()
59 BinaryConditionalOperator *BCO = cast<BinaryConditionalOperator>(S); in BuildParentMap()
61 M[BCO->getCommon()] = S; in BuildParentMap()
64 M[BCO->getCond()] = S; in BuildParentMap()
67 M[BCO->getTrueExpr()] = S; in BuildParentMap()
70 M[BCO->getFalseExpr()] = S; in BuildParentMap()
81 OpaqueValueExpr *OVE = cast<OpaqueValueExpr>(S); in BuildParentMap()
83 M[OVE->getSourceExpr()] = S; in BuildParentMap()
89 for (Stmt *SubStmt : S->children()) { in BuildParentMap()
91 M[SubStmt] = S; in BuildParentMap()
95 if (Stmt *SubStmt = cast<CapturedStmt>(S)->getCapturedStmt()) { in BuildParentMap()
96 M[SubStmt] = S; in BuildParentMap()
101 for (Stmt *SubStmt : S->children()) { in BuildParentMap()
103 M[SubStmt] = S; in BuildParentMap()
111 ParentMap::ParentMap(Stmt *S) : Impl(nullptr) { in ParentMap() argument
112 if (S) { in ParentMap()
114 BuildParentMap(*M, S); in ParentMap()
123 void ParentMap::addStmt(Stmt* S) { in addStmt() argument
124 if (S) { in addStmt()
125 BuildParentMap(*(MapTy*) Impl, S); in addStmt()
129 void ParentMap::setParent(const Stmt *S, const Stmt *Parent) { in setParent() argument
130 assert(S); in setParent()
133 M->insert(std::make_pair(const_cast<Stmt *>(S), const_cast<Stmt *>(Parent))); in setParent()
136 Stmt* ParentMap::getParent(Stmt* S) const { in getParent()
138 return M->lookup(S); in getParent()
141 Stmt *ParentMap::getParentIgnoreParens(Stmt *S) const { in getParentIgnoreParens()
143 S = getParent(S); in getParentIgnoreParens()
144 } while (isa_and_nonnull<ParenExpr>(S)); in getParentIgnoreParens()
145 return S; in getParentIgnoreParens()
148 Stmt *ParentMap::getParentIgnoreParenCasts(Stmt *S) const { in getParentIgnoreParenCasts()
150 S = getParent(S); in getParentIgnoreParenCasts()
152 while (S && (isa<ParenExpr>(S) || isa<CastExpr>(S))); in getParentIgnoreParenCasts()
154 return S; in getParentIgnoreParenCasts()
157 Stmt *ParentMap::getParentIgnoreParenImpCasts(Stmt *S) const { in getParentIgnoreParenImpCasts()
159 S = getParent(S); in getParentIgnoreParenImpCasts()
160 } while (isa_and_nonnull<Expr>(S) && in getParentIgnoreParenImpCasts()
161 cast<Expr>(S)->IgnoreParenImpCasts() != S); in getParentIgnoreParenImpCasts()
163 return S; in getParentIgnoreParenImpCasts()
166 Stmt *ParentMap::getOuterParenParent(Stmt *S) const { in getOuterParenParent()
168 while (isa<ParenExpr>(S)) { in getOuterParenParent()
169 Paren = S; in getOuterParenParent()
170 S = getParent(S); in getOuterParenParent()