Author: Giorgis Georgakoudis Date: 2021-05-04T11:56:31-07:00 New Revision: 313ee609e16b93a7d81cd595f8cffdb408390495
URL: https://github.com/llvm/llvm-project/commit/313ee609e16b93a7d81cd595f8cffdb408390495 DIFF: https://github.com/llvm/llvm-project/commit/313ee609e16b93a7d81cd595f8cffdb408390495.diff LOG: [OpenMP] Fix non-determinism in clang task codegen (lastprivates) Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D101800 Added: Modified: clang/lib/CodeGen/CGStmtOpenMP.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGStmtOpenMP.cpp b/clang/lib/CodeGen/CGStmtOpenMP.cpp index e7ddc0aa4c8d..1f714b01b3f1 100644 --- a/clang/lib/CodeGen/CGStmtOpenMP.cpp +++ b/clang/lib/CodeGen/CGStmtOpenMP.cpp @@ -4293,7 +4293,7 @@ void CodeGenFunction::EmitOMPTaskBasedDirective( } } // Get list of lastprivate variables (for taskloops). - llvm::DenseMap<const VarDecl *, const DeclRefExpr *> LastprivateDstsOrigs; + llvm::MapVector<const VarDecl *, const DeclRefExpr *> LastprivateDstsOrigs; for (const auto *C : S.getClausesOfKind<OMPLastprivateClause>()) { auto IRef = C->varlist_begin(); auto ID = C->destination_exprs().begin(); @@ -4304,8 +4304,8 @@ void CodeGenFunction::EmitOMPTaskBasedDirective( Data.LastprivateCopies.push_back(IInit); } LastprivateDstsOrigs.insert( - {cast<VarDecl>(cast<DeclRefExpr>(*ID)->getDecl()), - cast<DeclRefExpr>(*IRef)}); + std::make_pair(cast<VarDecl>(cast<DeclRefExpr>(*ID)->getDecl()), + cast<DeclRefExpr>(*IRef))); ++IRef; ++ID; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits