jyu2 added inline comments.
================ Comment at: clang/lib/CodeGen/CGOpenMPRuntime.cpp:11405-11406 + llvm::OpenMPIRBuilder &OMPBuilder = CGM.getOpenMPRuntime().getOMPBuilder(); + const OMPDependClause *DepC = dyn_cast<OMPDependClause>(C); + const OMPDoacrossClause *DoC = dyn_cast<OMPDoacrossClause>(C); + if ((DoC && DoC->getDependenceType() == OMPC_DOACROSS_source) || ---------------- ABataev wrote: > 1. const auto * > 2. Can you try torework it to make it more C++-ish? Use template deduction to > avoid runtime dyn_casts. > e.g. something like: > ``` > namespace { > template <typename T> > class OMPDoacrossKind { > public: > bool isSink(const T *) {return false;} > } > } > template <> > class OMPDoacrossKInd<OMPDependClause> { > public: > bool isSink(const OMPDependClause* C) {return C->getDependenceType();} > } > ... > ``` > and use `if (OMPDoacrossKInd<T>::isSink(C)) RTLFn = ...` and same for `Source` Good idea!!! Thank you so much. Changed. ================ Comment at: clang/lib/CodeGen/CGStmtOpenMP.cpp:5859-5868 + const auto DOC = dyn_cast<OMPDoacrossClause>(C); + const auto DC = dyn_cast<OMPDependClause>(C); + bool IsDependSource = false; + if ((DC && DC->getDependencyKind() == OMPC_DEPEND_source) || + (DOC && DOC->getDependenceType() == OMPC_DOACROSS_source)) + IsDependSource = true; + CGF.Builder.restoreIP( ---------------- ABataev wrote: > Same, use template-based analysis instead of runtime-based. Thanks. Changed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D154180/new/ https://reviews.llvm.org/D154180 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits