================
@@ -2733,14 +2786,33 @@ SemaOpenACC::CreateInitRecipe(OpenACCClauseKind CK,
// are used for code generation, we can just ignore/not bother doing
any
// initialization here.
break;
- case OpenACCReductionOperator::Multiplication:
case OpenACCReductionOperator::Max:
case OpenACCReductionOperator::Min:
case OpenACCReductionOperator::BitwiseAnd:
- case OpenACCReductionOperator::And:
// TODO: OpenACC: figure out init for these.
break;
+ case OpenACCReductionOperator::Multiplication:
+ case OpenACCReductionOperator::And: {
+ // '&&' initializes every field to 1. However, we need to loop through
+ // every field/element and generate an initializer for each of the
+ // elements.
+
+ Expr *InitExpr = GenerateReductionInitRecipeExpr(
+ getASTContext(), VarExpr->getSourceRange(), VarTy);
+
+ if (InitExpr) {
----------------
andykaylor wrote:
These lines seem to be shared with the zero initializer case, and will probably
match the other kinds too. Maybe make it a lambda?
https://github.com/llvm/llvm-project/pull/156122
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits