@@ -4898,6 +4898,9 @@ void CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
48984898 }
48994899}
49004900
4901+ static std::string generateUniqueName(CodeGenModule &CGM,
4902+ llvm::StringRef Prefix, const Expr *Ref);
4903+
49014904void CGOpenMPRuntime::emitPrivateReduction(
49024905 CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
49034906 const Expr *LHSExprs, const Expr *RHSExprs, const Expr *ReductionOps) {
@@ -4929,7 +4932,8 @@ void CGOpenMPRuntime::emitPrivateReduction(
49294932 const OMPDeclareReductionDecl *UDR = getReductionInit(ReductionOps);
49304933 std::string ReductionVarNameStr;
49314934 if (const auto *DRE = dyn_cast<DeclRefExpr>(Privates->IgnoreParenCasts()))
4932- ReductionVarNameStr = DRE->getDecl()->getNameAsString();
4935+ ReductionVarNameStr =
4936+ generateUniqueName(CGM, DRE->getDecl()->getNameAsString(), Privates);
49334937 else
49344938 ReductionVarNameStr = "unnamed_priv_var";
49354939
@@ -5460,16 +5464,10 @@ void CGOpenMPRuntime::emitReduction(CodeGenFunction &CGF, SourceLocation Loc,
54605464
54615465 CGF.EmitBranch(DefaultBB);
54625466 CGF.EmitBlock(DefaultBB, /*IsFinished=*/true);
5463- assert(!LHSExprs.empty() && "PrivateVarReduction: LHSExprs is empty");
5464- assert(!Privates.empty() && "PrivateVarReduction: Privates is empty");
5465- assert(!ReductionOps.empty() && "PrivateVarReduction: ReductionOps is empty");
5466- assert(LHSExprs.size() == Privates.size() &&
5467+ assert(OrgLHSExprs.size() == OrgPrivates.size() &&
54675468 "PrivateVarReduction: Privates size mismatch");
5468- assert(LHSExprs .size() == ReductionOps .size() &&
5469+ assert(OrgLHSExprs .size() == OrgReductionOps .size() &&
54695470 "PrivateVarReduction: ReductionOps size mismatch");
5470- assert(LHSExprs.size() == Options.IsPrivateVarReduction.size() &&
5471- "PrivateVarReduction: IsPrivateVarReduction size mismatch");
5472-
54735471 for (unsigned I : llvm::seq<unsigned>(
54745472 std::min(OrgReductionOps.size(), OrgLHSExprs.size()))) {
54755473 if (Options.IsPrivateVarReduction[I])
0 commit comments