================ @@ -9193,6 +9207,63 @@ StmtResult TreeTransform<Derived>::TransformOMPExecutableDirective( AssociatedStmt.get(), D->getBeginLoc(), D->getEndLoc()); } +/// This is mostly the same as above, but allows 'informational' class +/// directives when rebuilding the stmt. It still takes an +/// OMPExecutableDirective-type argument because we're reusing that as the +/// superclass for the 'assume' directive at present, instead of defining a +/// mostly-identical OMPInformationalDirective parent class. +template <typename Derived> +StmtResult TreeTransform<Derived>::TransformOMPInformationalDirective( + OMPExecutableDirective *D) { + + // Transform the clauses + llvm::SmallVector<OMPClause *, 16> TClauses; + ArrayRef<OMPClause *> Clauses = D->clauses(); + TClauses.reserve(Clauses.size()); + for (ArrayRef<OMPClause *>::iterator I = Clauses.begin(), E = Clauses.end(); + I != E; ++I) { + if (*I) { + getDerived().getSema().OpenMP().StartOpenMPClause((*I)->getClauseKind()); + OMPClause *Clause = getDerived().TransformOMPClause(*I); + getDerived().getSema().OpenMP().EndOpenMPClause(); + if (Clause) + TClauses.push_back(Clause); + } else { + TClauses.push_back(nullptr); + } + } + StmtResult AssociatedStmt; + if (D->hasAssociatedStmt() && D->getAssociatedStmt()) { + getDerived().getSema().OpenMP().ActOnOpenMPRegionStart( + D->getDirectiveKind(), + /*CurScope=*/nullptr); + StmtResult Body; + { + Sema::CompoundScopeRAII CompoundScope(getSema()); + Stmt *CS = nullptr; + if (D->getDirectiveKind() == OMPD_assume) + CS = D->getAssociatedStmt(); + else + llvm_unreachable("Unexpected informational directive"); + Body = getDerived().TransformStmt(CS); + } + AssociatedStmt = + getDerived().getSema().OpenMP().ActOnOpenMPRegionEnd(Body, TClauses); + if (AssociatedStmt.isInvalid()) { + return StmtError(); + } ---------------- alexey-bataev wrote:
Drop extra braces https://github.com/llvm/llvm-project/pull/92731 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits