@@ -1515,11 +1516,21 @@ void
Parser::ParseOMPDeclareVariantClauses(Parser::DeclGroupPtrTy Ptr,
SmallVector Vars;
IsError = ParseOpenMPVarList(OMPD_declare_variant, OMPC_adjust_args,
Vars, Data);
-if (!IsError)
-
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/134709
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/140532
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/143504
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/141250
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev closed
https://github.com/llvm/llvm-project/pull/141250
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
alexey-bataev wrote:
> AnalyzeLoopSequence
Could you point, where this is located?
https://github.com/llvm/llvm-project/pull/140532
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1352,7 +1352,12 @@ static StringRef
getIdentStringFromSourceLocation(CodeGenFunction &CGF,
llvm::raw_svector_ostream OS(Buffer);
// Build debug location
PresumedLoc PLoc = CGF.getContext().getSourceManager().getPresumedLoc(Loc);
- OS << ";" << PLoc.getFilename() <<
@@ -3947,7 +3947,7 @@ static void emitScanBasedDirective(
CGF.CGM.getOpenMPRuntime().emitReduction(
CGF, S.getEndLoc(), Privates, LHSs, RHSs, ReductionOps,
{/*WithNowait=*/true, /*SimpleReduction=*/true,
- /*IsPrivateVarReduction*/{}, OMPD_un
https://github.com/alexey-bataev edited
https://github.com/llvm/llvm-project/pull/134709
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
LG with nits
https://github.com/llvm/llvm-project/pull/134709
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -5753,7 +5753,7 @@ void CodeGenFunction::EmitOMPScanDirective(const
OMPScanDirective &S) {
CGM.getOpenMPRuntime().emitReduction(
*this, ParentDir.getEndLoc(), Privates, LHSs, RHSs, ReductionOps,
{/*WithNowait=*/true, /*SimpleReduction=*/true,
-
alexey-bataev wrote:
> > What I see in the source code that it is used as a boolean flag. Can we
> > transform it to bool? There is no need to keep it integer
>
> Please could you cite the exact line? I'm not sure if you are refering to the
> logic inside checkTransformableLoopNest or not.
I
alexey-bataev wrote:
What I see in the source code that it is used as a boolean flag. Can we
transform it to bool? There is no need to keep it integer
https://github.com/llvm/llvm-project/pull/140532
___
cfe-commits mailing list
cfe-commits@lists.llvm
@@ -3943,7 +3946,8 @@ static void emitScanBasedDirective(
PrivScope.Privatize();
CGF.CGM.getOpenMPRuntime().emitReduction(
CGF, S.getEndLoc(), Privates, LHSs, RHSs, ReductionOps,
- {/*WithNowait=*/true, /*SimpleReduction=*/true, OMPD_unknown});
+
alexey-bataev wrote:
> @alexey-bataev After conducting an examination of the directive handling
> logic, I can confidently state that the number of generated loops
> (`NumGeneratedLoops`) does not affect the semantic checks for the majority of
> transformations. This is because values are usua
@@ -5748,7 +5752,8 @@ void CodeGenFunction::EmitOMPScanDirective(const
OMPScanDirective &S) {
}
CGM.getOpenMPRuntime().emitReduction(
*this, ParentDir.getEndLoc(), Privates, LHSs, RHSs, ReductionOps,
- {/*WithNowait=*/true, /*SimpleReduction=*/tr
alexey-bataev wrote:
It would be good to try to find the cases that may reveal this issues before
committing the patch
https://github.com/llvm/llvm-project/pull/140532
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-
@@ -4898,6 +4898,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
alexey-bataev wrote:
Are there any tests that might be affected by this change?
https://github.com/llvm/llvm-project/pull/140532
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -11516,6 +11516,21 @@ def note_omp_implicit_dsa : Note<
"implicitly determined as %0">;
def err_omp_loop_var_dsa : Error<
"loop iteration variable in the associated loop of 'omp %1' directive may
not be %0, predetermined as %2">;
+def warn_omp_different_loop_ind_var_typ
@@ -11516,6 +11516,21 @@ def note_omp_implicit_dsa : Note<
"implicitly determined as %0">;
def err_omp_loop_var_dsa : Error<
"loop iteration variable in the associated loop of 'omp %1' directive may
not be %0, predetermined as %2">;
+def warn_omp_different_loop_ind_var_typ
alexey-bataev wrote:
Do we need the number of generated loops at all? Is it used anywhere? Maybe it
worth it to remove it?
https://github.com/llvm/llvm-project/pull/140532
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/
@@ -5748,7 +5754,7 @@ void CodeGenFunction::EmitOMPScanDirective(const
OMPScanDirective &S) {
}
CGM.getOpenMPRuntime().emitReduction(
*this, ParentDir.getEndLoc(), Privates, LHSs, RHSs, ReductionOps,
- {/*WithNowait=*/true, /*SimpleReduction=*/tr
@@ -1481,6 +1482,8 @@ void CodeGenFunction::EmitOMPReductionClauseFinal(
Privates.append(C->privates().begin(), C->privates().end());
LHSExprs.append(C->lhs_exprs().begin(), C->lhs_exprs().end());
RHSExprs.append(C->rhs_exprs().begin(), C->rhs_exprs().end());
+I
@@ -3943,7 +3948,8 @@ static void emitScanBasedDirective(
PrivScope.Privatize();
CGF.CGM.getOpenMPRuntime().emitReduction(
CGF, S.getEndLoc(), Privates, LHSs, RHSs, ReductionOps,
- {/*WithNowait=*/true, /*SimpleReduction=*/true, OMPD_unknown});
+
@@ -5200,6 +5428,26 @@ void CGOpenMPRuntime::emitReduction(CodeGenFunction
&CGF, SourceLocation Loc,
CGF.EmitBranch(DefaultBB);
CGF.EmitBlock(DefaultBB, /*IsFinished=*/true);
+ if (Options.IsPrivateVarReduction) {
+if (LHSExprs.empty() || Privates.empty() || Reductio
@@ -5200,6 +5460,18 @@ void CGOpenMPRuntime::emitReduction(CodeGenFunction
&CGF, SourceLocation Loc,
CGF.EmitBranch(DefaultBB);
CGF.EmitBlock(DefaultBB, /*IsFinished=*/true);
+ if (Options.IsPrivateVarReduction) {
+if (LHSExprs.empty() || Privates.empty() || Reductio
@@ -4898,6 +4898,274 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,273 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,274 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,274 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,274 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -14924,8 +14924,25 @@ StmtResult
SemaOpenMP::ActOnOpenMPUnrollDirective(ArrayRef Clauses,
SourceLocation FactorLoc;
if (Expr *FactorVal = PartialClause->getFactor();
FactorVal && !FactorVal->containsErrors()) {
+if (!VerifyPositiveIntegerConstantInClause(Facto
https://github.com/alexey-bataev edited
https://github.com/llvm/llvm-project/pull/139986
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
LG with a nit
https://github.com/llvm/llvm-project/pull/139986
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -937,15 +937,7 @@ OpenMP Support
- Added support 'no_openmp_constructs' assumption clause.
- Added support for 'self_maps' in map and requirement clause.
- Added support for 'omp stripe' directive.
-- Fixed a crashing bug with ``omp unroll partial`` if the argument to
- ``p
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139901
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139793
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -4898,6 +4898,266 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/138592
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139577
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -4898,6 +4898,266 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,266 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,266 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -4898,6 +4898,266 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
@@ -5200,6 +5460,18 @@ void CGOpenMPRuntime::emitReduction(CodeGenFunction
&CGF, SourceLocation Loc,
CGF.EmitBranch(DefaultBB);
CGF.EmitBlock(DefaultBB, /*IsFinished=*/true);
+ if (Options.IsPrivateVarReduction) {
+if (LHSExprs.empty() || Privates.empty() || Reductio
@@ -4898,6 +4898,266 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139344
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139313
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -14145,6 +14152,46 @@ StmtResult
SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(
getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
}
+// Overloaded base case function
alexey-bataev wrote:
```suggestion
/// Overloaded
@@ -14145,6 +14152,46 @@ StmtResult
SemaOpenMP::ActOnOpenMPTargetTeamsDistributeSimdDirective(
getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
}
+// Overloaded base case function
+template static bool tryHandleAs(T *t, F &&) {
+ return false;
+
@@ -962,6 +962,9 @@ class OMPLoopTransformationDirective : public
OMPLoopBasedDirective {
/// Number of loops generated by this loop transformation.
unsigned NumGeneratedLoops = 0;
+ /// Number of top level canonical loop nests generated by this loop
+ /// transformatio
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139313
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -5790,7 +5805,11 @@ class OMPReverseDirective final : public
OMPLoopTransformationDirective {
explicit OMPReverseDirective(SourceLocation StartLoc, SourceLocation EndLoc)
: OMPLoopTransformationDirective(OMPReverseDirectiveClass,
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -962,6 +962,9 @@ class OMPLoopTransformationDirective : public
OMPLoopBasedDirective {
/// Number of loops generated by this loop transformation.
unsigned NumGeneratedLoops = 0;
+ /// Number of top level canonical loop nests generated by this loop
+ /// transformatio
@@ -1480,6 +1493,108 @@ class SemaOpenMP : public SemaBase {
SmallVectorImpl &LoopHelpers,
Stmt *&Body, SmallVectorImpl> &OriginalInits);
+ /// @brief Categories of loops encountered during semantic OpenMP loop
+ /// analysis
+ ///
+ /// This enumeration identi
@@ -0,0 +1,186 @@
+// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -std=c++20 -fopenmp
-fopenmp-version=60 -fsyntax-only -Wuninitialized -verify %s
+
+void func() {
+
+// expected-error@+2 {{statement after '#pragma omp fuse' must be a loop
sequence containing canonical loops
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -15451,6 +15819,500 @@ StmtResult
SemaOpenMP::ActOnOpenMPInterchangeDirective(
buildPreInits(Context, PreInits));
}
+StmtResult SemaOpenMP::ActOnOpenMPFuseDirective(ArrayRef Clauses,
+
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -5378,6 +5379,10 @@ class CodeGenFunction : public CodeGenTypeCache {
/// Set the address of a local variable.
void setAddrOfLocalVar(const VarDecl *VD, Address Addr) {
+if (LocalDeclMap.count(VD)) {
+ llvm::errs() << "Warning: VarDecl already exists in map: ";
@@ -14175,27 +14222,350 @@ bool SemaOpenMP::checkTransformableLoopNest(
return false;
},
[&OriginalInits](OMPLoopBasedDirective *Transform) {
-Stmt *DependentPreInits;
-if (auto *Dir = dyn_cast(Transform))
- DependentPreInits = Dir->
@@ -1151,6 +1151,106 @@ class OMPFullClause final : public
OMPNoChildClause {
static OMPFullClause *CreateEmpty(const ASTContext &C);
};
+/// This class represents the 'looprange' clause in the
+/// '#pragma omp fuse' directive
+///
+/// \code {c}
+/// #pragma omp fuse loop
@@ -11516,6 +11516,21 @@ def note_omp_implicit_dsa : Note<
"implicitly determined as %0">;
def err_omp_loop_var_dsa : Error<
"loop iteration variable in the associated loop of 'omp %1' directive may
not be %0, predetermined as %2">;
+def warn_omp_different_loop_ind_var_typ
@@ -5790,7 +5805,11 @@ class OMPReverseDirective final : public
OMPLoopTransformationDirective {
explicit OMPReverseDirective(SourceLocation StartLoc, SourceLocation EndLoc)
: OMPLoopTransformationDirective(OMPReverseDirectiveClass,
@@ -530,6 +530,12 @@ OpenMP Support
- Added support 'no_openmp_constructs' assumption clause.
- Added support for 'self_maps' in map and requirement clause.
- Added support for 'omp stripe' directive.
+- Fixed a crashing bug with ``omp unroll partial`` if the argument to
+ ``p
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139287
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139277
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -0,0 +1,93 @@
+//RUN: %libomp-cxx-compile -fopenmp-version=60 && %libomp-run
+#include
+#include
+#include "omp_testsuite.h"
+
+#define N 10
+class Sum {
+ int val;
+
+public:
+ Sum(int v = 0) : val(v) {}
+ Sum operator+(const Sum &rhs) const { return Sum(val + rhs.val);
@@ -0,0 +1,93 @@
+//RUN: %libomp-cxx-compile -fopenmp-version=60 && %libomp-run
+#include
+#include
+#include "omp_testsuite.h"
+
+#define N 10
+class Sum {
+ int val;
+
+public:
+ Sum(int v = 0) : val(v) {}
+ Sum operator+(const Sum &rhs) const { return Sum(val + rhs.val);
@@ -0,0 +1,93 @@
+//RUN: %libomp-cxx-compile -fopenmp-version=60 && %libomp-run
+#include
+#include
+#include "omp_testsuite.h"
+
+#define N 10
+class Sum {
+ int val;
+
+public:
+ Sum(int v = 0) : val(v) {}
+ Sum operator+(const Sum &rhs) const { return Sum(val + rhs.val);
alexey-bataev wrote:
Can you add a few runtime tests, some with UDR with classes, several reduction
items with the different types, to check that functional part works correctly?
You can add it to the libomp right in this patch. Just want to be sure we do
not miss anything here
https://github
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/139118
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -4899,6 +4899,237 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, const Expr *Privates,
+const Expr *LHSExprs, const Expr *RHSExprs, const Expr
alexey-bataev wrote:
Could you expected codegen description in the patch description?
https://github.com/llvm/llvm-project/pull/134709
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -4899,6 +4899,234 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
+CodeGenFunction &CGF, SourceLocation Loc, ArrayRef Privates,
+ArrayRef LHSExprs, ArrayRef RHSExprs,
+ArrayRef Reduct
@@ -3691,6 +3691,7 @@ CGOpenMPRuntime::emitTaskInit(CodeGenFunction &CGF,
SourceLocation Loc,
DestructorsFlag = 0x8,
PriorityFlag = 0x20,
DetachableFlag = 0x40,
+PoolFlag = 0x80,
alexey-bataev wrote:
The runtime change is better to implement i
@@ -4529,6 +4529,191 @@ void CodeGenFunction::EmitOMPMasterDirective(const
OMPMasterDirective &S) {
emitMaster(*this, S);
}
+static Expr *replaceWithNewTraitsOrDirectCall(CapturedDecl *CDecl,
+ Expr *NewExpr) {
+ Expr *CurrentCa
@@ -4529,6 +4529,191 @@ void CodeGenFunction::EmitOMPMasterDirective(const
OMPMasterDirective &S) {
emitMaster(*this, S);
}
+static Expr *replaceWithNewTraitsOrDirectCall(CapturedDecl *CDecl,
+ Expr *NewExpr) {
+ Expr *CurrentCa
https://github.com/alexey-bataev commented:
Need to update OpenMPSupport.rst and release notes
https://github.com/llvm/llvm-project/pull/134709
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-
@@ -4899,6 +4899,238 @@ void
CGOpenMPRuntime::emitSingleReductionCombiner(CodeGenFunction &CGF,
}
}
+void CGOpenMPRuntime::emitPrivateReduction(
alexey-bataev wrote:
1. Add the comments, describing the logic of the function.
2. How does it differ from the
https://github.com/alexey-bataev edited
https://github.com/llvm/llvm-project/pull/134709
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -101,9 +103,11 @@ T tmain(T argc, T *argv) {
a = 2;
#pragma omp task default(none), private(argc, b) firstprivate(argv) shared(d)
if (argc > 0) final(S::TS > 0) priority(argc) affinity(argc, argv[b:argc],
arr[:], ([argc][sizeof(T)])argv)
foo();
+#ifndef OMP60
-
@@ -101,9 +103,11 @@ T tmain(T argc, T *argv) {
a = 2;
#pragma omp task default(none), private(argc, b) firstprivate(argv) shared(d)
if (argc > 0) final(S::TS > 0) priority(argc) affinity(argc, argv[b:argc],
arr[:], ([argc][sizeof(T)])argv)
foo();
+#ifndef OMP60
-
@@ -3691,6 +3691,7 @@ CGOpenMPRuntime::emitTaskInit(CodeGenFunction &CGF,
SourceLocation Loc,
DestructorsFlag = 0x8,
PriorityFlag = 0x20,
DetachableFlag = 0x40,
+PoolFlag = 0x80,
alexey-bataev wrote:
Still the runtime library should be updated
https://github.com/alexey-bataev commented:
Update OpenMPSupport.rst and release notes documents
https://github.com/llvm/llvm-project/pull/135807
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cf
https://github.com/alexey-bataev approved this pull request.
https://github.com/llvm/llvm-project/pull/138179
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -4529,6 +4529,191 @@ void CodeGenFunction::EmitOMPMasterDirective(const
OMPMasterDirective &S) {
emitMaster(*this, S);
}
+static Expr *replaceWithNewTraitsOrDirectCall(CapturedDecl *CDecl,
+ Expr *NewExpr) {
+ Expr *CurrentCa
@@ -4529,6 +4529,191 @@ void CodeGenFunction::EmitOMPMasterDirective(const
OMPMasterDirective &S) {
emitMaster(*this, S);
}
+static Expr *replaceWithNewTraitsOrDirectCall(CapturedDecl *CDecl,
+ Expr *NewExpr) {
+ Expr *CurrentCa
1 - 100 of 1600 matches
Mail list logo