• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/clang/lib/Analysis/

Lines Matching refs:Stmt

25 #include "clang/AST/Stmt.h"
191 const Stmt *stmt) const;
412 llvm::SmallVector<Stmt *, 12> childrenBuf;
413 ArrayRef<Stmt *> children;
416 reverse_children(Stmt *S);
418 using iterator = ArrayRef<Stmt *>::reverse_iterator;
426 reverse_children::reverse_children(Stmt *S) {
433 case Stmt::InitListExprClass: {
435 children = llvm::makeArrayRef(reinterpret_cast<Stmt**>(IE->getInits()),
444 for (Stmt *SubStmt : S->children())
522 const Stmt *lastLookup = nullptr;
537 std::unique_ptr<CFG> buildCFG(const Decl *D, Stmt *Statement);
539 bool alwaysAdd(const Stmt *stmt);
585 Stmt *Term,
599 CFGBlock *VisitReturnStmt(Stmt *S);
611 CFGBlock *Visit(Stmt *S, AddStmtChoice asc = AddStmtChoice::NotAlwaysAdd,
613 CFGBlock *VisitStmt(Stmt *S, AddStmtChoice asc);
614 CFGBlock *VisitChildren(Stmt *S);
620 const Stmt *S) {
683 CFGBlock *VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
685 CFGBlock *VisitChildrenForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
715 Stmt *Child);
745 CFGBlock *addStmt(Stmt *S) {
750 void addLoopExit(const Stmt *LoopStmt);
752 LocalScope::const_iterator E, Stmt *S);
754 LocalScope::const_iterator E, Stmt *S);
756 LocalScope::const_iterator E, Stmt *S);
759 Stmt *S);
762 LocalScope::const_iterator E, Stmt *S);
767 void addLocalScopeForStmt(Stmt *S);
772 void addLocalScopeAndDtors(Stmt *S);
789 void appendStmt(CFGBlock *B, const Stmt *S) {
795 B->appendStmt(const_cast<Stmt*>(S), cfg->getBumpVectorContext());
857 void appendAutomaticObjDtor(CFGBlock *B, VarDecl *VD, Stmt *S) {
861 void appendLifetimeEnds(CFGBlock *B, VarDecl *VD, Stmt *S) {
865 void appendLoopExit(CFGBlock *B, const Stmt *LoopStmt) {
897 void appendScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) {
902 void prependScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) {
907 void appendScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) {
912 void prependScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) {
1175 /// tryEvaluateBool - Try and evaluate the Stmt and return 0 or 1
1287 const Stmt *stmt) const {
1291 bool CFGBuilder::alwaysAdd(const Stmt *stmt) {
1357 const ConstructionContextLayer *Layer, Stmt *Child) {
1370 case Stmt::CXXConstructExprClass:
1371 case Stmt::CXXTemporaryObjectExprClass: {
1384 case Stmt::CallExprClass:
1385 case Stmt::CXXMemberCallExprClass:
1386 case Stmt::CXXOperatorCallExprClass:
1387 case Stmt::UserDefinedLiteralClass:
1388 case Stmt::ObjCMessageExprClass: {
1394 case Stmt::ExprWithCleanupsClass: {
1399 case Stmt::CXXFunctionalCastExprClass: {
1404 case Stmt::ImplicitCastExprClass: {
1417 case Stmt::CXXBindTemporaryExprClass: {
1422 case Stmt::MaterializeTemporaryExprClass: {
1434 case Stmt::ConditionalOperatorClass: {
1450 case Stmt::InitListExprClass: {
1473 /// BuildCFG - Constructs a CFG from an AST (a Stmt*). The AST can represent an
1478 std::unique_ptr<CFG> CFGBuilder::buildCFG(const Decl *D, Stmt *Statement) {
1667 if (Stmt *Child = Default->getExpr())
1720 void CFGBuilder::addLoopExit(const Stmt *LoopStmt){
1728 LocalScope::const_iterator E, Stmt *S) {
1751 Stmt *S) {
1763 LocalScope::const_iterator E, Stmt *S) {
1808 LocalScope::const_iterator E, Stmt *S) {
1827 LocalScope::const_iterator E, Stmt *S) {
1936 void CFGBuilder::addLocalScopeForStmt(Stmt *S) {
1946 Stmt *SI = BI->stripLabelLikeStatements();
2053 void CFGBuilder::addLocalScopeAndDtors(Stmt *S) {
2119 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc,
2137 case Stmt::ImplicitValueInitExprClass:
2142 case Stmt::InitListExprClass:
2145 case Stmt::AddrLabelExprClass:
2148 case Stmt::BinaryConditionalOperatorClass:
2151 case Stmt::BinaryOperatorClass:
2154 case Stmt::BlockExprClass:
2157 case Stmt::BreakStmtClass:
2160 case Stmt::CallExprClass:
2161 case Stmt::CXXOperatorCallExprClass:
2162 case Stmt::CXXMemberCallExprClass:
2163 case Stmt::UserDefinedLiteralClass:
2166 case Stmt::CaseStmtClass:
2169 case Stmt::ChooseExprClass:
2172 case Stmt::CompoundStmtClass:
2175 case Stmt::ConditionalOperatorClass:
2178 case Stmt::ContinueStmtClass:
2181 case Stmt::CXXCatchStmtClass:
2184 case Stmt::ExprWithCleanupsClass:
2188 case Stmt::CXXDefaultArgExprClass:
2189 case Stmt::CXXDefaultInitExprClass:
2201 case Stmt::CXXBindTemporaryExprClass:
2204 case Stmt::CXXConstructExprClass:
2207 case Stmt::CXXNewExprClass:
2210 case Stmt::CXXDeleteExprClass:
2213 case Stmt::CXXFunctionalCastExprClass:
2216 case Stmt::CXXTemporaryObjectExprClass:
2219 case Stmt::CXXThrowExprClass:
2222 case Stmt::CXXTryStmtClass:
2225 case Stmt::CXXForRangeStmtClass:
2228 case Stmt::DeclStmtClass:
2231 case Stmt::DefaultStmtClass:
2234 case Stmt::DoStmtClass:
2237 case Stmt::ForStmtClass:
2240 case Stmt::GotoStmtClass:
2243 case Stmt::GCCAsmStmtClass:
2246 case Stmt::IfStmtClass:
2249 case Stmt::ImplicitCastExprClass:
2252 case Stmt::ConstantExprClass:
2255 case Stmt::IndirectGotoStmtClass:
2258 case Stmt::LabelStmtClass:
2261 case Stmt::LambdaExprClass:
2264 case Stmt::MaterializeTemporaryExprClass:
2268 case Stmt::MemberExprClass:
2271 case Stmt::NullStmtClass:
2274 case Stmt::ObjCAtCatchStmtClass:
2277 case Stmt::ObjCAutoreleasePoolStmtClass:
2280 case Stmt::ObjCAtSynchronizedStmtClass:
2283 case Stmt::ObjCAtThrowStmtClass:
2286 case Stmt::ObjCAtTryStmtClass:
2289 case Stmt::ObjCForCollectionStmtClass:
2292 case Stmt::ObjCMessageExprClass:
2295 case Stmt::OpaqueValueExprClass:
2298 case Stmt::PseudoObjectExprClass:
2301 case Stmt::ReturnStmtClass:
2302 case Stmt::CoreturnStmtClass:
2305 case Stmt::SEHExceptStmtClass:
2308 case Stmt::SEHFinallyStmtClass:
2311 case Stmt::SEHLeaveStmtClass:
2314 case Stmt::SEHTryStmtClass:
2317 case Stmt::UnaryExprOrTypeTraitExprClass:
2321 case Stmt::StmtExprClass:
2324 case Stmt::SwitchStmtClass:
2327 case Stmt::UnaryOperatorClass:
2330 case Stmt::WhileStmtClass:
2335 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) {
2344 /// VisitChildren - Visit the children of a Stmt.
2345 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) {
2351 for (Stmt *Child : RChildren) {
2367 for (Stmt *Child : RChildren) {
2374 if (Stmt *Child = DIE->getExpr())
2420 Stmt *Term,
2965 if (Stmt *Init = I->getInit())
2986 if (Stmt *Else = I->getElse()) {
3011 Stmt *Then = I->getThen();
3078 if (Stmt *Init = I->getInit()) {
3086 CFGBlock *CFGBuilder::VisitReturnStmt(Stmt *S) {
3342 if (Stmt *Init = F->getInit())
3384 if (Stmt *I = F->getInc()) {
3496 if (Stmt *I = F->getInit()) {
3911 if (Stmt *C = D->getCond()) {
4054 if (Stmt *Init = Terminator->getInit())
4147 if (Stmt *Init = Terminator->getInit()) {
4196 if (Stmt *Sub = CS->getSubStmt()) {
4399 if (Stmt *Range = S->getRangeStmt())
4401 if (Stmt *Begin = S->getBeginStmt())
4403 if (Stmt *End = S->getEndStmt())
4651 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
4664 case Stmt::InitListExprClass:
4667 case Stmt::BinaryOperatorClass:
4672 case Stmt::CXXBindTemporaryExprClass:
4676 case Stmt::BinaryConditionalOperatorClass:
4677 case Stmt::ConditionalOperatorClass:
4681 case Stmt::ImplicitCastExprClass:
4686 case Stmt::CXXFunctionalCastExprClass:
4691 case Stmt::ConstantExprClass:
4695 case Stmt::ParenExprClass:
4699 case Stmt::MaterializeTemporaryExprClass: {
4717 case Stmt::BlockExprClass:
4722 case Stmt::LambdaExprClass: {
4737 case Stmt::StmtExprClass:
4742 case Stmt::CXXDefaultArgExprClass:
4746 case Stmt::CXXDefaultInitExprClass:
4752 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E,
4765 for (Stmt *Child : E->children())
4912 SmallVector<Stmt *, 8> Used(
4914 for (Stmt *S : llvm::reverse(Used)) {
4922 Stmt *S = CS->getCapturedStmt();
4952 std::unique_ptr<CFG> CFG::buildCFG(const Decl *D, Stmt *Statement,
5101 const Stmt *L = To->getLabel();
5118 using StmtMapTy = llvm::DenseMap<const Stmt *, std::pair<unsigned, unsigned>>;
5137 const Stmt *stmt= SE->getStmt();
5142 case Stmt::DeclStmtClass:
5145 case Stmt::IfStmtClass: {
5151 case Stmt::ForStmtClass: {
5157 case Stmt::WhileStmtClass: {
5164 case Stmt::SwitchStmtClass: {
5171 case Stmt::CXXCatchStmtClass: {
5192 bool handledStmt(Stmt *S, raw_ostream &OS) override {
5238 if (Stmt *C = I->getCond())
5243 void VisitStmt(Stmt *Terminator) {
5257 if (Stmt *C = F->getCond())
5267 if (Stmt *C = W->getCond())
5273 if (Stmt *C = D->getCond())
5291 if (Stmt *Cond = C->getCond())
5298 if (Stmt *Cond = C->getCond())
5305 if (Stmt *T = I->getTarget())
5377 SmallVector<const Stmt *, 3> Stmts;
5436 if (const Stmt *BTE = ACC->getCXXBindTemporaryExpr()) {
5438 Helper.handledStmt(const_cast<Stmt *>(BTE), OS);
5449 Helper.handledStmt(const_cast<Stmt *>(I), OS);
5468 const Stmt *S = CS.getStmt();
5469 assert(S != nullptr && "Expecting non-null Stmt");
5581 Helper.handledStmt(cast<Stmt>(DelExpr->getArgument()), OS);
5640 if (Stmt *Label = const_cast<Stmt*>(B.getLabel())) {
5945 const Stmt *Cond = StmtElem->getStmt();
5954 Stmt *CFGBlock::getTerminatorCondition(bool StripParens) {
5955 Stmt *Terminator = getTerminatorStmt();
5965 case Stmt::CXXForRangeStmtClass:
5969 case Stmt::ForStmtClass:
5973 case Stmt::WhileStmtClass:
5977 case Stmt::DoStmtClass:
5981 case Stmt::IfStmtClass:
5985 case Stmt::ChooseExprClass:
5989 case Stmt::IndirectGotoStmtClass:
5993 case Stmt::SwitchStmtClass:
5997 case Stmt::BinaryConditionalOperatorClass:
6001 case Stmt::ConditionalOperatorClass:
6005 case Stmt::BinaryOperatorClass: // '&&' and '||'
6009 case Stmt::ObjCForCollectionStmtClass: