Lines Matching defs:expr
221 virtual bool VisitCallExpr(clang::CallExpr* expr) {
222 const clang::FunctionDecl* callee = expr->getDirectCallee();
227 virtual bool VisitDeclRefExpr(clang::DeclRefExpr* expr) {
230 if (IsExternalVMState(expr->getDecl())) {
720 ExprEffect VisitExpr(clang::Expr* expr, const Environment& env) {
723 clang::type* concrete_expr = llvm::dyn_cast_or_null<clang::type>(expr); \
792 ExprEffect Visit##type (clang::type* expr, const Environment& env)
795 ExprEffect Visit##type (clang::type* expr, const Environment& env) { \
834 return Use(expr, expr->getType(), THIS, env);
838 Environment after_cond = env.ApplyEffect(VisitExpr(expr->getCond(), env));
839 return ExprEffect::Merge(VisitExpr(expr->getTrueExpr(), after_cond),
840 VisitExpr(expr->getFalseExpr(), after_cond));
844 clang::Expr* exprs[2] = {expr->getBase(), expr->getIdx()};
845 return Parallel(expr, 2, exprs, env);
848 bool IsRawPointerVar(clang::Expr* expr, std::string* var_name) {
849 if (llvm::isa<clang::DeclRefExpr>(expr)) {
851 llvm::cast<clang::DeclRefExpr>(expr)->getDecl()->getNameAsString();
859 clang::Expr* lhs = expr->getLHS();
860 clang::Expr* rhs = expr->getRHS();
863 switch (expr->getOpcode()) {
865 return Sequential(expr, 2, exprs, env);
872 return Parallel(expr, 2, exprs, env);
877 return VisitExpr(expr->getSubExpr(), env);
881 return VisitExpr(expr->GetTemporaryExpr(), env);
885 return VisitArguments<>(expr, env);
889 return VisitExpr(expr->getExpr(), env);
893 return VisitExpr(expr->getArgument(), env);
896 DECL_VISIT_EXPR(CXXNewExpr) { return VisitExpr(expr->getInitializer(), env); }
899 return VisitExpr(expr->getSubExpr(), env);
903 return VisitExpr(expr->getSubExpr(), env);
907 return VisitExpr(expr->getSubExpr(), env);
910 DECL_VISIT_EXPR(ConstantExpr) { return VisitExpr(expr->getSubExpr(), env); }
913 return Sequential(expr, expr->getNumInits(), expr->getInits(), env);
917 return VisitExpr(expr->getBase(), env);
921 return VisitExpr(expr->getSourceExpr(), env);
925 return VisitExpr(expr->getSubExpr(), env);
929 return Parallel(expr, expr->getNumExprs(), expr->getExprs(), env);
939 if (expr->getOpcode() == clang::UO_AddrOf) {
941 if (IsRawPointerVar(expr->getSubExpr(), &var_name)) {
945 return VisitExpr(expr->getSubExpr(), env);
949 if (expr->isArgumentType()) {
953 return VisitExpr(expr->getArgumentExpr(), env);
957 return VisitExpr(expr->getSubExpr(), env);
961 return Use(expr, expr->getDecl(), env);
1125 if (clang::Expr* expr = llvm::dyn_cast_or_null<clang::Expr>(stmt)) {
1126 return env.ApplyEffect(VisitExpr(expr, env));
1470 void ReportUnsafe(const clang::Expr* expr, const std::string& msg) {
1471 d_.Report(clang::FullSourceLoc(expr->getExprLoc(), sm_),