clang::StmtResult InsiemeSema::ActOnIfStmt(clang::SourceLocation IfLoc, clang::Sema::FullExprArg CondVal, clang::Decl* CondVar, clang::Stmt* ThenVal, clang::SourceLocation ElseLoc, clang::Stmt* ElseVal) { VLOG(2) << "{InsiemeSema}: ActOnIfStmt()"; clang::StmtResult ret = Sema::ActOnIfStmt(IfLoc, CondVal, CondVar, std::move(ThenVal), ElseLoc, std::move(ElseVal)); clang::IfStmt* ifStmt = static_cast<clang::IfStmt*>(ret.get()); PragmaList matched; matchStmt(ifStmt->getThen(), SourceRange(IfLoc, IfLoc), SourceMgr, matched); // is there any pragmas to be associated with the 'then' statement of this if? if(!isa<clang::CompoundStmt>(ifStmt->getThen())) { // if there is no compound stmt, check the then part matchStmt(ifStmt->getThen(), SourceRange(IfLoc, ThenVal->getLocEnd()), SourceMgr, matched); } EraseMatchedPragmas(pimpl->pending_pragma, matched); matched.clear(); // is there any pragmas to be associated with the 'else' statement of this if? if(ifStmt->getElse() && !isa<clang::CompoundStmt>(ifStmt->getElse())) { matchStmt(ifStmt->getElse(), SourceRange(ElseLoc, ifStmt->getSourceRange().getEnd()), SourceMgr, matched); } EraseMatchedPragmas(pimpl->pending_pragma, matched); return std::move(ret); }
clang::StmtResult InsiemeSema::ActOnForStmt(clang::SourceLocation ForLoc, clang::SourceLocation LParenLoc, clang::Stmt* First, clang::Sema::FullExprArg Second, clang::Decl* SecondVar, clang::Sema::FullExprArg Third, clang::SourceLocation RParenLoc, clang::Stmt* Body) { VLOG(2) << "{InsiemeSema}: ActOnForStmt()" << std::endl; clang::StmtResult ret = Sema::ActOnForStmt(ForLoc, LParenLoc, std::move(First), Second, SecondVar, Third, RParenLoc, std::move(Body)); clang::ForStmt* forStmt = (clang::ForStmt*)ret.get(); PragmaList matched; if(!isa<clang::CompoundStmt>(forStmt->getBody())) { matchStmt(forStmt->getBody(), forStmt->getSourceRange(), SourceMgr, matched); } EraseMatchedPragmas(pimpl->pending_pragma, matched); matched.clear(); return std::move(ret); }