Home | History | Annotate | Download | only in Analysis

Lines Matching refs:Stmt

63                  const Stmt *stmt) const;
237 llvm::SmallVector<Stmt *, 12> childrenBuf;
238 ArrayRef<Stmt*> children;
240 reverse_children(Stmt *S);
242 typedef ArrayRef<Stmt*>::reverse_iterator iterator;
248 reverse_children::reverse_children(Stmt *S) {
255 case Stmt::InitListExprClass: {
257 children = llvm::makeArrayRef(reinterpret_cast<Stmt**>(IE->getInits()),
266 for (Stmt::child_range I = S->children(); I; ++I) {
327 const Stmt *lastLookup;
345 CFG* buildCFG(const Decl *D, Stmt *Statement);
347 bool alwaysAdd(const Stmt *stmt);
386 Stmt *Term,
405 CFGBlock *Visit(Stmt *S, AddStmtChoice asc = AddStmtChoice::NotAlwaysAdd);
406 CFGBlock *VisitStmt(Stmt *S, AddStmtChoice asc);
407 CFGBlock *VisitChildren(Stmt *S);
412 CFGBlock *VisitForTemporaryDtors(Stmt *E, bool BindToTemporary = false);
413 CFGBlock *VisitChildrenForTemporaryDtors(Stmt *E);
431 CFGBlock *addStmt(Stmt *S) {
436 LocalScope::const_iterator E, Stmt *S);
442 void addLocalScopeForStmt(Stmt *S);
446 void addLocalScopeAndDtors(Stmt *S);
449 void appendStmt(CFGBlock *B, const Stmt *S) {
455 B->appendStmt(const_cast<Stmt*>(S), cfg->getBumpVectorContext());
469 void appendAutomaticObjDtor(CFGBlock *B, VarDecl *VD, Stmt *S) {
489 /// tryEvaluateBool - Try and evaluate the Stmt and return 0 or 1
579 const Stmt *stmt) const {
580 return builder.alwaysAdd(stmt) || kind == AlwaysAdd;
583 bool CFGBuilder::alwaysAdd(const Stmt *stmt) {
584 bool shouldAdd = BuildOpts.alwaysAdd(stmt);
589 if (lastLookup == stmt) {
591 assert(cachedEntry->first == stmt);
597 lastLookup = stmt;
608 CFG::BuildOptions::ForcedBlkExprs::iterator itr = fb->find(stmt);
632 /// BuildCFG - Constructs a CFG from an AST (a Stmt*). The AST can represent an
637 CFG* CFGBuilder::buildCFG(const Decl *D, Stmt *Statement) {
819 LocalScope::const_iterator E, Stmt *S) {
919 void CFGBuilder::addLocalScopeForStmt(Stmt *S) {
929 Stmt *SI = (*BI)->stripLabelLikeStatements();
1003 void CFGBuilder::addLocalScopeAndDtors(Stmt *S) {
1032 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc) {
1045 case Stmt::AddrLabelExprClass:
1048 case Stmt::BinaryConditionalOperatorClass:
1051 case Stmt::BinaryOperatorClass:
1054 case Stmt::BlockExprClass:
1057 case Stmt::BreakStmtClass:
1060 case Stmt::CallExprClass:
1061 case Stmt::CXXOperatorCallExprClass:
1062 case Stmt::CXXMemberCallExprClass:
1063 case Stmt::UserDefinedLiteralClass:
1066 case Stmt::CaseStmtClass:
1069 case Stmt::ChooseExprClass:
1072 case Stmt::CompoundStmtClass:
1075 case Stmt::ConditionalOperatorClass:
1078 case Stmt::ContinueStmtClass:
1081 case Stmt::CXXCatchStmtClass:
1084 case Stmt::ExprWithCleanupsClass:
1087 case Stmt::CXXDefaultArgExprClass:
1095 case Stmt::CXXBindTemporaryExprClass:
1098 case Stmt::CXXConstructExprClass:
1101 case Stmt::CXXFunctionalCastExprClass:
1104 case Stmt::CXXTemporaryObjectExprClass:
1107 case Stmt::CXXThrowExprClass:
1110 case Stmt::CXXTryStmtClass:
1113 case Stmt::CXXForRangeStmtClass:
1116 case Stmt::DeclStmtClass:
1119 case Stmt::DefaultStmtClass:
1122 case Stmt::DoStmtClass:
1125 case Stmt::ForStmtClass:
1128 case Stmt::GotoStmtClass:
1131 case Stmt::IfStmtClass:
1134 case Stmt::ImplicitCastExprClass:
1137 case Stmt::IndirectGotoStmtClass:
1140 case Stmt::LabelStmtClass:
1143 case Stmt::LambdaExprClass:
1146 case Stmt::MemberExprClass:
1149 case Stmt::NullStmtClass:
1152 case Stmt::ObjCAtCatchStmtClass:
1155 case Stmt::ObjCAutoreleasePoolStmtClass:
1158 case Stmt::ObjCAtSynchronizedStmtClass:
1161 case Stmt::ObjCAtThrowStmtClass:
1164 case Stmt::ObjCAtTryStmtClass:
1167 case Stmt::ObjCForCollectionStmtClass:
1170 case Stmt::OpaqueValueExprClass:
1173 case Stmt::PseudoObjectExprClass:
1176 case Stmt::ReturnStmtClass:
1179 case Stmt::UnaryExprOrTypeTraitExprClass:
1183 case Stmt::StmtExprClass:
1186 case Stmt::SwitchStmtClass:
1189 case Stmt::UnaryOperatorClass:
1192 case Stmt::WhileStmtClass:
1197 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) {
1206 /// VisitChildren - Visit the children of a Stmt.
1207 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) {
1215 if (Stmt *Child = *I)
1256 Stmt *Term,
1737 if (Stmt *Else = I->getElse()) {
1762 Stmt *Then = I->getThen();
1925 if (Stmt *Init = F->getInit())
1965 if (Stmt *I = F->getInc()) {
2070 if (Stmt *I = F->getInit()) {
2449 if (Stmt *C = D->getCond()) {
2715 if (Stmt *Sub = CS->getSubStmt()) {
2902 // C++0x for-range statements are specified as [stmt.ranged]:
2919 if (Stmt *Range = S->getRangeStmt())
2921 if (Stmt *BeginEnd = S->getBeginEndStmt())
3098 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool BindToTemporary) {
3110 case Stmt::BinaryOperatorClass:
3113 case Stmt::CXXBindTemporaryExprClass:
3117 case Stmt::BinaryConditionalOperatorClass:
3118 case Stmt::ConditionalOperatorClass:
3122 case Stmt::ImplicitCastExprClass:
3127 case Stmt::ParenExprClass:
3131 case Stmt::MaterializeTemporaryExprClass:
3137 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E) {
3143 for (Stmt::child_range I = E->children(); I; ++I) {
3144 if (Stmt *Child = *I)
3326 CFG* CFG::buildCFG(const Decl *D, Stmt *Statement, ASTContext *C,
3377 typedef llvm::DenseMap<const Stmt*,unsigned> BlkExprMapTy;
3380 static void FindSubExprAssignments(const Stmt *S,
3385 for (Stmt::const_child_range I = S->children(); I; ++I) {
3386 const Stmt *child = *I;
3413 // Iterate over the statements again on identify the Expr* and Stmt* at the
3434 const Stmt *Last = C->body_back();
3449 Stmt *S = (*I)->getTerminatorCondition();
3460 CFG::BlkExprNumTy CFG::getBlkExprNum(const Stmt *S) {
3492 const Stmt *L = To->getLabel();
3517 typedef llvm::DenseMap<const Stmt*,std::pair<unsigned,unsigned> > StmtMapTy;
3534 const Stmt *stmt= SE->getStmt();
3536 StmtMap[stmt] = P;
3538 switch (stmt->getStmtClass()) {
3539 case Stmt::DeclStmtClass:
3540 DeclMap[cast<DeclStmt>(stmt)->getSingleDecl()] = P;
3542 case Stmt::IfStmtClass: {
3543 const VarDecl *var = cast<IfStmt>(stmt)->getConditionVariable();
3548 case Stmt::ForStmtClass: {
3549 const VarDecl *var = cast<ForStmt>(stmt)->getConditionVariable();
3554 case Stmt::WhileStmtClass: {
3556 cast<WhileStmt>(stmt)->getConditionVariable();
3561 case Stmt::SwitchStmtClass: {
3563 cast<SwitchStmt>(stmt)->getConditionVariable();
3568 case Stmt::CXXCatchStmtClass: {
3570 cast<CXXCatchStmt>(stmt)->getExceptionDecl();
3590 virtual bool handledStmt(Stmt *S, raw_ostream &OS) {
3641 void VisitStmt(Stmt *Terminator) {
3650 if (Stmt *C = F->getCond())
3660 if (Stmt *C = W->getCond())
3666 if (Stmt *C = D->getCond())
3724 const Stmt *S = CS->getStmt();
3845 if (Stmt *Label = const_cast<Stmt*>(B.getLabel())) {
3907 TPrinter.Visit(const_cast<Stmt*>(B.getTerminator().getStmt()));
4024 TPrinter.Visit(const_cast<Stmt*>(getTerminator().getStmt()));
4027 Stmt *CFGBlock::getTerminatorCondition() {
4028 Stmt *Terminator = this->Terminator;
4038 case Stmt::ForStmtClass:
4042 case Stmt::WhileStmtClass:
4046 case Stmt::DoStmtClass:
4050 case Stmt::IfStmtClass:
4054 case Stmt::ChooseExprClass:
4058 case Stmt::IndirectGotoStmtClass:
4062 case Stmt::SwitchStmtClass:
4066 case Stmt::BinaryConditionalOperatorClass:
4070 case Stmt::ConditionalOperatorClass:
4074 case Stmt::BinaryOperatorClass: // '&&' and '||'
4078 case Stmt::ObjCForCollectionStmtClass: