Lines Matching refs:stmt
136 const Stmt *stmt) const;
316 llvm::SmallVector<Stmt *, 12> childrenBuf;
317 ArrayRef<Stmt*> children;
319 reverse_children(Stmt *S);
321 typedef ArrayRef<Stmt*>::reverse_iterator iterator;
327 reverse_children::reverse_children(Stmt *S) {
334 case Stmt::InitListExprClass: {
336 children = llvm::makeArrayRef(reinterpret_cast<Stmt**>(IE->getInits()),
345 for (Stmt *SubStmt : S->children())
405 const Stmt *lastLookup;
423 std::unique_ptr<CFG> buildCFG(const Decl *D, Stmt *Statement);
425 bool alwaysAdd(const Stmt *stmt);
467 Stmt *Term,
486 CFGBlock *Visit(Stmt *S, AddStmtChoice asc = AddStmtChoice::NotAlwaysAdd);
487 CFGBlock *VisitStmt(Stmt *S, AddStmtChoice asc);
488 CFGBlock *VisitChildren(Stmt *S);
553 CFGBlock *VisitForTemporaryDtors(Stmt *E, bool BindToTemporary,
555 CFGBlock *VisitChildrenForTemporaryDtors(Stmt *E, TempDtorContext &Context);
576 CFGBlock *addStmt(Stmt *S) {
581 LocalScope::const_iterator E, Stmt *S);
587 void addLocalScopeForStmt(Stmt *S);
592 void addLocalScopeAndDtors(Stmt *S);
595 void appendStmt(CFGBlock *B, const Stmt *S) {
601 B->appendStmt(const_cast<Stmt*>(S), cfg->getBumpVectorContext());
618 void appendAutomaticObjDtor(CFGBlock *B, VarDecl *VD, Stmt *S) {
862 /// tryEvaluateBool - Try and evaluate the Stmt and return 0 or 1
964 const Stmt *stmt) const {
965 return builder.alwaysAdd(stmt) || kind == AlwaysAdd;
968 bool CFGBuilder::alwaysAdd(const Stmt *stmt) {
969 bool shouldAdd = BuildOpts.alwaysAdd(stmt);
974 if (lastLookup == stmt) {
976 assert(cachedEntry->first == stmt);
982 lastLookup = stmt;
993 CFG::BuildOptions::ForcedBlkExprs::iterator itr = fb->find(stmt);
1017 /// BuildCFG - Constructs a CFG from an AST (a Stmt*). The AST can represent an
1022 std::unique_ptr<CFG> CFGBuilder::buildCFG(const Decl *D, Stmt *Statement) {
1152 if (Stmt *Child = Default->getExpr())
1214 LocalScope::const_iterator E, Stmt *S) {
1308 void CFGBuilder::addLocalScopeForStmt(Stmt *S) {
1317 Stmt *SI = BI->stripLabelLikeStatements();
1402 void CFGBuilder::addLocalScopeAndDtors(Stmt *S) {
1431 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc) {
1444 case Stmt::AddrLabelExprClass:
1447 case Stmt::BinaryConditionalOperatorClass:
1450 case Stmt::BinaryOperatorClass:
1453 case Stmt::BlockExprClass:
1456 case Stmt::BreakStmtClass:
1459 case Stmt::CallExprClass:
1460 case Stmt::CXXOperatorCallExprClass:
1461 case Stmt::CXXMemberCallExprClass:
1462 case Stmt::UserDefinedLiteralClass:
1465 case Stmt::CaseStmtClass:
1468 case Stmt::ChooseExprClass:
1471 case Stmt::CompoundStmtClass:
1474 case Stmt::ConditionalOperatorClass:
1477 case Stmt::ContinueStmtClass:
1480 case Stmt::CXXCatchStmtClass:
1483 case Stmt::ExprWithCleanupsClass:
1486 case Stmt::CXXDefaultArgExprClass:
1487 case Stmt::CXXDefaultInitExprClass:
1499 case Stmt::CXXBindTemporaryExprClass:
1502 case Stmt::CXXConstructExprClass:
1505 case Stmt::CXXNewExprClass:
1508 case Stmt::CXXDeleteExprClass:
1511 case Stmt::CXXFunctionalCastExprClass:
1514 case Stmt::CXXTemporaryObjectExprClass:
1517 case Stmt::CXXThrowExprClass:
1520 case Stmt::CXXTryStmtClass:
1523 case Stmt::CXXForRangeStmtClass:
1526 case Stmt::DeclStmtClass:
1529 case Stmt::DefaultStmtClass:
1532 case Stmt::DoStmtClass:
1535 case Stmt::ForStmtClass:
1538 case Stmt::GotoStmtClass:
1541 case Stmt::IfStmtClass:
1544 case Stmt::ImplicitCastExprClass:
1547 case Stmt::IndirectGotoStmtClass:
1550 case Stmt::LabelStmtClass:
1553 case Stmt::LambdaExprClass:
1556 case Stmt::MemberExprClass:
1559 case Stmt::NullStmtClass:
1562 case Stmt::ObjCAtCatchStmtClass:
1565 case Stmt::ObjCAutoreleasePoolStmtClass:
1568 case Stmt::ObjCAtSynchronizedStmtClass:
1571 case Stmt::ObjCAtThrowStmtClass:
1574 case Stmt::ObjCAtTryStmtClass:
1577 case Stmt::ObjCForCollectionStmtClass:
1580 case Stmt::OpaqueValueExprClass:
1583 case Stmt::PseudoObjectExprClass:
1586 case Stmt::ReturnStmtClass:
1589 case Stmt::UnaryExprOrTypeTraitExprClass:
1593 case Stmt::StmtExprClass:
1596 case Stmt::SwitchStmtClass:
1599 case Stmt::UnaryOperatorClass:
1602 case Stmt::WhileStmtClass:
1607 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) {
1616 /// VisitChildren - Visit the children of a Stmt.
1617 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) {
1625 if (Stmt *Child = *I)
1667 Stmt *Term,
2190 if (Stmt *Else = I->getElse()) {
2215 Stmt *Then = I->getThen();
2391 if (Stmt *Init = F->getInit())
2431 if (Stmt *I = F->getInc()) {
2537 if (Stmt *I = F->getInit()) {
2923 if (Stmt *C = D->getCond()) {
3195 if (Stmt *Sub = CS->getSubStmt()) {
3381 // C++0x for-range statements are specified as [stmt.ranged]:
3398 if (Stmt *Range = S->getRangeStmt())
3400 if (Stmt *BeginEnd = S->getBeginEndStmt())
3611 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool BindToTemporary,
3624 case Stmt::BinaryOperatorClass:
3628 case Stmt::CXXBindTemporaryExprClass:
3632 case Stmt::BinaryConditionalOperatorClass:
3633 case Stmt::ConditionalOperatorClass:
3637 case Stmt::ImplicitCastExprClass:
3642 case Stmt::CXXFunctionalCastExprClass:
3647 case Stmt::ParenExprClass:
3651 case Stmt::MaterializeTemporaryExprClass: {
3669 case Stmt::BlockExprClass:
3674 case Stmt::LambdaExprClass: {
3687 case Stmt::CXXDefaultArgExprClass:
3691 case Stmt::CXXDefaultInitExprClass:
3697 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E,
3709 for (Stmt *Child : E->children())
3856 std::unique_ptr<CFG> CFG::buildCFG(const Decl *D, Stmt *Statement,
3948 const Stmt *L = To->getLabel();
3965 typedef llvm::DenseMap<const Stmt*,std::pair<unsigned,unsigned> > StmtMapTy;
3982 const Stmt *stmt= SE->getStmt();
3984 StmtMap[stmt] = P;
3986 switch (stmt->getStmtClass()) {
3987 case Stmt::DeclStmtClass:
3988 DeclMap[cast<DeclStmt>(stmt)->getSingleDecl()] = P;
3990 case Stmt::IfStmtClass: {
3991 const VarDecl *var = cast<IfStmt>(stmt)->getConditionVariable();
3996 case Stmt::ForStmtClass: {
3997 const VarDecl *var = cast<ForStmt>(stmt)->getConditionVariable();
4002 case Stmt::WhileStmtClass: {
4004 cast<WhileStmt>(stmt)->getConditionVariable();
4009 case Stmt::SwitchStmtClass: {
4011 cast<SwitchStmt>(stmt)->getConditionVariable();
4016 case Stmt::CXXCatchStmtClass: {
4018 cast<CXXCatchStmt>(stmt)->getExceptionDecl();
4037 bool handledStmt(Stmt *S, raw_ostream &OS) override {
4086 if (Stmt *C = I->getCond())
4091 void VisitStmt(Stmt *Terminator) {
4105 if (Stmt *C = F->getCond())
4115 if (Stmt *C = W->getCond())
4121 if (Stmt *C = D->getCond())
4135 if (Stmt *Cond = C->getCond())
4142 if (Stmt *Cond = C->getCond())
4149 if (Stmt *T = I->getTarget())
4190 const Stmt *S = CS->getStmt();
4191 assert(S != nullptr && "Expecting non-null Stmt");
4279 Helper.handledStmt(cast<Stmt>(DelExpr->getArgument()), OS);
4330 if (Stmt *Label = const_cast<Stmt*>(B.getLabel())) {
4537 Stmt *CFGBlock::getTerminatorCondition(bool StripParens) {
4538 Stmt *Terminator = this->Terminator;
4548 case Stmt::CXXForRangeStmtClass:
4552 case Stmt::ForStmtClass:
4556 case Stmt::WhileStmtClass:
4560 case Stmt::DoStmtClass:
4564 case Stmt::IfStmtClass:
4568 case Stmt::ChooseExprClass:
4572 case Stmt::IndirectGotoStmtClass:
4576 case Stmt::SwitchStmtClass:
4580 case Stmt::BinaryConditionalOperatorClass:
4584 case Stmt::ConditionalOperatorClass:
4588 case Stmt::BinaryOperatorClass: // '&&' and '||'
4592 case Stmt::ObjCForCollectionStmtClass: